人工神经网络ANN的研究一定程度上受到了生物学的启发,生物的学习系统由相互连接的神经元(neuron)组成的异常复杂的网格。而人工神经网络由一系列简单的单元相互密集连接构成的,其中每一个单元有一定数量的实值输入,并产生单一的实数值输出。据估计人类的大脑是由大约\(10^{11}\)次方个神经元相互连接组成的密集网络,平均每个神经元与其他\(10^4\)个神经元相连。神经元的活性通常被通向其他神经元的连接激活或抑制。
1993年的ALVINN系统是ANN学习的一个典型实例,这个系统使用一个学习到的ANN以正常的速度在高速公路上驾驶汽车。ANN的输入是一个30*32像素的网格,像素的亮度来自一个安装在车辆上的前向摄像机。ANN的输出是车辆行驶的方向。
感知器以一个实数值向量作为输入,计算这些输入的线性组合,然后如果结果大于某个阈值,就输出1,否则输出-1。
假设输入空间(特征空间)是\(X\subseteqR^n\),输出空间是\(Y=\{-1,+1\}\)。输入\(x\subseteqX\)是实例的特征向量,对应于输入空间的点;输出\(y\subseteqY\)表示实例的类别。由输入空间到输出空间的如下函数称为感知机:
其中wb称为感知机的模型参数,w叫做权值(weight)或者权值向量(weightvector),b叫做偏置(bias)。\(w\cdotx\)表示w和x的内积。sign是符号函数:
感知机是一种线性分类模型,它的假设空间是定义在特征空间中的所有线性分类模型。感知机有如下几何解释:线性方程$$w\cdotx+b=0$$对应于特征空间的一个超平面S。这个超平面把特征空间划分成两部分,位于两部分的点分别被分为正负两类。
我们需要的是这样一种单元,它的输出是输入的非线性函数,并且输出是输入的可微函数。sigmoid单元是一种非常类似感知器的单元,并且它基于一个平滑的可微阈值函数。
对于一系列确定的单元互联形成的多层网络,反向传播算法可用来学习这个网络的权值。它采用梯度下降方法试图最小化网络输出值与目标值之间的误差平方。
梯度下降更新法则依照以下三者来更新每一个权:学习速率\(\eta\),该权值涉及到输入\(x_{ji}\),这个单元输出的误差。为了直观的理解它,先考虑网络的每一个输出单元k的\(\delta_k\)是怎样计算的。\(\delta_k\)与delta法则中的\((t_k-o_k)\)相似,但乘上了挤压函数的导数\(o_k(1-o_k)\)。每个隐藏单元h的\(\delta_h\)具有相似的形式。因为训练样例仅对网络的输出提供了目标值,所有缺少直接的目标值来计算隐藏单元的误差值。因此采取下边间接办法计算隐藏单元的误差项:对受隐藏单元h影响的每一个单元的误差\(\delta_h\)进行加权求和,每个误差\(\delta_k\)权值为\(w_{kh}\),\(w_{kh}\)就是从隐藏单元h到输出单元k的权值。这个权值刻画了隐藏单元h对于输出单元k的误差应“负责”的程度。
随机的梯度下降算法迭代处理训练样例,每次处理一个。对于每个训练样例\(d\),利用这个样例的误差\(E_d\)的梯度修改权值。换句话说,对于每一个训练样例\(d\),每个权\(w_{ji}\)增加\(\Deltaw_{ji}\)。
权值\(w_{ji}\)仅能通过\(net_j\)影响网络的其他部分。所以我们用链式规则得到:
剩下的任务就是为$\frac{\partialE_d}{\partialnet_j}$导出一个方便的表达式。
(1)考虑公式中的第一项($\frac{\partialE_d}{\partialo_j}$)
除了当$k=j\(时,所有输出单元k的导数\)\frac{\partial}{\partialo_j}(t_k-o_k)^2\(为0。所以我们不必对多个输出单元求和,只需设\)k=j$
(2)考虑公式中的第二项(\(\frac{\partialo_j}{\partialnet_j}\))既然\(o_j=\sigma(net_j)\),导数\(\frac{\partialo_j}{\partialnet_j}\)就是sigmoid函数的导数。
由上可得:
输出单元的随机梯度下降法则:
用\(\delta_j\)表示\(-\frac{\partialE_d}{\partialnet_j}\),得到: