多层感知器(MLP)
多层感知器(MLP,Multilayer Perceptron)是一种前馈神经网络,它由一个输入层、一个或多个隐藏层和一个输出层组成。MLP 是一种全连接神经网络(Fully Connected Neural Network),每一层的神经元与下一层的每一个神经元都相连。
MLP 的结构
- 输入层(Input Layer):接收输入数据,输入层的神经元数等于输入数据的特征数。
- 隐藏层(Hidden Layers):包含一个或多个隐藏层,每一层的神经元通过激活函数进行非线性变换。隐藏层的数量和每一层的神经元数是超参数,可以根据具体问题进行调整。
- 输出层(Output Layer):生成最终的输出,输出层的神经元数取决于具体任务。例如,回归任务通常只有一个输出神经元,而分类任务的输出神经元数等于类别数。
MLP 的工作原理
- 前向传播(Forward Propagation):输入数据经过各层神经元的线性变换和激活函数,逐层传递到输出层,生成预测值。
- 损失函数(Loss Function):计算预测值与真实值之间的差异,常见的损失函数包括均方误差(MSE)和交叉熵损失(Cross-Entropy Loss)。
- 反向传播(Backward Propagation):利用梯度下降算法,通过计算损失函数相对于每个参数的梯度,逐层更新权重和偏置,最小化损失函数。
MLP 的实现步骤
- 初始化参数:随机初始化权重和偏置。
- 前向传播:计算每一层的输出,直到输出层生成预测值。
- 计算损失:使用损失函数计算预测值与真实值之间的差异。
- 反向传播:计算损失函数相对于每个参数的梯度,更新权重和偏置。
- 迭代训练:重复前向传播和反向传播,直到损失函数收敛或达到预设的迭代次数。
具体数据示例
假设我们有一个简单的 MLP,用于二分类问题。输入数据有 2 个特征,隐藏层有 2 个神经元,输出层有 1 个神经元。激活函数使用 ReLU,输出层使用 sigmoid 激活函数。
-
输入层:
- 输入数据 X = [ x 1 , x 2 ] X = [x_1, x_2] X=[x1,x2]。
-
隐藏层:
- 权重 W 1 = ( w 11 w 12 w 21 w 22 ) W_1 = \begin{pmatrix} w_{11} & w_{12} \\ w_{21} & w_{22} \end{pmatrix} W1=(w11w21w12w22),偏置 b 1 = [ b 11 , b 12 ] b_1 = [b_{11}, b_{12}] b1=[b11,b12]。
- 隐藏层输出 H = ReLU ( X ⋅ W 1 + b 1 ) H = \text{ReLU}(X \cdot W_1 + b_1) H=ReLU(X⋅W1+b1)。
-
输出层:
- 权重 W 2 = [ w 31 , w 32 ] W_2 = [w_{31}, w_{32}] W2=[w31,w32],偏置 b 2 b_2 b2。
- 输出层输出 O = sigmoid ( H ⋅ W 2 + b 2 ) O = \text{sigmoid}(H \cdot W_2 + b_2) O=sigmoid(H⋅W2+b2)。
前向传播的具体计算
假设输入数据为
X
=
[
1
,
2
]
X = [1, 2]
X=[1,2],权重和偏置初始化如下:
-
W
1
=
(
0.2
0.4
0.6
0.8
)
W_1 = \begin{pmatrix} 0.2 & 0.4 \\ 0.6 & 0.8 \end{pmatrix}
W1=(0.20.60.40.8)
-
b
1
=
[
0.1
,
0.2
]
b_1 = [0.1, 0.2]
b1=[0.1,0.2]
-
W
2
=
[
0.5
,
0.9
]
W_2 = [0.5, 0.9]
W2=[0.5,0.9]
-
b
2
=
0.3
b_2 = 0.3
b2=0.3
-
隐藏层输出:
H = ReLU ( X ⋅ W 1 + b 1 ) = ReLU ( [ 1 , 2 ] ⋅ ( 0.2 0.4 0.6 0.8 ) + [ 0.1 , 0.2 ] ) = ReLU ( [ 1.4 , 2.0 ] ) = [ 1.4 , 2.0 ] H = \text{ReLU}(X \cdot W_1 + b_1) = \text{ReLU}([1, 2] \cdot \begin{pmatrix} 0.2 & 0.4 \\ 0.6 & 0.8 \end{pmatrix} + [0.1, 0.2]) = \text{ReLU}([1.4, 2.0]) = [1.4, 2.0] H=ReLU(X⋅W1+b1)=ReLU([1,2]⋅(0.20.60.40.8)+[0.1,0.2])=ReLU([1.4,2.0])=[1.4,2.0] -
输出层输出:
O = sigmoid ( H ⋅ W 2 + b 2 ) = sigmoid ( [ 1.4 , 2.0 ] ⋅ [ 0.5 , 0.9 ] + 0.3 ) = sigmoid ( 2.98 ) ≈ 0.952 O = \text{sigmoid}(H \cdot W_2 + b_2) = \text{sigmoid}([1.4, 2.0] \cdot [0.5, 0.9] + 0.3) = \text{sigmoid}(2.98) \approx 0.952 O=sigmoid(H⋅W2+b2)=sigmoid([1.4,2.0]⋅[0.5,0.9]+0.3)=sigmoid(2.98)≈0.952
最终输出 O ≈ 0.952 O \approx 0.952 O≈0.952,表示模型预测属于类别 1 的概率为 95.2%。
总结
多层感知器(MLP)是一种前馈神经网络,通过多层线性变换和非线性激活函数,能够建模复杂的非线性关系。MLP 在各种任务中广泛应用,如分类、回归和序列预测等。通过前向传播、损失计算和反向传播的步骤,MLP 能够逐步调整参数,优化模型性能。具体数据示例帮助理解 MLP 的工作原理和实现过程。
4567

被折叠的 条评论
为什么被折叠?



