您的位置:首页 > 房产 > 家装 > 多层感知机 (Multilayer Perceptron, MLP)

多层感知机 (Multilayer Perceptron, MLP)

2024/10/5 22:32:13 来源:https://blog.csdn.net/m0_60388871/article/details/142266198  浏览:    关键词:多层感知机 (Multilayer Perceptron, MLP)

多层感知机 (Multilayer Perceptron, MLP)

通俗易懂算法

多层感知机(Multilayer Perceptron,MLP)是一种前馈人工神经网络。它的主要特点是由多层神经元(或节点)组成,包括至少一个隐藏层。MLP 是监督学习的模型,常用于分类和回归问题。

组成部分

  1. 输入层(Input Layer):接收输入数据的特征。例如,如果我们有一个特征向量 x = [ x 1 , x 2 , … , x n ] \mathbf{x} = [x_1, x_2, \ldots, x_n] x=[x1,x2,,xn],那么输入层就有 n n n 个节点。

  2. 隐藏层(Hidden Layer):包含一个或多个层的神经元,每个神经元执行某种计算。隐藏层的每个神经元都接收来自前一层的输出,加权求和后应用一个非线性激活函数,这使得网络能够学习复杂的模式。

  3. 输出层(Output Layer):生成最终预测结果。如果是分类问题,例如二分类,通常使用 sigmoid 激活函数;对于多分类问题,则使用 softmax 激活函数。

前向传播(Forward Propagation)

前向传播是 MLP 中的核心步骤,在这一过程中每一层的神经元接收输入并计算输出。对于隐藏层的某个神经元 j j j,其输入为来自前一层的输出向量 h ( l − 1 ) \mathbf{h}^{(l-1)} h(l1),其输出为:

z j ( l ) = ∑ i w j i ( l ) h i ( l − 1 ) + b j ( l ) z_j^{(l)} = \sum_{i} w_{ji}^{(l)} h_i^{(l-1)} + b_j^{(l)} zj(l)=iwji(l)hi(l1)+bj(l)

其中:

  • w j i ( l ) w_{ji}^{(l)} wji(l) 是第 l l l 层中连接第 i i i 个神经元到本层第 j j j 个神经元的权重。
  • b j ( l ) b_j^{(l)} bj(l) 是本层第 j j j 个节点的偏置。
  • h i ( l − 1 ) h_i^{(l-1)} hi(l1) 是前一层第 i i i 个节点的输出。

隐藏神经元的输出通过激活函数计算,如 sigmoid,ReLU 等:

h j ( l ) = ϕ ( z j ( l ) ) h_j^{(l)} = \phi(z_j^{(l)}) hj(l)=ϕ(zj(l))

其中 ϕ \phi ϕ 是激活函数,例如:

  • Sigmoid: ϕ ( z ) = 1 1 + e − z \phi(z) = \frac{1}{1 + e^{-z}} ϕ(z)=1+ez1
  • ReLU: ϕ ( z ) = max ⁡ ( 0 , z ) \phi(z) = \max(0, z) ϕ(z)=max(0,z)

反向传播(Backpropagation)

MLP 使用反向传播算法来优化模型参数(权重和偏置)。反向传播通过计算损失函数的梯度来更新参数,使得模型在给定数据上的预测误差最小化。

常用的损失函数有:

  • 对于回归问题:均方误差(Mean Squared Error, MSE)。
  • 对于分类问题:交叉熵(Cross-Entropy Loss)。

权重的更新使用梯度下降算法:
w j i ( l ) : = w j i ( l ) − η ∂ L ∂ w j i ( l ) w_{ji}^{(l)} := w_{ji}^{(l)} - \eta \frac{\partial \mathcal{L}}{\partial w_{ji}^{(l)}} wji(l):=wji(l)ηwji(l)L

其中 η \eta η 是学习率, L \mathcal{L} L 是损失函数。

通过以上过程,MLP 学习到如何从输入数据预测输出,适用于各种复杂的学习问题。MLP 常被用作深度学习的基础模型,提供了理解神经网络的一个重要方式。

底层原理

多层感知机(MLP)是一种前馈神经网络,是最简单的人工神经网络,已经被广泛用于分类和回归问题。多层感知机由多个层组成,主要包括输入层、一个或多个隐藏层和输出层。

