在深度学习中,如果我们已经定义了网络,输入,以及输出,那么接下来就是损失函数,优化策略,以及一般由框架完成的BP反传。这篇博文我们主要探讨一下深度的BP反传算法(以梯度下降为例),尤其是mini_batch的BP反传,目标是如何更新网络的参数:权重和偏置。
首先,我们来看网络中基本参数的一些定义。
使用梯度下降法,一般计算所有样本的损失函数的平均值,进而计算梯度方向。但是,当样本n特别多的时候,计算会比较困难。因此,提出了随机梯度下降的方法,即我们从样本集中随机抽取m个样本,其计算的平均梯度近似于通过全部样本计算的平均梯度。
当m=1时,SGD算法如下:
当m=k时,mini_batch算法如下:
通过对比m=1和m=k算法流程,我们发现,mini_batch方法的梯度是由mini_batch里的样本共同决定(平均值),计算出来的梯度一般比k=1的时候准确。
关于算法中的公式,我们通过以下方法进行推导: