原文: 5 algorithms to train a neural network
作者: Alberto Quesada 译者: KK4SBB
责编:何永灿,关注人工智能,投稿请联系 heyc@youkuaiyun.com 或微信号 289416419
神经网络模型的每一类学习过程通常被归纳为一种训练算法。训练的算法有很多,它们的特点和性能各不相同。
问题的抽象
人们把神经网络的学习过程转化为求损失函数f的最小值问题。一般来说,损失函数包括误差项和正则项两部分。误差项衡量神经网络模型在训练数据集上的拟合程度,而正则项则是控制模型的复杂程度,防止出现过拟合现象。
损失函数的函数值由模型的参数(权重值和偏置值)所决定。我们可以把两部分参数合并为一个n维的权重向量,记为w。下图是损失函数f(w)的图示。
如上图所示,w*是损失函数的最小值。在空间内任意选择一个点A,我们都能计算得到损失函数的一阶、二阶导数。一阶导数可以表示为一个向量:
ᐁif(w) = df/dwi (i = 1,…,n)
同样的,损失函数的二阶导数可以表示为海森矩阵( Hessian Matrix ):
Hi,jf(w) = d2f/dwi·dwj (i,j = 1,…,n)
多变量的连续可微分函数的求解问题一直被人们广泛地研究。许多的传统方法都能被直接用于神经网络模型的求解。
一维优化方法
尽管损失函数的值需要由多个参数决定,但是一维优化方法在这里也非常重要。这些方法常常用于训练神经网络模型。
许多训练算法首先计算得到一个训练的方向d,以及速率η来表示损失值在此方向上的变化,f(η)。下图片展示了这种一维函数。
f和η*在η1和η2所在的区间之内。
由此可见,一维优化方法就是寻找到某个给定的一维函数的最小值。黄金分段法和Brent方法就是其中两种广泛应用的算法。这两种算法不断地缩减最小值的范围,直到η1和η2两点之间的距离小于设定的阈值。