2.1.6 学习

这些模型最有趣的地方可能是连接权重时不需要手动设置或预先设定。大多数模型在诞生之初就将其权重初始设置为随机值[3]。然后,通过学习算法根据一系列与目标配对的输入训练范例调整这些权重。最常见的两种算法是Hebbian算法和一种称为反向传播的delta规则

Hebbian算法。Hebbian算法是根据D.O. Hebb(1949)的一个建议命名的,每当输入节点A和输出节点B同时处于激活状态时,它们之间的连接权重都会以固定的数量增强,这一过程有时用“一起激活的细胞,连接在一起”来描述。Hebbian算法的某种更为复杂的版本将节点A和节点B之间的连接权重调整为与其乘积成比例的量(McClelland,Rumelhart & Hinton,1986,p.36)。在该版本中,如果节点A的活性值乘以节点B的活性值结果为正,则它们之间的连接被加强;如果该乘积为负,则节点A和B之间的连接被削弱。

delta规则。delta规则将输入节点A的活性值乘以输出节点B实际产生的结果与输出节点B的目标之间的差值,并与之成比例地改变输入节点A和输出节点B之间的连接权重,公式如下所示:

Δwio=η(targeto-observedo)ai

其中Δwio是从输入节点i到输出节点o的连接权重的变化,η是学习率,targeto是节点o的目标值,observedo是节点o的实际活性值,ai是输入i的活性值。

反向传播。人们无法将delta规则直接应用于具有隐藏层的网络,因为隐藏节点的目标是未知的。反向传播算法是Rumelhart、Hinton和Williams(1986)提出的,它使用额外的机制补充了delta规则,用于估计隐藏单元的“目标”。

反向传播之所以得名,是因为学习算法在一系列通过网络向后移动的阶段中进行操作。在第一阶段,该算法调整从隐藏单元到输出单元的连接权重[4]。遵循delta规则,从隐藏节点h到输出节点o的每个连接都根据以下乘积的函数进行调整,即隐藏节点h的活性值和对输出节点o的误差度量的乘积,所有度量均由称为学习率的参数(在下面讨论)进行缩放[5]

第二阶段在所有从隐藏节点到输出节点的连接都已调整之后开始。这时,使用一种称为责任分配的过程,该算法计算出每个隐藏节点在多大程度上导致了整体错误。从给定输入节点i到给定隐藏节点h的连接权重是通过i的活性值乘以h的责任分数来调整的,再将其乘以学习率(在下一节中讨论的参数)以进行缩放。因此,反向传播调整馈送隐藏节点的连接权重的方式与delta规则调整馈送输出节点的连接权重的方式非常相似,但目标值和观测值之间的差异用责任分配分数代替。

计算公式如下。从隐藏节点h到输出节点o的连接通过∆who调整,其中

∆who=ηδoahδo=(to-ao)ao(1-ao)

输入节点i与隐藏节点h的连接通过∆wih进行调整,其中

028-1

像反向传播这样的算法被称为梯度下降算法。要理解这个比喻,可以想象一下,在每次试验之后,我们都会计算目标与观察到的输出(即模型实际产生的输出)之间的差异。可以将这种差异(一种误差的度量)视为丘陵地形上的一个点,我们的目标是找到最低点(总误差最小的解)。

固有的风险是,如果我们使用的算法不是针对全局的,那么可能会陷入局部最小值中(参见图2.9)。在局部最小值处,我们无法利用小步进立即找到更好的解。

029-1

图2.9 以爬山来类比。箭头指向的位置误差较小,并且在这些位置进行小步进只会导致更大的误差

在简单的任务中,经过反向传播训练的网络通常可以找到合适的解,即使该解不是完美的。这些算法是否适用于更复杂的任务还存在争议(有关局部最小值问题的进一步讨论,请参阅文献(Rumelhart,Hinton & Williams,1986)和(Tesauro & Janssens,1988))。