反向传播算法

✍ dations ◷ 2025-01-10 13:30:57 #反向传播算法

反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。

反向传播要求有对每个输入值想得到的已知输出,来计算损失函数梯度。因此,它通常被认为是一种监督式学习方法,虽然它也用在一些无监督网络(如自动编码器)中。它是多层前馈网络的Delta规则(英语:delta rule)的推广,可以用链式法则对每层迭代计算梯度。反向传播要求人工神经元(英语:artificial neuron)(或“节点”)的激励函数可微。

任何监督式学习算法的目标是找到一个能把一组输入最好地映射到其正确的输出的函数。例如一个简单的分类任务,其中输入是动物的图像,正确的输出将是动物的名称。一些输入和输出模式可以很容易地通过单层神经网络(如感知器)学习。但是这些单层的感知机只能学习一些比较简单的模式,例如那些非线性可分的(英语:linearly separable)模式。例如,人可以通过识别动物的图像的某些特征进行分类,例如肢的数目,皮肤的纹理(无论是毛皮,羽毛,鳞片等),该动物的体型,以及种种其他特征。但是,单层神经网络必须仅仅使用图像中的像素的强度来学习一个输出一个标签函数。因为它被限制为仅具有一个层,所以没有办法从输入中学习到任何抽象特征。多层的网络克服了这一限制,因为它可以创建内部表示,并在每一层学习不同的特征。 第一层可能负责从图像的单个像素的输入学习线条的走向。第二层可能就会结合第一层所学并学习识别简单形状(如圆形)。每升高一层就学习越来越多的抽象特征,如上文提到的用来图像分类。每一层都是从它下方的层中找到模式,就是这种能力创建了独立于为多层网络提供能量的外界输入的内部表达形式。反向传播算法的发展的目标和动机是找到一种训练的多层神经网络的方法,于是它可以学习合适的内部表达来让它学习任意的输入到输出的映射。

反向传播算法(BP 算法)主要由两个阶段组成:激励传播与权重更新。

每次迭代中的传播环节包含两步:

对于每个突触上的权重,按照以下步骤进行更新:

这个比例(百分比)将会影响到训练过程的速度和效果,因此成为“训练因子”。梯度的方向指明了误差扩大的方向,因此在更新权重的时候需要对其取反,从而减小权重引起的误差。

第 1 和第 2 阶段可以反复循环迭代,直到网络对输入的响应达到满意的预定的目标范围为止。

三层网络算法(只有一个隐藏层):

  初始化网络权值(通常是小的随机值)  do     forEach 训练样本 ex        prediction = neural-net-output(network, ex)          actual = teacher-output(ex)        计算输出单元的误差 (prediction - actual)        计算                     Δ                  w                      h                                {displaystyle Delta w_{h}}          计算                     Δ                  w                      i                                {displaystyle Delta w_{i}}          更新网络权值   until 所有样本正确分类或满足其他停止标准  return 该网络

这个算法的名称意味着误差会从输出结点反向传播到输入结点。严格地讲,反向传播算法对网络的可修改权值计算了网络误差的梯度。 这个梯度会在简单随机梯度下降法(英语:stochastic gradient descent)中经常用来求最小化误差的权重。通常“反向传播”这个词使用更一般的含义,用来指涵盖了计算梯度以及在随机梯度下降法中使用的整个过程。在适用反向传播算法的网络中,它通常可以快速收敛到令人满意的极小值。

BP网络都是多层感知机(通常都会有一个输入层、一个隐藏层及一个输出层)。为了使隐藏层能够适合所有有用的函数,多层网络必须具有用于多个层的非线性激活函数:仅用线性激活函数的多层网络会与相当于单层线性网络。常用的非线性激活函数有逻辑函数、柔性最大函数和高斯函数。

用反向传播算法求梯度已被重新发现多次,是更加一般的自动微分技术在反向积累模式的特例。

它也与高斯-牛顿算法(英语:Gauss–Newton algorithm)密切相关,也是继续研究神经反向传播(英语:neural backpropagation)的一部分。

在给出反向传播算法的数学推导之前,我们举一个例子来培养关于神经元的真实输出与正确输出间的直观感受。考虑一个有两个输入单元、一个输出单元、没有隐藏单元的简单神经网络。每个神经元都使用输入的加权作为线性输出(英语:Artificial neuron)。

在训练之前,我们将随机分配权重 w 1 , w 2 {displaystyle w_{1},w_{2}} 。之后神经元根据训练实例进行学习。在此例中,训练集为 ( x 1 {displaystyle x_{1}} , x 2 {displaystyle x_{2}} , t {displaystyle t} ),其中 x 1 {displaystyle x_{1}} x 2 {displaystyle x_{2}} 是网络的输入, t {displaystyle t} 为正确输出(在给定相同的输入时网络最终应当产生的输出)。网络在给定 x 1 {displaystyle x_{1}} x 2 {displaystyle x_{2}} 时,会计算一个输出 y {displaystyle y} ,很可能与 t {displaystyle t} 不同(因为权重最初是随机的)。为了衡量期望输出 t {displaystyle t} 与实际输出 y {displaystyle y} 之间的差异,一个常用的方法是采用平方误差测度:

其中 E {displaystyle E} 为误差。

举例来讲,考虑单一训练实例的网络: ( 1 , 1 , 0 ) {displaystyle (1,1,0)} ,输入 x 1 {displaystyle x_{1}} x 2 {displaystyle x_{2}} 均为1,正确输出 t {displaystyle t} 为 0。现在若将实际输出 y {displaystyle y} 画在x轴,误差 E {displaystyle E} 画在 y {displaystyle y} 轴,得出的是一条抛物线。抛物线的极小值对应输出 y {displaystyle y} ,最小化了误差 E {displaystyle E} 。对于单一训练实例,极小值还会接触到 x {displaystyle x} 轴,这意味着误差为零,网络可以产生与期望输出 t {displaystyle t} 完全匹配的输出 y {displaystyle y} 。因此,把输入映射到输出的问题就化为了一个找到一个能产生最小误差的函数的最佳化问题。

然而,一个神经元的输出取决于其所有输入的加权总和:

其中 w 1 {displaystyle w_{1}} w 2 {displaystyle w_{2}} 是从输入单元到输出单元相连的权重。因此,误差取决于输入到该神经元的权重,也是网络要学习最终需要改变的。若每个权重都画在一个水平的轴上,而误差画在垂直轴上,得出的就是一个抛物面(若一个神经元有 k {displaystyle k} 个权重,则误差曲面的维度就会是 k + 1 {displaystyle k+1} ,因而就是二维抛物线的 k + 1 {displaystyle k+1} 维等价)。

反向传播算法的目的是找到一组能最大限度地减小误差的权重。寻找抛物线或任意维度中的任何函数的极大值的方法有若干种。其中一种方法是通过求解方程组,但这依赖于网络是一个线性系统,而目标也需要可以训练多层非线性网络(因为多层线性网络与单层网络等价)。在反向传播中使用的方法是梯度下降法。

梯度下降法背后的直观感受可以用假设情境进行说明。一个被卡在山上的人正在试图下山(即试图找到极小值)。大雾使得能见度非常低。因此,下山的道路是看不见的,所以他必须利用局部信息来找到极小值。他可以使用梯度下降法,该方法涉及到察看在他当前位置山的陡峭程度,然后沿着负陡度(即下坡)最大的方向前进。如果他要找到山顶(即极大值)的话,他需要沿着正陡度(即上坡)最大的方向前进。使用此方法,他会最终找到下山的路。不过,要假设山的陡度不能通过简单地观察得到,而需要复杂的工具测量,而这个工具此人恰好有。需要相当长的一段时间用仪器测量山的陡峭度,因此如果他想在日落之前下山,就需要最小化仪器的使用率。问题就在于怎样选取他测量山的陡峭度的频率才不致偏离路线。

