前馈网络(Feedforward Neural Network, FNN),也叫 多层感知机(MLP) ,是最基础、最经典的人工神经网络结构。它的名字揭示了其核心特征:
前馈 :信息从输入层开始,逐层向前传递,最终到达输出层,整个过程 没有回头路 ——没有循环连接,也不存在层间的反馈回路。就像一条单向流水线,每个环节只处理上游传来的结果,然后交给下游。
你可以把它想象成一个 多层的信息处理流水线 :
1
前馈网络的核心特点
特点 | 说明 | 意义 |
|---|---|---|
单向传播,无记忆 | 信息只从输入流向输出,没有循环或反馈。 | 结构简单,易于分析和训练;但无法处理序列依赖(所以不能直接用于时间序列、自然语言等任务)。 |
全连接 | 相邻层的每个神经元之间都有连接,每对连接都有一个可学习的权重。 | 参数量大,但也使得网络拥有强大的表达能力(理论上可以逼近任意连续函数)。 |
层数可变 | 可以有任意数量的隐藏层(0层就是感知机,1层或更多就是深度前馈网络)。 | 深度越深,表达能力越强,但也越容易过拟合,需要更多数据和技巧。 |
需要激活函数 | 隐藏层必须搭配非线性激活函数(如ReLU、sigmoid、tanh),否则多层线性变换等价于单层线性变换,失去深度意义。 | 激活函数引入非线性,使得网络能够学习复杂的模式。 |
2
前馈网络的作用
作为独立的分类/回归模型
对于结构化数据(如表格数据)、图像特征向量等,前馈网络可以直接作为最终的分类器或回归器。例如:
作为复杂神经网络的“最后一步”
在CNN、RNN、Transformer等架构中,前馈网络常常作为 输出层 ,将提取到的特征映射到最终的预测空间。例如:
特征提取与维度变换
通过调整隐藏层的神经元数量,前馈网络可以灵活地 升维或降维 。例如,Transformer中的FFN先扩大维度(如从512到2048),再压缩回原维度,增加模型容量。
3
如何使用前馈网络(以PyTorch为例)
在现代深度学习框架中,构建一个简单的前馈网络非常直接。以下是一个用于MNIST分类的示例代码(仅作示意,不必深究细节):
import torch
import torch.nn as nn
import torch.nn.functional as F
class SimpleFFN(nn.Module):
def __init__(self, input_size=784, hidden_sizes=[256, 128], num_classes=10):
super(SimpleFFN, self).__init__()
# 定义第一层(输入到隐藏1)
self.fc1 = nn.Linear(input_size, hidden_sizes[0])
# 定义第二层(隐藏1到隐藏2)
self.fc2 = nn.Linear(hidden_sizes[0], hidden_sizes[1])
# 定义输出层(隐藏2到输出)
self.fc3 = nn.Linear(hidden_sizes[1], num_classes)
# 激活函数(这里使用ReLU)
self.relu = nn.ReLU()
def forward(self, x):
# x形状: (batch_size, input_size)
x = self.relu(self.fc1(x))
x = self.relu(self.fc2(x))
x = self.fc3(x) # 输出层通常不加激活(交给损失函数)
return x关键步骤 :
nn.Linear(in_features, out_features)就是全连接层。4
前馈网络在当代深度学习中的角色
虽然前馈网络本身很简单,但它是 所有复杂神经网络的基石 :
优点 :简单、灵活、万能近似(理论上足够深的前馈网络可以拟合任何函数)。 缺点 :参数多、对输入维度敏感、无法直接处理序列或空间结构。
5
总结
前馈网络 = 多层全连接层 + 非线性激活函数,信息单向传递。
nn.Linear实现,搭配激活函数和优化器训练。对于机器人研发,当你需要处理 结构化特征 (如传感器数据、姿态向量)或 作为大模型的输出层 时,前馈网络是必备的基础工具。理解它,你就能看懂现代模型架构中很多模块的本质。