返回首页

Post

隐藏层的训练信号:重读 Back-Propagating Errors

重读 Rumelhart、Hinton 与 Williams 1986 年 Nature 论文:输出误差如何被转化为隐藏层的学习信号,权重更新怎样形成可训练的内部表征,以及这篇短文在反向传播历史中真正确立了什么。

分类
标签
合集

这篇 Nature 短文的中心问题很集中:多层网络的隐藏单元没有直接目标标签,训练过程如何给这些内部单元分配有效的学习信号。输出层的误差容易定义,因为那里同时有实际输出和期望输出;隐藏层夹在输入和输出之间,只能通过后续连接间接影响最终结果。Rumelhart、Hinton 与 Williams 把这个困难转化为一个可计算的信用分配问题:如果某个内部连接会影响最终误差,它就应当根据这种影响获得更新方向。

论文摘要没有把 back-propagation 描写成一条单纯的优化技巧,而是把它和 representation learning 直接绑在一起。权重被反复调整以后,隐藏单元会开始表示任务领域中的重要特征,任务规律也会由这些单元之间的相互作用捕获。这个判断是全文最值得保留的入口:反向传播让多层网络可以训练,同时让内部表示本身成为学习过程的结果。

隐藏层的信用分配障碍

设网络输入经过若干层连接得到输出向量 yy,监督信号给出目标向量 dd。训练目标可以写成某个输出误差函数,例如平方误差

E=12k(dkyk)2.E = \frac{1}{2}\sum_k (d_k-y_k)^2.

对输出单元来说,误差项可以直接由 dkykd_k-y_k 得到。若输出单元的净输入为

netk=jwjkaj,net_k=\sum_j w_{jk}a_j,

激活为 yk=f(netk)y_k=f(net_k),那么输出层的局部误差信号可写成

δk=(dkyk)f(netk),\delta_k=(d_k-y_k)f'(net_k),

权重更新则沿着误差下降方向进行:

Δwjk=ηδkaj.\Delta w_{jk}=\eta\delta_k a_j.

这里 aja_j 是前一层单元的激活,η\eta 是学习率。这个公式说明输出层学习并不神秘:目标值给出了误差,激活函数导数给出了局部敏感性,前一层激活决定当前连接对输出单元的贡献。

按这个记号,δk\delta_k 也正好等于 E/netk-\partial E/\partial net_k;后面把误差继续传回隐藏层时,递推就是沿着这个导数关系展开。

隐藏层的困难来自目标缺失。隐藏单元 jj 没有一个给定的“正确激活值”,所以无法直接写出 djajd_j-a_j。如果只允许有目标标签的单元学习,多层网络会在输出层之前失去训练依据。反向传播的关键动作就是为隐藏单元构造一个由后续误差反推而来的局部信号。

从输出误差到内部连接更新

隐藏单元虽然没有目标标签,但它通过连接 wjkw_{jk} 影响后一层单元 kk,进而影响总误差 EE。把隐藏单元 jj 的激活记为 aj=f(netj)a_j=f(net_j),沿链式法则展开

Enetj=kEnetknetkajajnetj,\frac{\partial E}{\partial net_j} = \sum_k \frac{\partial E}{\partial net_k} \frac{\partial net_k}{\partial a_j} \frac{\partial a_j}{\partial net_j},

就能把隐藏层的责任拆回后一层。这里 netk/aj=wjk\partial net_k/\partial a_j = w_{jk}aj/netj=f(netj)\partial a_j/\partial net_j = f'(net_j),而上一节已经有 δk=E/netk\delta_k=-\partial E/\partial net_k,因此隐藏单元的误差信号满足

δj=f(netj)kwjkδk.\delta_j = f'(net_j)\sum_k w_{jk}\delta_k.

这个递推关系是理解论文的技术锚点。求和里的 kk 遍历所有直接接收 jj 输出的下一层单元;若只有一层隐藏层,这里就是所有输出单元。式中的 wjkw_{jk} 表示从隐藏单元 jj 指向下一层单元 kk 的连接强度,f(netj)f'(net_j) 则把这些下游影响折回到单元 jj 自身的局部敏感性,所以“隐藏层应该为输出错误承担多少责任”被压缩成了一条可以逐项核对的递推。

