打字猴:1.700536803e+09
1700536803 (7.41)
1700536804
1700536805 因此,经典的梯度下降法在每次对模型参数进行更新时,需要遍历所有的训练数据。当M很大时,这需要很大的计算量,耗费很长的计算时间,在实际应用中基本不可行。
1700536806
1700536807 为了解决该问题,随机梯度下降法(Stochastic Gradient Descent,SGD)用单个训练样本的损失来近似平均损失,即
1700536808
1700536809
1700536810
1700536811
1700536812 (7.42)
1700536813
1700536814
1700536815
1700536816
1700536817 (7.43)
1700536818
1700536819 因此,随机梯度下降法用单个训练数据即可对模型参数进行一次更新,大大加快了收敛速率。该方法也非常适用于数据源源不断到来的在线更新场景。
1700536820
1700536821
1700536822 为了降低随机梯度的方差,从而使得迭代算法更加稳定,也为了充分利用高度优化的矩阵运算操作,在实际应用中我们会同时处理若干训练数据,该方法被称为小批量梯度下降法(Mini-Batch Gradient Descent)。假设需要同时处理m个训练数据 ,则目标函数及其梯度为
1700536823
1700536824
1700536825
1700536826
1700536827 (7.44)
1700536828
1700536829
1700536830
1700536831
1700536832 (7.45)
1700536833
1700536834 对于小批量梯度下降法的使用,有以下三点需要注意的地方。
1700536835
1700536836 (1)如何选取参数m?在不同的应用中,最优的m通常会不一样,需要通过调参选取。一般m取2的幂次时能充分利用矩阵运算操作,所以可以在2的幂次中挑选最优的取值,例如32、64、128、256等。
1700536837
1700536838 (2)如何挑选m个训练数据?为了避免数据的特定顺序给算法收敛带来的影响,一般会在每次遍历训练数据之前,先对所有的数据进行随机排序,然后在每次迭代时按顺序挑选m个训练数据直至遍历完所有的数据。
1700536839
1700536840 (3)如何选取学习速率α?为了加快收敛速率,同时提高求解精度,通常会采用衰减学习速率的方案:一开始算法采用较大的学习速率,当误差曲线进入平台期后,减小学习速率做更精细的调整。最优的学习速率方案也通常需要调参才能得到。
1700536841
1700536842 综上,通常采用小批量梯度下降法解决训练数据量过大的问题。每次更新模型参数时,只需要处理m个训练数据即可,其中m是一个远小于总数据量M的常数,这样能够大大加快训练过程。
1700536843
1700536844 逸闻趣事 
1700536845
1700536846  
1700536847
1700536848 梯度算子∇的读音
1700536849
1700536850 但凡学过高等数学的人,对梯度算子∇都不陌生,但是这个符号应该如何来读呢?∇符号是1837年爱尔兰物理学家和数学家哈密尔顿(W.R. Hamilton,建立哈密尔顿力学和提出四元数的大牛)首次提出的,但是并没有说明∇符号的读音。
1700536851
1700536852 于是,到了1884年,当物理学家威廉·汤姆森(William Thomson,热力学之父)想研究一下梯度时,苦于不知其读音。当时,汤姆森教授正在美国的约翰·霍普金斯大学(Johns Hopkins University,JHU)开一个系列讲座,于是他就写信问亚历山大·格拉汉姆·贝尔(Alexander Graham Bell,电话之父)。
[ 上一页 ]  [ :1.700536803e+09 ]  [ 下一页 ]