在这个类比中,此人代表反向传播算法,而下山路径表示能使误差最小化的权重集合。山的陡度表示误差曲面在该点的斜率。他要前行的方向对应于误差曲面在该点的梯度。用来测量陡峭度的工具是微分(误差曲面的斜率可以通过对平方误差函数在该点求导数计算出来)。他在两次测量之间前行的距离(与测量频率成正比)是算法的学习速率。参见限制一节中对此类型“爬山”算法的限制的讨论。

由于反向传播使用梯度下降法,需要计算平方误差函数对网络权重的导数。假设对于一个输出神经元, 平方误差函数为:

其中

加入系数 1 2 {displaystyle textstyle {frac {1}{2}}} 是为了抵消微分出来的指数。之后,该表达式会乘以一个任意的学习速率,因此在这里乘上一个常系数是没有关系的。对每个神经元 j {displaystyle j} ,它的输出 o j {displaystyle o_{j}} 定义为

通向一个神经元的输入 net j {displaystyle {mbox{net}}_{j}} 是之前神经元的输出 o i {displaystyle o_{i}} 的加权和。若该神经元处于输入层后的第一层,输入层的输出 o i {displaystyle o_{i}} 就是网络的输入 x i {displaystyle x_{i}} 。该神经元的输入数量是 n {displaystyle n} 。变量 w j i {displaystyle w_{ji}} 表示神经元 i {displaystyle i} j {displaystyle j} 之间的权重。

激活函数 φ {displaystyle varphi } 一般是非线性可微函数。常用作激活函数的是逻辑函数:

其导数的形式很好:

计算误差对权重 w j i {displaystyle w_{ji}} 的偏导数是两次使用链式法则得到的:

在右边的最后一项中,只有加权和 n e t j {displaystyle mathrm {net_{j}} } 取决于 w j i {displaystyle w_{ji}} ,因此

神经元 j {displaystyle j} 的输出对其输入的导数就是激活函数的偏导数(这里假定使用逻辑函数):

这就是为什么反向传播需要的激活函数是可微的。

如果神经元在输出层中,因为此时 o j = y {displaystyle o_{j}=y} 以及

所以第一项可以直接算出。

但如果 j {displaystyle j} 是网络中任一内层,求 E {displaystyle E} 关于 o j {displaystyle o_{j}} 的导数就不太简单了。

考虑 E {displaystyle E} 为接受来自神经元 j {displaystyle j} 的输入的所有神经元 L = u , v , , w {displaystyle L={u,v,dots ,w}} 的输入的函数,

并关于 o j {displaystyle o_{j}} 取全微分,可以得到该导数的一个递归表达式:

因此,若已知所有关于下一层(更接近输出神经元的一层)的输出 o l {displaystyle o_{l}} 的导数,则可以计算 o j {displaystyle o_{j}} 的导数。

把它们放在一起:

其中

要使用梯度下降法更新 w j i {displaystyle w_{ji}} ,必须选择一个学习速率 α {displaystyle alpha } 。要加在原本的权重上的权重的变化,等于学习速率与梯度的乘积,乘以 1 {displaystyle -1}

之所以要乘以 1 {displaystyle textstyle -1} 是因为要更新误差函数极小值而不是极大值的方向。

对于单层网络,这个表达式变为Delta规则(英语:Delta Rule)。要想更好地理解反向传播是如何起作用的,下面是一个例子来说明它:The Back Propagation Algorithm,12页。

