从多个节点学习权重
学习如何更新层内的输入权重以优化输出。
更新输入权重
我们可以通过调整节点线性函数的斜率参数,来优化一个简单的线性分类器。我们利用误差——即节点实际输出结果与已知正确答案之间的差异——来指导这一优化过程。这相对容易实现,因为误差与所需斜率调整之间的关系非常简单,易于计算。
但是,当多个节点共同影响输出及其误差时,我们该如何更新连接权重呢?
此前只有一个节点连接到输出节点时,情况要简单得多。而现在如果有两个或更多节点参与输出,我们应该如何利用这个输出误差?
将全部误差用于更新单个权重是不合理的,因为这会忽略其他连接及其对应的权重。误差的存在是因为多个连接共同导致了该结果。
理论上存在一种极小的可能性:众多连接中仅有一个是造成误差的主因。但这种概率微乎其微。即使我们错误地调整了一个原本正确的权重,使其暂时变差,在后续的迭代过程中它仍会被逐步修正,因此整体训练不会彻底失败。
按均等分配误差的方式调整权重
一种思路是将误差平均分配给所有参与贡献的节点,如下图所示。
按非均等分配误差的方式调整权重
另一种思路是对误差进行非均匀分配,即根据各连接权重的大小按比例分配误差。具体来说,我们将更多的误差分摊给权重较大的连接,因为它们对输出的影响更大,也更可能对误差负有更大责任。下图展示了这一思想。
假设有两个节点向输出节点传递信号,其连接权重分别为 和 。如果我们按照权重的比例来分配误差,那么输出误差的四分之三应用于更新第一个较大的权重,而剩余四分之一用于更新第二个较小的权重。
这一思路可以自然扩展到更多节点的情况。例如,若有 100 个节点连接至同一个输出节点,我们就将总误差按比例分配给这 100 条连接,每条连接所分得的误差量由其权重大小决定,反映其对误差的贡献程度。
可以看出,权重在这里发挥了两种作用:第一,我们在前向传播过程中使用权重,将信号从输入层逐层传递至输出层,这是我们之前重点讨论的内容;第二,我们在反向传播过程中使用权重,将输出层的误差沿网络反向传递回去。这种方法被称为反向传播(backpropagation)。
如果输出层包含两个节点,我们对第二个输出节点也执行相同的操作:该节点拥有自己的误差,并将其按比例分配给所有与其相连的前一层连接。