为什么要使用反向传播算法来训练多层感知器?

人工智能 神经网络 训练 反向传播 前馈神经网络 多层感知器
2021-11-06 03:07:45

我读过Martin Hagan 等人的《神经网络设计》一书。(第 11 章),为了训练前馈神经网络(又名多层感知器),使用反向传播算法。

为什么是这个算法?有人可以用简单的术语和详细的术语解释吗?

1个回答

根据反向传播的维基百科:

在拟合神经网络时,反向传播在监督学习期间针对单个输入-输出示例的网络权重计算损失函数的梯度,并且这样做很有效,这与简单直接计算梯度的每个单独称重。

反向传播是自动微分反向累积的一个特例,它在 Rumelhart, Hinton & Williams (1986) 中被宣布。自动微分有两种模式:前向累加和后向累加。

自动微分不同于符号微分和数值微分(有限差分法)。符号微分会导致代码效率低下,并面临将计算机程序转换为单个表达式的困难,而数值微分会在离散化过程和取消过程中引入舍入误差。两种经典方法都存在计算高阶导数的问题,其中复杂性和错误会增加。最后,这两种经典方法在计算函数相对于许多输入的偏导数时都很慢,这是基于梯度的优化算法所需要的。自动微分解决了所有这些问题。

通常,存在两种不同的 AD 模式,正向累积(或正向模式)和反向累积(或反向模式)。正向累加是指从内向外遍历链式法则,而反向累加是从外向内遍历...

对于函数,前向累加比反向累加更有效f:nmmn只作为n扫描是必要的,相比m扫描反向积累。

函数的反向累加比正向累加更有效f:nmmn只作为m扫描是必要的,相比n扫荡前向积累。

在这种历史计算微分技术背景下,由于 MLP 映射中的损失函数nmmn在大多数情况下,这就是为什么反向传播最常用于训练 MLP 作为上面介绍的反向累积的特殊情况的主要原因之一。