多层感知器 (英語:Multilayer Perceptron ,缩写:MLP )是一种前向结构的人工神经网络 ,映射一组输入向量到一组输出向量。MLP可以被看作是一个有向图,由多个的节点层所组成,每一层都全连接到下一层。除了输入节点,每个节点都是一个带有非线性激活函数的神经元(或称处理单元)。一种被称为反向传播算法 的监督学习 方法常被用来训练MLP。[1] [2] 多层感知器遵循人類神經系統原理,學習並進行數據預測。它首先學習,然後使用權重存儲數據,並使用算法來調整權重並減少訓練過程中的偏差,即實際值和預測值之間的誤差。主要優勢在於其快速解決複雜問題的能力。多層感知的基本結構由三層組成:第一輸入層,中間隱藏層和最後輸出層,輸入元素和權重的乘積被饋給具有神經元偏差的求和結點,主要優勢在於其快速解決複雜問題的能力。 [3] MLP是感知器 的推广,克服了感知器不能对线性不可分 数据进行识别的弱点。[4]
理论
若每个神经元的激活函数都是线性函数,那么,任意层数的MLP都可被约简成一个等价的单层感知器 。[5]
实际上,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个节点的权重变化会影响这个导数。因此,为了改变隐藏层权重,输出层权重根据激活函数的导数而改变,因此该算法代表激活函数的反向传播[6] 。
术语
术语“多层感知器”不是指具有多层的单感知器,每一层由多个感知器组成。另一种说法是“多层感知器网络”。此外,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 .
可微分计算
概论 概念 应用 硬件 软件库 实现
人物 组织 架构
主题
分类