公式化及解释
简单理了下深度学习中常用的集中参数优化方法,用相对统一的形式规整了下:
算法名称 | 公式 | 解释 |
---|---|---|
牛顿法 | 逆矩阵,即目标函数对参数 |
|
梯度下降(GD) | 使用所有数据进行梯度下降 | |
随机梯度下降(SGD) | 使用单个数据进行梯度下降 | |
批量梯度下降(Mini-batch GD) | 使用每一小批数据进行梯度下降
(即GD与SGD的折中) |
|
Momentum | 利用累计的指数加权梯度-动量即 惯性,作为每次权重更新的梯度 |
|
Nesterov Momentum | 在Momentum的基础上根据下一步的 新权重计算新梯度("往前多看一步") |
|
AdaGrad | 不同参数有各自的自适应学习率, 即全局学习率除以累计梯度平方和 |
|
RMSProp | 同样自适应学习率,只不过是用全局学习 率除以累计梯度平方的的指数加权均值 |
|
Adam | 相当于Momentum和RMSProp的结合体, 计算权重梯度和权重梯度平方的累计加权 平均,并在偏差校正后进行梯度下降 (即综合一阶动量和二阶动量) |
ps:
优缺点
算法名称 | 优点 | 缺点 |
---|---|---|
牛顿法 | 收敛速度相比梯度下降法快,且由于海森矩阵的的逆在迭代中不断减小,有逐渐缩小步长的效果 | 计算海森矩阵的逆比较困难,消耗时间和计算资源 |
梯度下降(GD) | 目标函数为凸函数时,可以找到全局最优值(若为非凸函数,能够收敛到局部最优值) | 计算量大,收敛速度慢;要用到全部数据,内存消耗大;不允许在线更新模型,如新增样本 |
随机梯度下降(SGD) | 避免冗余数据的干扰,收敛速度加快;能够在线学习;有几率跳出一个比较差的局部最优而收敛到一个更好的局部最优甚至是全局最优; | 每次计算的梯度可能方差较大;更新频繁、收敛过程可能产生严重震荡,有可能落入极小值;选择合适的学习率比较困难 |
批量梯度下降(Mini-batch GD) | 降低计算的梯度方差,收敛较为稳定 | 选择合适的学习率比较困难 |
Momentum | 能够使用动量(即惯性)在相关方向加速SGD,抑制振荡,在一定程度上增加训练稳定性,加快收敛 | 需要人工设定学习率 |
Nesterov Momentum | 具有"前瞻性",比Momentum收敛速度要快。(数学本质上则是利用了目标函数的二阶导信息) | 需要人工设定学习率 |
AdaGrad | 不需要对每个学习率手工地调节;对出现频率较低参数采用较大的α更新,相反,对于出现频率较高的参数采用较小的α更新。 | 仍依赖于人工设置一个全局学习率,学习率设置过大,对梯度的调节太大。中后期,梯度接近于0(因为是累计的梯度平方和),使得训练提前结束 |
RMSProp | 使用梯度累计指数加权均值的方式解决 Adagrad 算法学习率下降较快的问题 | 依然依赖于全局学习率 |
Adam | 对内存需求较小,为不同的参数计算不同的自适应学习率。偏差矫正是为了保证每一次迭代学习率都有个确定范围,使得参数比较平稳(否则一阶和二阶动量会偏向于 初始值) | ~ |
其他
在其他博客和专栏中看到了一些比较好的补充和解释,这里直接做了个搬移,为了更好的阅读体验,相关的参考链接放在了文末~
4.牛顿法推导:
牛顿法基本思想是在当前位置