梯度下降算法一个极端的版本是把小批量数据的⼤小设为 1。这意味着,给定一个训练输入 ,我们按照以下规则来更新权重和偏置:
然后我们选取另一个训练输入,再次更新我们的权重和偏置。如此重复。这个过程被称为 在线学习(online learning)或 增量学习(incremental learning)。在在线学习中,模型可以随着新训练数据的到来进行联机训练(trained on the fly)。
小批量学习与在线学习,各有优缺点,不过不是本文重点,在此先略过。
最后,值得注意的是,在某些知名文献 中,普通的梯度下降被称为 批量梯度下降(batch gradient descent),而以上描述的随机梯度下降被称为 小批量梯度下降(mini-batch gradient descent),而它们所说的随机梯度下降,指的又是在线学习。所以,最好还是理解原理,以便根据上下文区分作者到底在说什么。
我们的目标是设计一种在线学习算法,它能够以一个浅层网络开始,这时候具有快速收敛的优点;然后随着更多的数据到达,逐渐地自动转换成更深的模型(同时还能共享浅层网络学到的知识),以学习更加复杂的假设,通过深度神经网络容量的自适应特性有效地提升在线预测性能。
为了达到这个目标,我们需要解决这些问题:什么时候改变网络的容量?如何改变网络的容量?如何在在线学习中同时做到这两点?我们在统一的框架中以一种数据驱动的方式,设计了一个优雅的解决方案来完成这一切。
首先,我们修改已有的深度神经网络,即将每一个隐藏层与输出分类器连在一起。
然后,不使用标准的反向传播算法,我们提出了新的对冲反向传播(Hedge Backpropagation)方法,它在每一轮的在线学习中都会评估每一个分类器的性能,并且能够通过使用对冲算法 (Freund and Schapire 1997) 中具有不同深度的分类器去扩展反向传播算法,以便在线地训练深度神经网络。
这允许我们训练具有适应能力的深度神经网络,同时在浅层网络和深层网络之间共享知识。
图 1:使用对冲反向传播(HBP)的在线深度学习框架。蓝色线代表计算隐藏层特征时的前馈信息流。橙色线表示经过对冲组合之后的 softmax 输出(表示预测)。绿色线表示使用对冲反向传播算法时的更新信息流。
算法 1:使用对冲反向传播的在线深度学习。
f(l) = alpha(l) * relu(h(l) .* theta(l));
alpha_l and theta_l are need to be learnt
alpha_l= 1/(L+1) l=0....L;