神经网络的数学基础-8(结束)
作者头像
  • 金牌分析师
  • 2019-11-09 14:22:33 9

随机梯度下降是一种常用的技术,用于寻找可微函数的最小值。通常,我们可以用解析法找到函数的最小值,即求导数等于零的点。然而,这种方法在实际的神经网络中并不适用,因为网络中的参数数量可能达到数千甚至数百万,使得直接求解变得不可行。

为了实现随机梯度下降,我们通常采用以下步骤:

  1. 从训练数据中随机抽取一个批次的数据,包括输入x和对应的标签y。
  2. 使用网络对输入x进行前向传播,得到预测值y_pred。
  3. 计算该批次数据的损失值,用来衡量预测值y_pred和真实标签y之间的差异。
  4. 根据损失值计算网络参数的梯度,即损失相对于参数的变化率(一次反向传播)。
  5. 根据计算出的梯度,调整参数值,使损失值减少。具体操作为参数值减去梯度乘以一个步长(step),即W -= step * gradient。

这种方法被称为小批量随机梯度下降(mini-batch SGD)。其核心思想是在每次迭代中,利用随机抽取的小批量数据进行参数更新。随机性保证了算法能够跳出局部极小点,而不会陷入特定的模式。如果步长(step)设置得当,算法可以有效地找到全局最小值。

在实践中,除了小批量SGD,还存在其他两种极端情况。一种是每次迭代仅使用单一样本进行参数更新,称为真SGD;另一种是每次迭代使用所有数据进行参数更新,称为批量SGD。批量SGD虽然每次更新更加准确,但计算成本较高。因此,合理选择批量大小是关键。

梯度下降通常在一个高维空间中进行,神经网络的每个权重参数对应一个维度。尽管我们可以通过二维或三维图形来直观展示梯度下降的过程,但实际中的神经网络参数空间往往高达数万甚至数百万维。因此,在低维空间中的直观感受可能并不完全适用于高维情况。历史经验表明,许多深度学习的问题根源就在于这种直观感受的误导。

此外,为了改善梯度下降的效果,出现了许多优化方法,如带有动量的SGD、Adagrad、RMSProp等。这些方法在计算参数更新时,不仅考虑当前梯度值,还结合了之前的状态。其中,动量概念特别重要,它能加速收敛并避免陷入局部极小点。动量方法模拟了一个物理过程,即一个小球在损失函数曲面上滚动。如果动量足够大,小球可以顺利越过障碍,最终达到全局最小值。

另外,反向传播算法是计算神经网络梯度的关键工具。它利用链式法则,从损失值反向传播至网络的每一层,计算各层参数对损失值的影响。现代深度学习框架,如TensorFlow,通过符号微分技术自动实现反向传播,大大简化了这一过程。

以上便是随机梯度下降和反向传播算法的基本原理及其优化方法。希望这些内容对你有所帮助。

    本文来源:图灵汇
责任编辑: : 金牌分析师
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
数学基础神经网络结束
    下一篇