在过去的视频，我们聊
为最大限度地减少对梯度下降
西塔的logistic回归的成本函数J。
在这段视频中 我想
告诉你一些先进
优化算法和一些
先进的优化概念。
使用其中的一些想法，我们将
能够得到logistic回归
多一些比更快地运行
它可能与梯度下降。
而这也将让
该算法具有更好的伸缩性
到非常大的机器学习问题，
例如，如果我们有一个非常大量的功能。
这里有另一种观点
什么梯度下降在做什么。
我们有一些成本函数J，我们希望尽量减少它。
因此，我们需要
就是我们需要写
可以采取代码
作为输入参数theta和
他们可以计算两件事情：百灵
theta和这些局部的
衍生工具的条款，你
知道，J等于0，1
最多N.由于代码
可以做这两件事情，是什么
梯度下降确实是它
反复进行以下更新。
对吗？
所以给出的代码，
我们写来计算这些局部
衍生工具，梯度下降插头
在这里，并使用它来更新我们的参数西塔。
思维那么另一种方式
关于梯度下降是
我们需要提供代码
计算西塔的J和
这些衍生工具，然后
这些得到插入梯度
下坡，然后可尽量减少该函数为我们。
对于梯度下降，我猜
技术上你实际上并不需要的代码
来计算的θ的成本函数J。
你只需要代码来计算微分项。
但如果你认为你的
代码也收敛监测
一些这样的，
我们只是想
自己作为提供代码
同时计算成本
函数和导数项。
因此，曾编写代码
计算这两个东西，一个
算法我们可以使用的是梯度下降。
但梯度下降并不是唯一的算法，我们可以使用。
而且，还有其它的算法，
更先进，更复杂的，
，如果我们只提供
其中一种方法来计算
这两件事情，那么这些
有不同的方法，以优化
成本函数为我们。
因此，共轭梯度的BFGS和
L-BFGS是更多的例子
先进的优化算法，
需要一种方法来计算Ĵ
的θ，和需要一个方法
来计算的衍生物，以及能
然后使用更复杂
比梯度下降策略，以最小的成本函数。
正是细节
这3种算法远远超出本课程的范围。
而事实上，你经常
最终消费，你知道，很多天，
或少数几个星期研究这些算法。
如果你把一个类和推进数值计算。
但让我告诉你关于他们的一些属性。
这3种算法具有许多优点。
之一是，与任何
这个算法你通常做
无需手动选择学习率阿尔法。
这样的一种方式来思考
这些算法是给定的
是计算导数和成本函数的方式。
你可以把这些算法为具有巧妙的相互循环。
而且，事实上，他们有一个聪明的
跨循环称为一个线
搜索算法，自动
尝试了不同的价值观
学习率α和自动
挑选一个好的学习速率α-
所以，它甚至可以接
不同的学习速率为每一个迭代。
所以，你不需要自己选择吧。
这些算法实际上做
不仅仅是更复杂的事情
选择一个良好的学习率，
所以他们往往最终
收敛比梯度下降得更快。
这些算法实际上做更多
不仅仅是复杂的事情
选择一个良好的学习率，
所以他们往往最终汇聚成多
速度比梯度下降，但
的确切详细的讨论
他们所做的是超出了本课程的范围。
其实，我实际使用
已经习惯了这些算法
很长一段时间，如可能超过
十年来，相当频繁，而且
只是，你知道，一个
几年前，我其实
想通了，为自己的细节
什么共轭梯度，BFGS和O-BFGS做。
因此，它实际上是完全有可能的
成功地使用这些算法和
适用于许多不同的学习
实际上不理解的问题
跨环什么的这些算法做。
如果这些算法有一个缺点，
我会说，主
缺点是，它们是
不少比梯度下降更为复杂。
特别是，您也许应该
没有实现这些算法
- 共轭梯度，L-BGFS，BFGS -
你自己，除非你是在数值计算方面的专家。
相反，正如我
不会建议你写
您自己的代码来计算方
的号码，或根
计算矩阵的逆，为
这些算法也就是我
建议你做的是只使用一个软件库。
所以，你知道，拿一个正方形
根我们所有人
做的是使用一些功能
别人有
写入计算平方根我们的数字。
幸运的是，八度和
密切相关的MATLAB语言
- 我们将使用 -
八度有着非常不错的。有一个漂亮的
合理的库实现其中的一些先进的优化算法。
所以，如果你只是用
内置的库，你知道，你会得到不错的成果。
我应该说是有
之间的良好的差别
和这些算法的不良实现。
因此，如果您使用的是
不同的语言为您的机器
学习应用程序，如果你使用
C，C + +，Java和
依此类推，你
可能想尝试一对夫​​妇
不同的库，以确保你找到一个的
好的库，用于实现这些算法。
因为在一个差
一个很好的实现之间的性能
，你知道，轮廓渐变或
长周期光纤光栅与少好
执行轮廓渐变或长周期光纤光栅的。
所以，现在让我们来解释如何
使用这些算法，我将用一个例子做。
比方说，你有一个
问题有两个参数
等于西塔零和theta之一。
让我们说你的成本函数
是西塔的j为西塔
一减5的平方，加上西塔二减5的平方。
所以用这个成本函数。
你知道θ（1）和θ2的值。
如果你希望尽量减少西塔的J亦西塔的功能。
最大限度地减少它的值是
将是θ（1）
等于5时θ2等于等于五。
现在，再次，我知道一些
你知道的比别人更多的积分，
但对衍生品
成本函数J变成是这两个表达式。
我已经做了微积分。
所以，如果你想申请
先进的优化算法之一
为了降低成本函数J
所以，你知道，如果我们
不知道是最低的
5，5，但如果你想有
5最小的成本函数
数字使用类似
梯度下降但最好多
先进的比梯度下降，是什么
你会做的是实现一个八度
功能就像这样，所以我们
实施的成本函数，
成本函数西塔函数那样，
什么这样做是
它返回两个参数，
第一J-缬氨酸，是怎么
我们计算的成本函数
J.所以这说的J-VAL
等于，你知道，西塔
一减5的平方加西塔
二减5的平方。
所以它只是计算这个成本函数在这里。
第二个参数是
这个函数返回的是梯度。
这样的梯度是要
是一个2由一个矢量，
和的两个要素
梯度向量对应
两个偏导数项在这里。
已实施这个成本函数，
你会，你可以再
调用先进的优化
函数调用fminunc
- 它代表的功能
无约束最小化在八度
和你调用这个方法如下。
您可以设置一些选项。
这是一个选项
作为一个数据结构，用于存储您想要的选项。
因此，授予上，
此设置渐变客观参数上。
它只是意味着你确实要提供一个梯度算法。
我要设置的最大数目
迭代的，比方说，百。
我们要去给它一个初始猜测西塔。
有一个2×1向量。
然后这个命令调用fminunc。
这在符号呈现
指针的成本函数
我们刚刚定义了那里。
如果你调用这个，
这将计算，你知道，会使用
其中一个更先进的优化算法。
如果你要想想，像刚才一样梯度下降。
但自动选择学习
率阿尔法所以你不必这样做自己。
但它会再尝试
采用先进的优化算法排序。
像类固醇梯度下降。
要设法找到西塔为你的最佳值。
我其实告诉你这是什么样子的八度。
所以我写了这个成本函数
西塔的功能完全一样，我们有它的前一行。
它计算的J-缬氨酸是成本函数。
并计算了梯度
两个元件是部分
成本函数的衍生物
就，你知道的，
这两个参数，θ1和θ2。
现在让我们切换到我的八度的窗口。
我要去型在那些命令我刚才。
所以，选择等于optimset。这是
符号设置我的
在我的选项参数，
我的优化算法。上，MAXITER，100授出购股权
因此，说100
迭代，而我
要提供梯度到我的算法。
比方说，最初的时间值损耗为零的二一。
所以这是我对西塔初始猜测。
现在我有时间值损耗的，
函数VAL出口标志
等于fminunc约束。
一个指针，指向的成本函数。
并提供我最初的猜测。
而像这样的选项。
如果我点击进入这将运行优化算法。
它很快返回。
这个有趣的格式，这是因为
我行，你也知道，我的
代码周围包裹。
所以，这个有趣的事情
仅仅是因为我的命令行已经缠。
但是，这说的是，
数字呈现，你知道的，认为
它作为梯度下降
类固醇，他们发现的最优值
theta的是θ（1）
等于5时θ2等于5，完全按照我们希望的。
在函数值
最佳基本上是10的负30。
所以，这基本上是零，这
也是我们希望的。
和出口标志
1，这说明
什么的这个收敛状态。
如果你愿意，你可以做
帮助fminunc到
阅读如何在文档
解释出口标志。
但出口标志，让我们你验证了该方法的事情是否已经收敛。
所以这就是你如何在八度运行这些算法。
我应该提到，顺便说一下，
，对于精明的实现，这个值
西塔的，你的参数向量
西塔的，必须在
次在d大于或等于2。
因此，如果西塔仅仅是一个实数。
所以，如果不是至少
二维矢量
或某些比两维高
向量，这fminunc
可能无法正常工作，因此，如果
如果你有一个
所使用的一维函数
优化，你可以看看
八度文档fminunc在
有关其他详细信息。
所以，这就是我们如何优化
我们试用这个例子
简单快捷的驾驶成本函数。
然而，我们应用此让我们只说进展。
Logistic回归我们
参数向量theta和
我将使用一个混合
八度音符号和排序的数学符号的。
但我希望这样的解释
就清楚了，但我们的参数
矢量西塔包括这些
参数西塔0到西塔
N，因为八度指标，
使用索引的载体
1，你知道，θ0是
实际写入θ（1）
在八度，θ（1）是要去写。
所以，如果西塔2个八度
那会是一份书面
西塔n +1个，对不对？
那是因为八度指数
向量是从索引开始
1等的0索引。
因此，我们需要
要做的就是写一个
成本函数，其拍摄
成本函数的logistic回归。
具体地说，成本函数
需要返回的J-缬氨酸，这一点，你知道的，J-VAL
因为你需要一些代码
计算西塔的J和
我们还需要给它的梯度。
因此，梯度1是怎么回事
是一些代码来计算
在相对于偏导
西塔0，下一个部分的
衍生工具方面θ（1）等。
再次，这是梯度
1，梯度2等
上，而不是梯度0，梯度
1，因为倍频索引
向量是从一个而不是从零开始。
不过，最主要的概念，我希望
你从这个幻灯片拿走
是，那是你需要做的，
是写一个函数，返回
成本函数，并返回梯度。
所以为了
应用此logistic回归
或什至线性回归，如果
要使用这些优化算法线性回归。
你需要做的就是插上
适当的代码来计算
这些东西在这里。
所以，现在你知道如何使用这些先进的优化算法。
因为使用的，因为对于
这些算法中，你使用的是
先进的优化库，它使
的只是一点点
更不透明等
只是也许有点难以调试。
但由于这些算法通常
运行速度比梯度下降得更快，
往往是相当典型的当
我有一个大的机器学习
的问题，我会用
这些算法，而是采用梯度下降。
而这些想法，希望，
你就可以得到物流发展
并且也线性回归到正常工作
对更大的问题。
所以，这是它的高级优化的概念。
并在接下来的和
最终视频Logistic回归，
我想告诉你如何
采取logistic回归算法
您已经了解并作出
它也适用于多类分类问题。