Skip to content

前馈神经网络(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)))

京ICP备2024093538号-1