再利用隐藏单元的净输入

netj=iwijai,net_j=\sum_i w_{ij}a_i,

可得

Ewij=δjai,\frac{\partial E}{\partial w_{ij}}=-\delta_j a_i,

于是连接到隐藏单元的权重也可以按同样形式更新:

Δwij=ηδjai.\Delta w_{ij}=\eta\delta_j a_i.

反向传播因此不是给隐藏层人为指定标签,而是沿着网络依赖关系把输出端的误差分解到内部连接。每一层只需要使用后一层传回的误差信号、本层激活函数导数和相邻连接权重,就能得到自己的更新方向。多层网络的训练问题由此被组织成一次前向计算和一次反向递推:前向阶段保存各层激活,反向阶段从输出误差开始逐层计算 δ\delta 并更新权重。

graph LR X[输入层激活] --> H[隐藏层表示] H --> Y[输出层结果] D[目标输出] --> E[输出误差] Y --> E E --> DY[输出层误差信号] DY --> DH[隐藏层误差信号] DH --> W1[更新输入到隐藏层权重] DY --> W2[更新隐藏到输出层权重]

这张图对应论文标题里的 back-propagating errors:误差先在输出端被定义,再沿连接结构向内部传播,最后转化为各层权重的更新依据。

可学习表征的形成

论文真正强调的后果,是隐藏单元会在训练中形成有用的新特征。隐藏层起初只是网络结构的一部分;一旦误差信号能够进入这些单元,它们的连接权重就会在任务目标约束下持续改变。每次权重调整都会改变隐藏单元下一轮前向计算时响应什么模式,隐藏表示也就在这个循环中逐渐成形。

摘要里说,隐藏单元会表示任务领域中的重要特征,任务规律由这些单元之间的相互作用捕获。这句话把 back-propagation 和早期感知机类方法区分开来。感知机收敛过程主要在已有输入表示上学习决策边界;多层网络通过误差回传把“中间应该表示什么”也纳入训练对象。网络不只是在输出层组合固定特征,还在内部构造服务于任务的新特征。

这种表征学习并不需要给每个隐藏单元规定语义。隐藏单元获得的是降低输出误差所需的局部梯度信号,而不是人工命名的特征目标。它们最终学到的表示来自任务、数据、网络结构和训练过程的共同约束。论文的历史影响也正来自这里:多层网络的内部层不再只是人工设计后的固定接口,而成为可以由误差驱动塑造的表示空间。

1986 年这篇短文的技术位置

这篇论文确立的边界需要讲清楚。它描述并传播了一种用于类神经元网络的学习程序:通过反复调整连接权重,减小实际输出与期望输出之间的差异,并让隐藏单元形成任务相关的内部表示。它让反向传播在神经网络社区真正落到“多层网络如何训练”这个中心问题上。

它没有独自给出反向传播的全部数学前史,也不应被扩写成后来深度学习技术的总说明。Linnainmaa 的 reverse-mode automatic differentiation、Werbos 的 nonlinear sensitivity analysis 与更早的最优控制传统,都构成这条历史线的其他部分。Rumelhart、Hinton 与 Williams 1986 的独特位置在于:它把误差反向传播讲成了神经网络研究者可以直接使用的训练机制,并把这个机制与内部表征学习联系起来。

重读这篇 Nature 短文时,直接回到那条隐藏层递推通常最有效:先有输出层的 δk=(dkyk)f(netk)\delta_k=(d_k-y_k)f'(net_k),再有隐藏层的 δj=f(netj)kwjkδk\delta_j=f'(net_j)\sum_k w_{jk}\delta_k。一旦这条递推成立,权重更新就会进入网络内部,隐藏表示也不再只是预先放在模型里的中间层,而成为训练过程本身持续塑造的对象。

参考文献

[1] David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams. Learning representations by back-propagating errors. Nature, 1986. DOI: 10.1038/323533a0.

较新文章Werbos 1982:低成本导数通向灵敏度分析与学习算法2026年4月23日更早文章舍入误差、Taylor 系数与 reverse-mode 的数值分析前史2026年4月23日

相关文章