205_深度学习的非线性魔法:多层感知机(MLP)与激活函数全解析

如果神经网络只有线性层(Linear),那么无论叠加多少层,最终结果仍然是一个线性变换。为了让网络变"聪明",我们引入了隐藏层和激活函数

1. 什么是多层感知机(MLP)?

多层感知机在输入层和输出层之间增加了一个或多个隐藏层(Hidden Layers)

  • 线性堆叠的失效 :若无激活函数,等价于一个新的线性层
  • 非线性的引入 :在每层线性计算后加入非线性激活函数 ,公式变为 。这使得模型可以学习坐标系中扭曲、复杂的边界。

2. 三大核心激活函数

激活函数必须是非线性的。文件中重点提到了以下三种:

① ReLU (修正线性单元)

  • 特点:目前最受欢迎。x > 0时导数为 1,x < 0时导数为 0。
  • 优点:计算简单,有效缓解梯度消失问题。
  • 代码nn.ReLU()

② Sigmoid

  • 特点 :将输入映射到 区间。
  • 缺点 :在输入很大或很小时,梯度接近 0,容易导致梯度消失

③ Tanh (双曲正切)

  • 特点 :将输入映射到区间,输出以 0 为中心。

3. 代码实战:简洁实现多层感知机

文件演示了如何在 Fashion-MNIST 任务中加入一个拥有 256 个隐藏单元的层。

Python

复制代码
import torch
from torch import nn
from d2l import torch as d2l

# 1. 搭建 MLP 网络
# Flatten: 展平图像
# Linear(784, 256): 隐藏层,256个神经元
# ReLU: 激活函数,引入非线性
# Linear(256, 10): 输出层
net = nn.Sequential(
    nn.Flatten(),
    nn.Linear(784, 256),
    nn.ReLU(),
    nn.Linear(256, 10)
)

# 2. 初始化参数
def init_weights(m):
    if type(m) == nn.Linear:
        nn.init.normal_(m.weight, std=0.01)

net.apply(init_weights)

# 3. 设置训练超参数
batch_size, lr, num_epochs = 256, 0.1, 10
loss = nn.CrossEntropyLoss()
trainer = torch.optim.SGD(net.parameters(), lr=lr)

# 4. 加载数据并训练
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)

4. 关键超参数:隐藏单元个数

在代码中,我们将隐藏层设为 256

  • 为什么是 256? 这是一个超参数。隐藏单元越多,模型的表达能力越强,但也越容易过拟合(Overfitting)且计算量更大。
  • 设计准则:通常设置在输入维度(784)和输出维度(10)之间,且常用 2 的幂次方。

5. 总结:MLP 的三要素

  1. 隐藏层:提供模型深度。
  2. 激活函数:提供非线性动力。
  3. 超参数调整:通过调整层数和神经元个数来平衡模型的"欠拟合"与"过拟合"。

💡 学习小结

多层感知机是现代深度学习的基石。当你理解了非线性激活函数的重要性后,你也就理解了为什么深度学习能处理比传统算法复杂得多的任务。

相关推荐
触底反弹16 小时前
🔥 前端也能玩转 AI 流式输出!从二进制流到打字机效果,一篇讲透
javascript·人工智能·node.js
腾渊信息科技公司16 小时前
工业数据运维痛点根治方案:基于AI Agent的产线自动化台账系统落地
运维·人工智能·自动化·个人开发·ai编程
西安老张(AIGC&ComfyUI)16 小时前
第030章:ComfyUI视频制作LTX-2.3模型文生视频工作流详解(三)
人工智能·aigc·comfyui
苦猿的大模型日记17 小时前
Day25 | 模型量化横评 GPTQ vs AWQ vs GGUF vs INT8——同一个 Qwen3-8B 压四遍,谁还活着
人工智能
benchmark_cc17 小时前
如何用 Python + QuantDash 快速构建高胜率“配对交易(Pairs Trading)”策略?
开发语言·人工智能·python·pandas·量化交易·quantdash
深海鱼肝油ya17 小时前
小说自动生成系统(二)
人工智能·大模型·agent·智能体·自动化编程·小说生成系统
通问AI17 小时前
Apple Intelligence 国行备案深度技术解析:阿里千问如何被集成到苹果端侧AI架构
人工智能·架构
视***间17 小时前
算力赋能零售与创意新生态:视程空间Pandora,解锁线下场景智能化无限可能
人工智能·边缘计算·智慧零售·ai算力·视程空间·创意开发
冬奇Lab18 小时前
MCP 系列(08):企业治理——Registry、路由与可观测性
人工智能·llm·mcp
冬奇Lab18 小时前
每日一个开源项目(第161篇):Open Interpreter - 开源 AI 编程 Agent,用 Rust 重写,支持 Kimi、Qwen、DeepSeek
人工智能·开源·资讯