多层感知器

多层感知器（英語：Multilayer Perceptron，缩写：MLP）是一种前向结构的人工神经网络，映射一组输入向量到一组输出向量。MLP可以被看作是一个有向图，由多个的节点层所组成，每一层都全连接到下一层。除了输入节点，每个节点都是一个带有非线性激活函数的神经元（或称处理单元）。一种被称为反向传播算法的监督学习方法常被用来训练MLP。 多层感知器遵循人類神經系統原理，學習並進行數據預測。它首先學習，然後使用權重存儲數據，並使用算法來調整權重並減少訓練過程中的偏差，即實際值和預測值之間的誤差。主要優勢在於其快速解決複雜問題的能力。多層感知的基本結構由三層組成：第一輸入層，中間隱藏層和最後輸出層，輸入元素和權重的乘積被饋給具有神經元偏差的求和結點,主要優勢在於其快速解決複雜問題的能力。 MLP是感知器的推广，克服了感知器不能对线性不可分数据进行识别的弱点。 若每个神经元的激活函数都是线性函数，那么，任意层数的MLP都可被约简成一个等价的单层感知器。 实际上，MLP本身可以使用任何形式的激活函数，譬如阶梯函数逻辑Sigmoid函数，但为了使用反向传播算法进行有效学习，激活函数必须限制为可微函数。由于具有良好可微性，很多S函数，尤其是双曲正切函数（Hyperbolic tangent）及逻辑函数，被采用为激活函数。 在深度学习的最新发展中，线性整流(ReLU)更频繁地被用来克服与S函数相关的数值问题。 两个历史上常见的激活函数都是 S函数，形式是 y ( v i ) = tanh ⁡ ( v i ) {\displaystyle y(v_{i})=\tanh(v_{i})} 和 y ( v i ) = ( 1 + e − v i ) − 1 {\displaystyle y(v_{i})=(1+e^{-v_{i}})^{-1}} 。 第一个是个双曲正切函数，值域为 -1 到 1；第二个是个逻辑函数，形状很相似但是值域为 0 到 1。令 yi 为第 i 个节点（神经元）的输出，而 vi 是输入连接的加权和。也有其他的激活函数，例如线性整流函数，径向基函数（用于径向基函数网络，另一种监督神经网络模型）。 MLP由三层或更多层非线性激活节点组成(一个输入层和一个具有一个或多个隐藏层的输出层)。由于多层互连是完全连接的，所以一层中的每个节点都以一定的权重 wij 连接到下一层的每个节点。 MLP 在感知器中进行学习，通过每次处理数据后改变连接权重，降低输出与预测结果的误差量。这是有监督学习的一个例子，通过反向传播来实现，反向传播是线性感知器中最小均方算法的推广。 我们可以将输出节点 j 的第 n 个数据点的误差表示为 e j ( n ) = d j ( n ) − y j ( n ) {\displaystyle e_{j}(n)=d_{j}(n)-y_{j}(n)} ，其中 d 是目标值，y 是由感知器预测的值。调整节点权重的方式是，尝试通过修正节点权重最小化输出的整体误差 E ( n ) = 1 2 ∑ j e j 2 ( n ) {\displaystyle {\mathcal {E}}(n)={\frac {1}{2}}\sum _{j}e_{j}^{2}(n)} . 使用梯度下降，每个权重的修正量为 Δ w j i ( n ) = − η ∂ E ( n ) ∂ v j ( n ) y i ( n ) {\displaystyle \Delta w_{ji}(n)=-\eta {\frac {\partial {\mathcal {E}}(n)}{\partial v_{j}(n)}}y_{i}(n)} 其中 yi 是前一个神经元的输出，η是学习率。η需要精心挑选，保证权重可以快速收敛而不发生震荡。 式中的导数取决于局部场 vj。场是变化的。很容易证明输出节点的导数可以简化为 − ∂ E ( n ) ∂ v j ( n ) = e j ( n ) ϕ ′ ( v j ( n ) ) {\displaystyle -{\frac {\partial {\mathcal {E}}(n)}{\partial v_{j}(n)}}=e_{j}(n)\phi ^{\prime }(v_{j}(n))} 其中 ϕ ′ {\displaystyle \phi ^{\prime }} 是激活函数的导数。 ϕ ′ {\displaystyle \phi ^{\prime }} 是不变的。对于隐藏节点的权重变化，分析更加困难，但是可以看出相关的导数是 − ∂ E ( n ) ∂ v j ( n ) = ϕ ′ ( v j ( n ) ) ∑ k − ∂ E ( n ) ∂ v k ( n ) w k j ( n ) {\displaystyle -{\frac {\partial {\mathcal {E}}(n)}{\partial v_{j}(n)}}=\phi ^{\prime }(v_{j}(n))\sum _{k}-{\frac {\partial {\mathcal {E}}(n)}{\partial v_{k}(n)}}w_{kj}(n)} . 代表输出层的第k个节点的权重变化会影响这个导数。因此，为了改变隐藏层权重，输出层权重根据激活函数的导数而改变，因此该算法代表激活函数的反向传播。 术语“多层感知器”不是指具有多层的单感知器，每一层由多个感知器组成。另一种说法是“多层感知器网络”。此外，MLP的“感知器”不是最严格意义上的感知器。真正的感知器在形式上是人工神经元的一个特例，它使用一个阈值激活函数，如阶跃函数。MLP感知器可以使用任意激活函数。一个真正的感知器执行二进制分类(或者这个或者那个)，一个MLP神经元可以自由地执行分类或者回归，这取决于它的激活函数。 后来应用术语“多层感知器”时，没有考虑节点/层的性质，节点/层可以由任意定义的人工神经元组成，而不是具体的感知器。这种解释避免了将“感知器”的定义放宽到一般意义上的人工神经元。 常被MLP用来进行学习的反向传播算法，在模式识别的领域中算是标准监督学习算法，并在计算神经学及并行分布式处理领域中，持续成为被研究的课题。MLP已被证明是一种通用的函数近似方法，可以被用来拟合复杂的函数，或解决分类问题。 MLP在80年代的时候曾是相当流行的机器学习方法，拥有广泛的应用场景，譬如语音识别、图像识别、机器翻译等等，但自90年代以来，MLP遇到来自更为简单的支持向量机的强劲竞争。近来，由于深度学习的成功，MLP又重新得到了关注。 Rosenblatt, Frank. x. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961 Rumelhart, David E., Geoffrey E. Hinton, and R. J. Williams.“Learning Internal Representations by Error Propagation”. David E. Rumelhart, James L. McClelland, and the PDP research group.（editors）, Parallel distributed processing: Explorations in the microstructure of cognition, Volume 1: Foundations. MIT Press, 1986. Sustainable Construction Safety Knowledge Sharing: A Partial Least Square-Structural Equation Modeling and A Feedforward Neural Network Approach, Sustainability 2019, 11(20), 5831; https://doi.org/10.3390/su11205831 Cybenko, G. 1989. Approximation by superpositions of a sigmoidal function Mathematics of Control, Signals, and Systems, 2（4）, 303–314. Neural Networks for pattern recognition 第一版. Oxford University Press. 1995. ISBN 0198538642.  Haykin, Simon. Neural Networks: A Comprehensive Foundation 2. Prentice Hall. 1998. ISBN 0-13-273350-1.