多层感知机

1. 多层感知机(MLP)简介

多层感知机是一种前馈式人工神经网络,是深度学习领域中最基础但功能强大的模型之一。与单层感知机相比,多层感知机能够学习并解决非线性问题,这使其成为现代神经网络架构的基石。

1.1 原理与结构

多层感知机由三类层组成:

  • 输入层:接收外部数据,每个节点对应一个输入特征
  • 隐藏层:一个或多个中间处理层,执行非线性变换,提取特征表示
  • 输出层:产生最终预测结果,节点数通常与任务类别数量相关

每层由多个神经元组成,相邻层的神经元之间全连接。数学上,MLP可表示为:

$$h^{(1)} = \sigma(W^{(1)}x + b^{(1)})$$
$$h^{(2)} = \sigma(W^{(2)}h^{(1)} + b^{(2)})$$
$$\ldots$$
$$\hat{y} = \sigma(W^{(L)}h^{(L-1)} + b^{(L)})$$

其中,$\sigma$是激活函数(如ReLU、Sigmoid等),$W$是权重矩阵,$b$是偏置向量。

激活函数

激活函数引入非线性变换,常用的激活函数包括:

  • ReLU: $f(x) = \max(0, x)$,计算高效,有效缓解梯度消失问题
  • Sigmoid: $f(x) = \frac{1}{1 + e^{-x}}$,输出范围(0,1),适合二分类问题
  • Tanh: $f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$,输出范围(-1,1),中心对称特性好

1.2 训练过程

MLP通过反向传播算法训练:

  1. 前向传播:输入数据通过网络,计算预测输出
  2. 计算损失:根据预测值和实际值计算损失函数值(如交叉熵损失、均方误差等)
  3. 反向传播:计算损失函数对各参数的梯度,使用链式法则传递误差
  4. 参数更新:使用优化算法(如梯度下降法、Adam等)更新参数

a)常用损失函数

  • **均方误差(MSE)**:回归问题常用,$L = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2$
  • 交叉熵损失:分类问题常用,$L = -\sum_{i=1}^{n} y_i\log(\hat{y}_i)$

b)优化算法

  • **随机梯度下降(SGD)**:每次使用一小批数据更新参数
  • Adam:结合动量和自适应学习率的优化方法
  • RMSprop:自适应调整不同参数的学习率

1.3 应用场景

MLP广泛应用于:

  • 图像识别:手写数字识别、简单物体分类
  • 语音识别:语音特征提取与模式匹配
  • 自然语言处理:文本分类、情感分析
  • 金融预测:股票价

实现示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import torch
import torch.nn as nn

class MLP(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(MLP, self).__init__()
self.layer1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.layer2 = nn.Linear(hidden_size, output_size)

def forward(self, x):
out = self.layer1(x)
out = self.relu(out)
out = self.layer2(out)
return out

多层感知机
http://neutrino.top/2025/03/27/多层感知机/
作者
Neutrin1
发布于
2025年3月27日
许可协议