1️⃣ 什么是全连接神经网络(MLP / DNN)

全连接神经网络(Multi-Layer Perceptron, MLP) 是一种典型的前馈神经网络,属于深度学习的基础结构。

  • MLP 指至少有一层隐藏层的感知机网络

  • DNN(Deep Neural Network)是 MLP 的扩展版本,层数更多

核心特点:

  • 神经元之间 层与层全连接

  • 通过 非线性激活函数 提升表达能力

  • 使用 反向传播(Backpropagation) 训练

2️⃣ 网络结构与基本原理

一个 MLP 主要由以下部分构成:

  • 输入层:接受原始数据特征

  • 隐藏层:非线性变换,提取特征

  • 输出层:输出预测结果

  • 权重(W)与偏置(b):网络参数

  • 激活函数(Activation Function):增加非线性能力

Input Layer → Hidden Layer 1 → Hidden Layer 2 → Output Layer

3️⃣ 数学公式与计算过程

假设输入特征为 \mathbf{x} \in \mathbb{R}^n,第一隐藏层计算公式为:

\mathbf{z}^{(1)} = \mathbf{W}^{(1)} \mathbf{x} + \mathbf{b}^{(1)}

经过激活函数:

\mathbf{a}^{(1)} = f(\mathbf{z}^{(1)})

l层的计算公式:

\mathbf{a}^{(l)} = f\left( \mathbf{W}^{(l)} \mathbf{a}^{(l-1)} + \mathbf{b}^{(l)} \right)

最终输出层(假设分类任务,Softmax 输出):

\hat{\mathbf{y}} = \text{Softmax}(\mathbf{W}^{(L)} \mathbf{a}^{(L-1)} + \mathbf{b}^{(L)})

4️⃣ 常用激活函数

\sigma(x) = \frac{1}{1 + e^{-x}}

范围 (0,1),适合二分类输出

f(x) = \max(0, x)

高效,解决梯度消失问题

  1. Sigmoid

  2. ReLU

  3. Tanh

\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}

范围 (-1,1),零中心化

5️⃣ 损失函数

分类任务常用 交叉熵损失

\mathcal{L} = -\sum_{i=1}^C y_i \log(\hat{y}_i)

优化方法:SGD、Adam、RMSProp 等

回归任务常用 均方误差(MSE)

\text{MSE} = \frac{1}{m} \sum_{i=1}^m (\hat{y}^{(i)} - y^{(i)})^2

6️⃣ 前向传播与反向传播(BP 算法)

  • 前向传播:从输入到输出,逐层计算

  • 反向传播(Backpropagation):利用链式法则计算梯度,更新参数权重更新公式(梯度下降):

W^{(l)} \leftarrow W^{(l)} - \eta \frac{\partial \mathcal{L}}{\partial W^{(l)}}

\eta:学习率

7️⃣ Python 实现(PyTorch)

import torch
import torch.nn as nn
import torch.optim as optim

# 定义 MLP 模型
class MLP(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(MLP, self).__init__()
        self.fc1 = nn.Linear(input_size, hidden_size)
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(hidden_size, output_size)
        self.softmax = nn.Softmax(dim=1)

    def forward(self, x):
        x = self.relu(self.fc1(x))
        x = self.softmax(self.fc2(x))
        return x

# 模型初始化
model = MLP(input_size=4, hidden_size=16, output_size=3)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)

# 假设输入
X = torch.randn(8, 4)
y = torch.randint(0, 3, (8,))

# 前向传播
outputs = model(X)
loss = criterion(outputs, y)

# 反向传播
optimizer.zero_grad()
loss.backward()
optimizer.step()

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

8️⃣ 优缺点总结

✅ 优点:

  • 表达能力强,能拟合复杂非线性关系

  • 通用性强,适用于分类和回归

  • 结合深度学习框架可快速实现

❌ 缺点:

  • 计算量大,对硬件要求高

  • 容易过拟合,需要正则化(Dropout、L2 等)

  • 不具备可解释性

9️⃣ 应用场景

  • 结构化数据预测(如金融、医疗数据)

  • 图像分类(基础结构,结合 CNN 使用)

  • 自然语言处理(结合嵌入层)

  • 时间序列预测(结合 RNN/Transformer)

📚 总结

全连接神经网络是深度学习的基础模块,通过层与层之间的全连接和非线性变换,可以学习复杂的映射关系。虽然计算开销大,但配合现代优化算法和正则化手段,可以在多种任务中取得优秀表现。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