基本组成部分

  1. 输入层(Input Layer): 接受外部输入的特征向量,设输入特征向量为 x = [ x 1 , x 2 , … , x n ] \mathbf{x} = [x_1, x_2, \ldots, x_n] x=[x1,x2,,xn]

  2. 权重(Weights)和偏置(Biases): 每条连接都有一个权重 w i j w_{ij} wij,每个神经元还有一个偏置 b i b_i bi

  3. 激活函数(Activation Function): 每个隐藏层和输出层的神经元(即感知器)在计算加权和之后,都会通过一个非线性激活函数 g ( ⋅ ) g(\cdot) g()

  4. 隐藏层(Hidden Layer): 对输入数据进行特征变换,通过加权和计算和激活函数应用获得输出。

  5. 输出层(Output Layer): 最后一层输出用于生成最终预测结果。

数学原理

多层感知机的基本计算过程如下:

前向传播(Forward Propagation)

给定输入 x \mathbf{x} x:

  1. 隐藏层计算:对于每一个隐藏层神经元 j j j,计算其输入作为上一层输出的一个加权和:

    z j ( l ) = ∑ i w i j ( l − 1 ) a i ( l − 1 ) + b j ( l ) z^{(l)}_j = \sum_{i} w_{ij}^{(l-1)} a^{(l-1)}_i + b^{(l)}_j zj(l)=iwij(l1)ai(l1)+bj(l)

    其中 l l l 表示层数, a i ( l − 1 ) a^{(l-1)}_i ai(l1) 为第 l − 1 l-1 l1 层的第 i i i 个神经元的输出。

  2. 激活:应用激活函数获得输出:

    a j ( l ) = g ( z j ( l ) ) a^{(l)}_j = g(z^{(l)}_j) aj(l)=g(zj(l))

    常用的激活函数包括Sigmoid、ReLU、Tanh等。

  3. 输出层计算:对于输出层的每个神经元,重复上述计算过程:

    z k ( L ) = ∑ j w j k ( L − 1 ) a j ( L − 1 ) + b k ( L ) z^{(L)}_k = \sum_{j} w_{jk}^{(L-1)} a^{(L-1)}_j + b^{(L)}_k zk(L)=jwjk(L1)aj(L1)+bk(L)

    输出层的激活函数常选择线性变换(用于回归)或者softmax(用于分类)。

损失函数(Loss Function)

常用的损失函数包括均方误差(MSE)和交叉熵损失。例如,对于分类问题,用交叉熵损失:

L = − ∑ k y k log ⁡ ( y ^ k ) \mathcal{L} = -\sum_{k} y_k \log(\hat{y}_k) L=kyklog(y^k)

其中 y k y_k yk 是真实标签, y ^ k \hat{y}_k y^k 是预测概率。

反向传播(Backpropagation)

通过链式法则计算损失对各层参数的梯度,并更新权重和偏置:

  1. 输出误差: 计算输出层的误差 δ ( L ) \delta^{(L)} δ(L)

  2. 反向传播误差: 逐层向后传播误差:

    δ ( l ) = ( w ( l ) ) ⊤ δ ( l + 1 ) ⋅ g ′ ( z ( l ) ) \delta^{(l)} = \left(w^{(l)}\right)^\top \delta^{(l+1)} \cdot g'(z^{(l)}) δ(l)=(w(l))δ(l+1)g(z(l))

  3. 更新权重和偏置:

    w i j ( l ) = w i j ( l ) − η ∂ L ∂ w i j ( l ) w_{ij}^{(l)} = w_{ij}^{(l)} - \eta \frac{\partial \mathcal{L}}{\partial w_{ij}^{(l)}} wij(l)=wij(l)ηwij(l)L

    b j ( l ) = b j ( l ) − η ∂ L ∂ b j ( l ) b_j^{(l)} = b_j^{(l)} - \eta \frac{\partial \mathcal{L}}{\partial b_j^{(l)}} bj(l)=bj(l)ηbj(l)L

    其中 η \eta η 是学习率。

总结

通过将输入逐层转换,加权求和并非线性化,可以让多层感知机学习到数据的复杂模式。反向传播算法是优化参数的核心,通过梯度下降调整权重以降低损失函数值。

常用面试考点

