深度学习面试79题:涵盖深度学习所有考点(66-79)( 五 )


Batch 的选择 , 首先决定的是下降的方向 。 如果数据集比较小 , 完全可以采用全数据集 ( Full Batch Learning )的形式 , 这样做至少有 2 个好处:其一 , 由全数据集确定的方向能够更好地代表样本总体 , 从而更准确地朝向极值所在的方向 。 其二 , 由于不同权重的梯度值差别巨大 , 因此选取一个全局的学习率很困难 。Full Batch Learning 可以使用Rprop 只基于梯度符号并且针对性单独更新各权值 。
对于更大的数据集 , 以上 2 个好处又变成了 2 个坏处:其一 , 随着数据集的海量增长和内存限制 , 一次性载入所有的数据进来变得越来越不可行 。 其二 , 以 Rprop 的方式迭代 , 会由于各个 Batch 之间的采样差异性 , 各次梯度修正值相互抵消 , 无法修正 。 这才有了后来 RMSProp 的妥协方案 。
既然 Full Batch Learning 并不适用大数据集 , 那么走向另一个极端怎么样?
所谓另一个极端 , 就是每次只训练一个样本 , 即 Batch_Size = 1 。 这就是在线学习(Online Learning) 。 线性神经元在均方误差代价函数的错误面是一个抛物面 , 横截面是椭圆 。 对于多层神经元、非线性网络 , 在局部依然近似是抛物面 。 使用在线学习 , 每次修正方向以各自样本的梯度方向修正 , 横冲直撞各自为政 , 难以达到收敛 。