Appearance
前馈神经网络(Feedforward Neural Network, FNN)
1. 什么是前馈神经网络?
它像一条单向通道:
- 数据从输入层出发 ➡️ 依次经过一个或多个隐藏层 ➡️ 抵达输出层。
- 整个过程中信息只向前传递,没有“回头路”(即没有循环或反馈连接),因此被称为“前馈”。
2. 前馈神经网络的基本结构
输入层 → 隐藏层(可多层)→ 输出层
- 每一层都和下一层全连接(即:上一层的每个神经元与下一层的所有神经元相连),但同一层内的神经元之间没有连接。
- 在每个全连接层之后,通常会加入一个非线性 Activation 函数(比如 ReLU 或 GELU)。这一步非常关键,它让神经网络能拟合复杂的非线性函数,显著增强模型的表达能力。
3. FFN 的特点
- ✅ 结构简单,易于实现和并行计算。
- ✅ 通过 Activation 函数引入非线性,能学复杂、高维的抽象规律。
- ✅ 是很多 Deep Learning 模型(如 CNN、Transformer)的基础组件。
4. 代码
在下面的实现中,输入X的形状(批量大小,时间步数或序列长度,隐单元数或特征维度)将被一个两层的感知机转换成形状为(批量大小,时间步数,ffn_num_outputs)的输出张量。
python
#@save
class PositionWiseFFN(nn.Module):
"""基于位置的前馈网络"""
def __init__(self, ffn_num_input, ffn_num_hiddens, ffn_num_outputs,
**kwargs):
super(PositionWiseFFN, self).__init__(**kwargs)
self.dense1 = nn.Linear(ffn_num_input, ffn_num_hiddens)
self.relu = nn.ReLU()
self.dense2 = nn.Linear(ffn_num_hiddens, ffn_num_outputs)
def forward(self, X):
return self.dense2(self.relu(self.dense1(X)))