高级优化
“共轭梯度”,“BFGS”和“L-BFGS”是更复杂,更快速的优化θ的方法,可用于代替梯度下降。 但是建议不要自己编写这些更复杂的算法(除非是数值计算方面的专家),而是使用库,因为它们已经过测试和高度优化。 Octave提供它们这些优化库。
优化算法
这些优化算法的一种思路是给出计算导数项和代价函数的方法,你可以认为算法有一个智能的内部循环,而且事实上他们确实有一个智能的内部循环,称为线性搜索(line search)算法,它可以自动尝试不同的学习速率 α 并自动选择一个好的学习速率 α。 因此它甚至可以为每次迭代选择不同的学习速率,那么你就不需要自己选择。这些算法实际上在做更复杂的事情,不仅仅是选择一个好的学习速率,所以它们往往最终收敛得远远快于梯度下降。
然后我们可以使用octave的“fminunc()”优化算法以及“optimset()”函数,该函数创建一个包含我们要发送到“fminunc()”的选项的对象。
我们给函数“fminunc()”我们的成本函数,我们的θ值的初始向量,以及我们事先创建的“options”对象。
fminunc()函数 成本函数
网友评论