博客
关于我
深度神经网络常用优化算法
阅读量:796 次
发布时间:2023-03-24

本文共 994 字,大约阅读时间需要 3 分钟。

批量训练是一种将大型训练集划分为多个小训练集进行优化的方法,主要原因在于大型训练集难以同时加载到显存中。这种方法虽然会导致损失函数值(loss)的波动,但总体趋势仍然是下降的,随着训练次数的增加,损失值会逐渐趋于稳定,最终达到一个收敛值。

在动量梯度下降(momentum gradient descent)中,参数更新规则为: w = w - dw_change 其中,dw_change是梯度更新的变化量。具体来说,dw_change可以通过以下公式计算: dw_c1 = a * dw_c0 + (1 - a) * dw1 dw_c2 = a * dw_c1 + (1 - a) * dw2 这个过程实际上是对单个训练集的影响进行了削弱,使得每次更新的梯度更为稳定。这样的处理不仅减少了loss值的波动幅度,还通过累加历史梯度,增强了参数更新的步伐,从而加速了训练过程。

在实际应用中,为了解决刚开始训练阶段参数更新较慢的问题,可以选择在前期不使用指数加权平均的方法,或者在训练一定数量的样本后再启用指数加权平均。这种方法可以有效克服前期训练缓慢的问题。

RMSProp(根均方差比例法)是一种改进的梯度下降方法,其更新规则为: s_dw = b * s_dw + (1 - b) * dw * dw w = w - a * (dw / sqrt(s_dw)) 通过动态调整梯度的模长(dw/sqrt(s_dw)),RMSProp可以在不同的训练阶段自动调节学习率,从而减小某些维度上的梯度波动,同时在其他维度上适当增大梯度更新的幅度,从而加速训练过程。

Adam(Adam优化器)结合了动量梯度下降和RMSProp方法,使用以下更新公式: w = w - a * (dw / sqrt(s_dw)) b = b - a * (db / sqrt(s_db)) 其中,s_dw = b * s_dw + (1 - b) * dw * dw,s_db同理。在每一步训练中,Adam不仅考虑了当前梯度的影响,还对历史梯度进行了加权平均,使得参数更新更加稳定和有效。Adam算法的超参数包括学习率(learning_rate)、动量参数a1、RMSProp参数a2和b。

总的来说,批量训练、动量梯度下降、RMSProp以及Adam优化器等方法相辅相成,共同推动了机器学习模型的高效训练。

转载地址:http://peqfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现zellers congruence泽勒一致算法(附完整源码)
查看>>
Objective-C实现Zero One Knapsack零一背包计算算法(附完整源码)
查看>>
Objective-C实现一个Pangram字符串至少包含一次所有字母算法(附完整源码)
查看>>
Objective-C实现一个通用的堆算法(附完整源码)
查看>>
Objective-C实现一分钟倒计时(附完整源码)
查看>>
Objective-C实现三次样条曲线(附完整源码)
查看>>
Objective-C实现上传文件到FTP服务器(附完整源码)
查看>>
Objective-C实现两数之和问题(附完整源码)
查看>>
Objective-C实现串口通讯(附完整源码)
查看>>
Objective-C实现串逐位和(附完整源码)
查看>>
Objective-C实现主存储器空间的分配和回收(附完整源码)
查看>>
Objective-C实现乘方运算---m的n次方(附完整源码)
查看>>
Objective-C实现二叉树遍历算法(附完整源码)
查看>>
Objective-C实现二进制和算法(附完整源码)
查看>>
Objective-C实现二进制补码算法(附完整源码)
查看>>
Objective-C实现互斥锁同步执行两个线程函数(附完整源码)
查看>>
Objective-C实现交易密码算法(附完整源码)
查看>>
Objective-C实现低通滤波器(附完整源码)
查看>>
Objective-C实现使用管道重定向进程输入输出(附完整源码)
查看>>
Objective-C实现借记款项功能(附完整源码)
查看>>