有可供选择的三种学习模式(Mode):在线(英语:Online machine learning),批量和随机(英语:Stochastic gradient descent)。在在线和随机学习,每次传播后被立即做一个权重的更新。在批量学习模式,权重更新前有许多传播发生。在线学习被用于提供新的型态(pattern)的连续流的动态环境。随机学习和批量学习都使用静态型态(pattern)的一个训练集合。随机学习以一个随机的顺序经过数据集合,以减少陷入局部极小值的机会。随机学习也比批量学习更快,因为权重在每次传播后被立即更新。然而批量学习将产生一个更加稳定下降到一个局部最小值,因为每次更新都是基于所有型态被进行的。

Vapnik引用(Bryson, A.E.; W.F. Denham; S.E. Dreyfus. Optimal programming problems with inequality constraints. I: Necessary conditions for extremal solutions. AIAA J. 1, 11 (1963) 2544-2550)在他的书《支持向量机》中首次发表反向传播算法。在1969年Arthur E. Bryson和何毓琦将其描述为多级动态系统优化方法。 直到1974年以后在神经网络的背景下应用,并由Paul Werbos、David E. Rumelhart、杰弗里·辛顿和Ronald J. Williams的著作,它才获得认可,并引发了一场人工神经网络的研究领域的“文艺复兴”。在21世纪初人们对其失去兴趣,但在2010年后又拥有了兴趣,如今可以通过GPU等大型现代运算器件用于训练更大的网络。例如在2013年,顶级语音识别器现在使用反向传播算法训练神经网络。

相关

  • 小托马斯·弗兰西斯小托马斯·弗兰西斯(英语:Thomas Francis Jr.,1900年7月15日-1969年10月1日),美国医生,病毒学家与流行病学家。弗兰西斯是第一位在美国分离出流感病毒的科学家,在1940年发现了另一种
  • Mg(HCOO)sub2/sub甲酸镁是一种无机化合物,化学式为Mg(HCO2)2。它可由甲酸和氧化镁反应得到,从溶液中结晶出二水合物。二水合物在105 °C失水,得到无水物;在500 °C生成氧化镁。
  • 美拉德反应美拉德反应(Maillard reaction),又称美拉德反应、梅拉德反应、梅纳反应、羰胺反应,是广泛分布于食品工业的非酶褐变反应,指的是食物中的还原糖(碳水化合物)与氨基酸/蛋白质在常温或
  • 危机热线危机热线是一种电话或网络咨询服务,主要对存在情感问题或有计划自杀的人提供咨询。危机热线的有效性曾遭受批评:没有明显证据能证明危机热线能有效降低自杀率且对已经决定自杀
  • 卞赵如兰卞赵如兰(英语:Rulan Chao Pian,1922年4月19日-2013年11月30日),东方语文与中国音乐博士,哈佛大学荣休教授 。赵元任和杨步伟之长女。与丈夫卞学
  • 5-HT4受體336015562ENSG00000164270ENSMUSG00000026322Q13639P97288NR_104445、NM_000870、NM_001040169、NM_001040172、NM_001040173、NM_001040174、NM_001286410、NM_199453NM_00
  • 厚膜电致发光技术厚膜电致发光技术(Thick-film dielectric electroluminescent,简称TDEL),一种电致发光技术,其结构类似常规的薄膜电致发光,在前电极与后电极之间包含包含1层或多层发光材料与介质
  • 合力如果一个力的作用效果和几个力所产生的作用效果相同时,这个力就是那几个力的合力 。 那几个力就是这个力的分力。如右图, F
  • 东洲河东洲河,位于中华人民共和国辽宁省东部的一条河流,是浑河左岸支流,发源于抚顺县救兵镇东南的柜子石,向西北流经大坎村、上房子村、板城村、五牛村、救兵村、马郡村、后腰村、王木
  • 社尼·巴莫拉查翁亲王社尼·巴莫(泰语:เสนีย์ ปราโมช;RTGS:Seni Pramot;1905年5月20日-1997年7月28日),泰国政治家,前任泰国首相。他的父母是泰王拉玛二世的后裔Khamrob亲王(Prince