多层感知机(Multilayer Perceptron,简称MLP)是神经网络中的一种基本结构。它一般由一层输入层、一个或多个隐藏层、以及一层输出层构成。MLP是用于分类和回归任务的常用算法,也是许多复杂神经网络架构的基础。以下是从常用面试考点层面对MLP的解释。

1. 结构

  • 输入层:接收输入数据,每个神经元代表一个特征。
  • 隐藏层:对输入数据进行非线性变换,通常使用激活函数。隐藏层可以有多个。
  • 输出层:生成最终预测结果,输出层的形状和激活函数取决于具体任务(如回归或分类)。

2. 前向传播(Forward Propagation)

在前向传播阶段,每一层的输出是上一层的输出经过线性变换和非线性激活函数得到的。对于某一隐藏层 l l l,其输出可以表示为:

z ( l ) = W ( l ) a ( l − 1 ) + b ( l ) z^{(l)} = W^{(l)}a^{(l-1)} + b^{(l)} z(l)=W(l)a(l1)+b(l)

这里, W ( l ) W^{(l)} W(l)是权重矩阵, b ( l ) b^{(l)} b(l)是偏置向量, a ( l − 1 ) a^{(l-1)} a(l1)是上一层的激活输出。

激活函数通常选用非线性函数,比如ReLU(Rectified Linear Unit):

a ( l ) = ReLU ( z ( l ) ) = max ⁡ ( 0 , z ( l ) ) a^{(l)} = \text{ReLU}(z^{(l)}) = \max(0, z^{(l)}) a(l)=ReLU(z(l))=max(0,z(l))

对于输出层,激活函数应根据具体任务选择,例如分类任务中的softmax函数:

a i ( L ) = e z i ( L ) ∑ j e z j ( L ) a^{(L)}_i = \frac{e^{z^{(L)}_i}}{\sum_{j} e^{z^{(L)}_j}} ai(L)=jezj(L)ezi(L)

3. 损失函数

MLP的目标是最小化损失函数。对于分类问题,常见的损失函数是交叉熵损失:

L = − ∑ i y i log ⁡ ( y ^ i ) \mathcal{L} = -\sum_{i} y_i \log(\hat{y}_i) L=iyilog(y^i)

这里, y i y_i yi是真实标签, y ^ i \hat{y}_i y^i是预测概率。

4. 反向传播(Backpropagation)

反向传播用于计算损失函数相对于每个权重的梯度,以应用于梯度下降算法。对于每一层 l l l,我们有两步:

  • 计算输出误差
    对于输出层:

    δ ( L ) = a ( L ) − y \delta^{(L)} = a^{(L)} - y δ(L)=a(L)y

    对于隐藏层:

    δ ( l ) = ( W ( l + 1 ) ) T δ ( l + 1 ) ⋅ f ′ ( z ( l ) ) \delta^{(l)} = (W^{(l+1)})^T \delta^{(l+1)} \cdot f'(z^{(l)}) δ(l)=(W(l+1))Tδ(l+1)f(z(l))

    这里, f ′ ( z ( l ) ) f'(z^{(l)}) f(z(l))是激活函数的导数。

  • 更新权重和偏置

    使用梯度下降法更新权重和偏置:

    W ( l ) = W ( l ) − η ⋅ Δ W ( l ) W^{(l)} = W^{(l)} - \eta \cdot \Delta W^{(l)} W(l)=W(l)ηΔW(l)

    b ( l ) = b ( l ) − η ⋅ Δ b ( l ) b^{(l)} = b^{(l)} - \eta \cdot \Delta b^{(l)} b(l)=b(l)ηΔb(l)

    其中, Δ W ( l ) = δ ( l ) ( a ( l − 1 ) ) T \Delta W^{(l)} = \delta^{(l)} (a^{(l-1)})^T ΔW(l)=δ(l)(a(l1))T Δ b ( l ) = δ ( l ) \Delta b^{(l)} = \delta^{(l)} Δb(l)=δ(l) η \eta η是学习率。

5. 常用技巧

  • 激活函数的选择:通常选择ReLU以及其变种(如Leaky ReLU)作为隐藏层的激活函数。
  • 初始化:建议使用Xavier初始化或He初始化。
  • 正则化:使用L2正则化或dropout来防止过拟合。
  • 批量归一化:可以加速训练和提高模型稳定性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com