前馈神经网络(MLP)详解
,输出层根据任务选择(如分类用Softmax)。Transformer中的。前馈神经网络(MLP)由。在残差块中,MLP用于。组成,每层全连接。
·
目录
- 模型结构详解
- 层级组成
- 激活函数
- 输入与输出
- 数学原理与推导
- 前向传播公式
- 反向传播推导
- 代表性变体及改进
- ResNet中的MLP
- GRU中的门控MLP
- BERT中的MLP层
- StyleGAN中的映射网络
- 应用场景与优缺点
- PyTorch代码示例
1. 模型结构详解
1.1 层级组成
前馈神经网络(MLP)由输入层、隐藏层、输出层组成,每层全连接。
- 输入层:维度 = 特征数(如28x28图像展平为784维)。
- 隐藏层:可多层堆叠,每层含多个神经元(如256维)。
- 输出层:维度 = 类别数(如10分类任务输出10维)。
1.2 激活函数
激活函数引入非线性,常见选择:

隐藏层常用ReLU,输出层根据任务选择(如分类用Softmax)。
1.3 输入与输出
- 输入格式:向量形式(如展平的图像、表格数据)。
- 输出格式:
- 回归任务:线性输出(无激活)。
- 分类任务:Softmax概率分布。
2. 数学原理与推导
2.1 前向传播公式
设第 l 层权重 W(l),偏置 b(l),激活函数 f,则:

输出层(以Softmax为例):

2.2 反向传播推导
以交叉熵损失
为例:
- 输出层梯度:

- 隐藏层梯度(链式法则):

- 参数更新:

3. 代表性变体及改进
3.1 ResNet中的MLP
在残差块中,MLP用于1x1卷积通道数调整:
- 作用:调整通道维度,实现跨层连接。
3.2 GRU中的门控MLP
GRU的更新门和重置门由MLP实现:

- 作用:动态控制历史信息的遗忘与保留。
3.3 BERT中的MLP层
Transformer中的前馈网络(FFN):

- 作用:特征非线性变换,增强表达能力。
3.4 StyleGAN中的映射网络
8层MLP将噪声向量映射为风格向量:
- 作用:解耦潜在空间,控制生成图像属性。
4. 应用场景与优缺点
4.1 应用场景
- 表格数据分类/回归(如房价预测、用户流失分析)。
- 特征转换:Autoencoder中的编码器/解码器。
- 组合模型组件:如ResNet、Transformer中的子模块。
4.2 优缺点
| 优点 | 缺点 |
|---|---|
| 结构简单,易于实现 | 难以处理空间/时序依赖 |
| 适合结构化数据 | 参数量大,易过拟合 |
| 可扩展性强(堆叠隐藏层) | 需要特征工程(对比CNN/RNN) |
5. PyTorch代码示例
import torch
import torch.nn as nn
class MLP(nn.Module):
def __init__(self, input_dim, hidden_dims, output_dim):
super().__init__()
layers = []
prev_dim = input_dim
for dim in hidden_dims:
layers.append(nn.Linear(prev_dim, dim))
layers.append(nn.ReLU())
prev_dim = dim
layers.append(nn.Linear(prev_dim, output_dim))
self.net = nn.Sequential(*layers)
def forward(self, x):
return self.net(x)
# 示例:MNIST分类(输入784维,输出10维)
model = MLP(input_dim=784, hidden_dims=[256, 128], output_dim=10)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
loss_fn = nn.CrossEntropyLoss()
# 训练循环(伪代码)
for x, y in dataloader:
logits = model(x.view(-1, 784))
loss = loss_fn(logits, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)