一、基本原理
梯度法:
由一阶泰勒级数展开式,f(x+dx) = f(x) + sum(i,df/dx(i)*dx(i)) + r(x,dx)。其中r(x,dx)为余项,当dx很小时,可忽略余项。推倒得迭代:x=x+dx=x-miu*dfx。
优点:可收敛于一个极小值点。
缺点:收敛速度慢,在梯度值小时尤为明显。学习率miu需要依据经验赋值。
牛顿法:
由二阶泰勒级数展开式,f(x+dx) ~= f(x) + f’(x)*dx + 1/2*(dx)’H(dx),H为黑森矩阵。推到的迭代式:dx=-H[-1]df/dx。
优点:精度高于梯度法。
缺点:H矩阵计算存储复杂,收敛性没法保证。
拟牛顿法:利用函数一阶导数(梯度)来近似递推H矩阵。
共轭梯度法:
共轭梯度法也是一种近似的二阶方法,只需计算一阶导数,不需计算和存储二阶导数。
二、三者性能比较(引自网络)
本文主要是参考论文:On optimization methods fordeep learning,文章内容主要是笔记SGD(随机梯度下降),LBFGS(受限的BFGS),CG(共轭梯度法)三种常见优化算法的在deeplearning体系中的性能。下面是一些读完的笔记。<