我读过Martin Hagan 等人的《神经网络设计》一书。(第 11 章),为了训练前馈神经网络(又名多层感知器),使用反向传播算法。
为什么是这个算法?有人可以用简单的术语和详细的术语解释吗?
我读过Martin Hagan 等人的《神经网络设计》一书。(第 11 章),为了训练前馈神经网络(又名多层感知器),使用反向传播算法。
为什么是这个算法?有人可以用简单的术语和详细的术语解释吗?
根据反向传播的维基百科:
在拟合神经网络时,反向传播在监督学习期间针对单个输入-输出示例的网络权重计算损失函数的梯度,并且这样做很有效,这与简单直接计算梯度的每个单独称重。
反向传播是自动微分反向累积的一个特例,它在 Rumelhart, Hinton & Williams (1986) 中被宣布。自动微分有两种模式:前向累加和后向累加。
自动微分不同于符号微分和数值微分(有限差分法)。符号微分会导致代码效率低下,并面临将计算机程序转换为单个表达式的困难,而数值微分会在离散化过程和取消过程中引入舍入误差。两种经典方法都存在计算高阶导数的问题,其中复杂性和错误会增加。最后,这两种经典方法在计算函数相对于许多输入的偏导数时都很慢,这是基于梯度的优化算法所需要的。自动微分解决了所有这些问题。
通常,存在两种不同的 AD 模式,正向累积(或正向模式)和反向累积(或反向模式)。正向累加是指从内向外遍历链式法则,而反向累加是从外向内遍历...
对于函数,前向累加比反向累加更有效和只作为扫描是必要的,相比扫描反向积累。
函数的反向累加比正向累加更有效和只作为扫描是必要的,相比扫荡前向积累。
在这种历史计算微分技术背景下,由于 MLP 映射中的损失函数和在大多数情况下,这就是为什么反向传播最常用于训练 MLP 作为上面介绍的反向累积的特殊情况的主要原因之一。