Skip to content

前馈神经网络

前馈神经网络(Feedforward Neural Network, FNN)也称多层感知机(MLP)。信息从输入层逐层流向输出层,不存在循环连接。

概念详解

对第 l 层,计算过程为:

z(l)=W(l)a(l1)+b(l)a(l)=σ(z(l))

其中 a(0)=x。激活函数 σ 引入非线性,否则多层线性变换仍然等价于一层线性变换。

常见激活函数包括:

ReLU(x)=max(0,x)Sigmoid(x)=11+ex

反向传播推导

以均方误差为例:

L=12||y^y||2

输出层误差项为:

δ(L)=Lz(L)=(y^y)σ(z(L))

隐藏层误差项由链式法则得到:

δ(l)=((W(l+1))Tδ(l+1))σ(z(l))

参数梯度为:

LW(l)=δ(l)(a(l1))TLb(l)=δ(l)

应用代码

python
import torch
from torch import nn

class MLP(nn.Module):
    def __init__(self, in_dim=4, hidden=16, out_dim=3):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(in_dim, hidden),
            nn.ReLU(),
            nn.Linear(hidden, out_dim)
        )

    def forward(self, x):
        return self.net(x)

X = torch.randn(32, 4)
y = torch.randint(0, 3, (32,))

model = MLP()
loss_fn = nn.CrossEntropyLoss()
optim = torch.optim.Adam(model.parameters(), lr=1e-3)

for step in range(100):
    logits = model(X)
    loss = loss_fn(logits, y)
    optim.zero_grad()
    loss.backward()
    optim.step()

print("loss:", loss.item())

小结

前馈网络是深度学习最基础的模块。后续 CNN、RNN、Transformer 中的大量子结构,本质上仍然依赖线性层、激活函数和反向传播。