在深度学习网络中,有两种主要的学习方式,batching learning 和 stochastic learning,下面就来对这两种学习方式做以下总结:
batch learing:批量学习,这是一种离线的学习方法,大概的过程就是,每次网络的训练都是用所有的输入样本,针对一个训练样本,我可以比较网络输出和目标输出之间的残差cost(i),在求出所有样本对应的残差之后,对残差去平均,得到整个训练样本的残差Cost,然后利用这个残差求取梯度,进而对网络参数进行修正。这种方法是有一定好处的,比如,这种方法能找出网络的最优解,而且由于是对所有样本去平均,所以可以消除噪音对网络的影响。但是这种方法的缺点也很明显,在网络规模很大,训练样本很多的情况下,这种方法计算就非常耗费时间,远远大于stochastic learning所需要的时间。
stochastic learning:随即学习,这是一种在线的学习方法,即在对输入进行处理的时候,也不断在学习,相比于之前的batch learning,还是有很大的优势,因为batching learning只是在训练的时候会修正网络参数,等到真正对输入数据进行处理的时候,是不会在改变网络参数的。stochastic learning一次只输入一个样本,利用输入的一个样本,计算输入结果,并和目标结果做残差,然后利用残差修正网络参数,紧接着就对下一个样本进行训练,然后继续修正权值,就这样依次做下去。从这我们可以看出,stochastic的训练所需的计算量相比于batch learning减少了很多,而且这是一种在线的学习方法。但是stochastic learning 也是有一些缺点的,由于每次只用一个样本进行训练,使得输入很容易受噪声影响,这可以算缺点,也可以算优点,是缺点是因为噪声使得每次迭代不一定朝最优的方向,是优点是因为这样的情况有时可以避免网络陷入局部最优。
对于stochastic learning受噪声影响的情况,很多深度网络的实现中都采用了batch learning 和stochastic learning相结合的方式,在这种方式中,每一次的训练即不使用全部的样本,也不只使用一个样本,而是使用10个或者别的合适数目的样本,这样就可以稍微消除噪声的影响,又可以进行在线学习。