如前所述,在 20 世纪 50 年代,感知器 (Rosenblatt, 1956, 1958) 成为第一个能根据每个类别的输入样本来学习权重的模型。约在同一时期,自适应线性单元 (adaptive linearelement, ADALINE) 简单地返回函数 f(x) 本身的值来预测一个实数 (Widrow and Hoff, 1960),并且它还可以学习从数据预测这些数。
自适应线性单元(Adaline)的激活函数是一个线性函数,该函数的输出等于输入,实际上就相当于没有激活函数,线性激活函数φ(Z)的定义:
φ(Z) = Z = W^TX
自适应线性单元的训练
自适应线性单元的训练规则
- 权重根据线性激活函数进行更新
- 将样本数据中的实际输出与线性激活函数的输出进行比较,计算模型偏差,然后更新权重。
感知器训练规则
- 权重是根据单位阶跃函数更新的
- 将样本数据中的实际输出与模型输出进行比较,计算模型偏差,然后更新权重。
自适应线性单元与感知器的区别,在与激活函数不同,自适应线性单元将返回一个实数值而不是0,1分类。因此自适应线性单元用来解决回归问题而不是分类问题。
自适应线性单元训练时,用于调节权重的训练算法是被称为随机梯度下降(stochastic gradient descent)的一种特例。稍加改进后的随机梯度下降算法仍然是当今深度学习的主要训练算法。后面将详细介绍。
监督学习与无监督学习
监督学习:对有标记(分类)的训练样本进行学习,以尽可能对训练样本集外的数据进行标记(分类)预测。
监督学习中,所有的标记(分类)是已知的。因此,训练样本的岐义性低。
无监督学习:对没有标记(分类)的训练样本进行学习,以发现训练样本集中的结构性知识。
这里,所有的标记(分类)是未知的。因此,训练样本的岐义性高。
聚类就是典型的无监督学习,经过聚类后的样本数据就可以用来做监督学习。
目标函数
通常,神经网络的训练都属于监督学习类别,即使样本数据没有分类,也可先做聚类处理,把样本数据分类,然后就可以用来做监督学习了。
在监督学习下,对于一个样本,我们知道它的特征(输入)x,以及标记(输出)y。同时,我们还可以得到神经网络的预测输出\hat y。注意这里面我们用y表示训练样本里面的标记,也就是实际值;用\hat y表示神经网络的的预测值。我们当然希望预测值\hat y和实际值y越接近越好。
数学上有很多方法来表示预测值\hat y和实际值y接近程度,比如我们可以用\hat y和y的差的平方的\frac{1}{2}来表示它们的接近程度
e = \frac{1}{2}(y – \hat y)^2
我们把e叫做单个样本的误差。至于为什么前面要乘\frac{1}{2},是为了后面计算方便。
训练数据中会有很多样本,比如N个,我们可以用训练数据中所有样本的误差的和,来表示神经网络的误差E,也就是
E = e^{(1)} + e^{(2)} + e^{(3)} + … + e^{(n)}
上式的e^{(1)}表示第一个样本的误差,e^{(2)}表示第二个样本的误差……。
上面的也可以表示为和式:
\begin{aligned} E&=e^{(1)} + e^{(2)} + e^{(3)} + … + e^{(n)}\\ &=\sum _{i=1}^ne^{(i)}\\ &=\frac{1}{2}\sum _{i=1}^n (y^{(i)} – \hat y^{(i)})^2 \end{aligned}
其中
\hat y^{(i)} = φ(z^{(i)}) = w^Tx^{(i)}
x^{(i)}表示第i个训练样本的特征,y^{(i)}表示第i个样本的标记,我们也可以用元组(x^{(i)}, y^{(i)})表示第i个训练样本。\hat y^{(i)}则是神经网络对第i个样本的预测值,φ(z^{(i)})中z^{(i)}表示第i个样本的加权求和值,φ(z)表示线性激活函数。
对于一个训练数据集来说,我们当然希望误差E最小越好。对于特定的训练数据集来说,(x^{(i)}, y^{(i)})的值都是已知的,所以E其实是参数w的函数。
\begin{aligned} E = J(w)&=\frac{1}{2}\sum _{i=1}^n (y^{(i)} – \hat y^{(i)})^2\\ &=\frac{1}{2}\sum _{i=1}^n (y^{(i)} – φ(z^{(i)}))^2\\ &=\frac{1}{2}\sum _{i=1}^n (y^{(i)} – w^Tx^{(i)})^2 \end{aligned}
由此可见,神经网络的训练,实际上就是求取到合适的权重w,使差值E取得最小值。这在数学上称作优化问题,而J(w)就是我们优化的目标,称之为目标函数,也被称为代价函数、损失函数。
注意:前面提到,目标函数实际上是差值平方和,从数学上来说,平方与线性激活函数让目标函数变成可微凸函数。
对于可微凸函数,可以使用一种简单但功能强大的优化算法,梯度下降法来求取目标函数J(w)的最小值,及其对应的参数w。