动手学深度学习 - 5.1 多层感知器(MLP)


📘 动手学深度学习 - 5.1 多层感知器(MLP)


5.1 多层感知器(MLP)

在前面的章节中,我们已经掌握了使用 softmax回归 训练简单线性分类器的基本方法。
现在,我们将目光转向更加复杂、功能更强大的模型类别 —— 深度神经网络,并从最经典的 多层感知器(MLP) 开始探索。


5.1.1 隐藏层


5.1.1.1 线性模型的局限性

线性模型假设输出是输入的简单加权求和,这种假设太过强硬。
例如:

  • 贷款预测中,收入与还款概率的关系并不是严格线性。

  • 体温预测健康,温度过高或过低都危险,这种关系是非单调的。

  • 图像分类中,单个像素的亮度变化不足以描述复杂的对象结构。

因此,简单的线性仿射变换不足以建模复杂的现实世界。

理论理解
  • 线性模型(如Softmax回归)假设输入和输出是简单的加权求和关系。

  • 这种假设过于强硬,无法表达现实世界复杂的非线性关系:

    • 贷款概率与收入的关系是非线性且饱和的。

    • 健康状况与体温关系呈倒U型,而不是单调递增或递减。

    • 图像分类(如猫狗识别)无法只靠单像素亮度变化建模。

因此,仅靠线性模型难以处理复杂特征交互和上下文依赖问题

企业实战理解
  • 百度广告CTR预估中发现,仅靠简单线性模型(如LR)无法捕捉复杂特征交互,因此引入了深度网络(如DeepFM)。

  • 字节跳动抖音推荐系统,在早期曾用浅层线性模型,后转向深度学习(Deep Interest Network)建模复杂兴趣演化。

  • Google AutoML发展史上,早期也尝试过扩展特征线性模型,但最终转向非线性搜索空间(DNN+NAS)。


5.1.1.2 合并隐藏层

为了解决上述问题,我们引入隐藏层(Hidden Layer)

  • 将输入先通过一层或多层隐藏层非线性变换

  • 再通过输出层生成预测

这样的结构,就是所谓的 多层感知器(MLP)
如图5.1.1所示,一个MLP由输入层、隐藏层和输出层组成,每一层之间是全连接。

 

理论理解
  • 为了增强表达能力,引入了隐藏层(Hidden Layer)

  • 将输入经过一个或多个隐藏层非线性映射后,再输出结果。

  • 这种结构称为多层感知器(MLP)

  • 隐藏层使得神经网络可以自动学习到抽象的中间表示(representation)。

企业实战理解
  • OpenAI GPT-系列模型中,Transformer block实际上可以看作复杂版的MLP(Self-Attention + FFN),堆叠隐藏层构建复杂理解能力。

  • NVIDIA在图像识别(如ImageNet挑战)中用ResNet,实质上也是堆叠大量隐藏层提高表达力。

  • 华为MindSpore框架中,隐藏层堆叠是标准配置,以提升模型抽象与泛化能力。


5.1.1.3 从线性到非线性

如果我们只叠加仿射变换(线性变换+偏置),即使有很多层,本质上还是整体线性的。
为了真正增加模型的表达能力,我们需要在仿射变换后加上非线性激活函数

常见做法是,在每一层仿射之后应用激活,如ReLU。
这样才能打破线性,构建真正强大的非线性映射,从而解决复杂模式识别问题。

理论理解
  • 如果没有非线性,多个仿射变换叠加仍然是整体线性!

  • 必须在仿射变换后加上非线性激活函数,如ReLU,才能打破线性,提升模型复杂性。

  • 非线性是深度神经网络真正强大和必要的核心。

企业实战理解
  • Google DeepMind AlphaFold 在蛋白质结构预测中,通过多层带非线性的神经网络学习复杂空间关系。

  • 字节跳动内容推荐中,MLP子网络每一层都加ReLU,确保信息通过复杂非线性变换提升模型辨别力。

  • Amazon AWS广告投放系统也用ReLU激活来堆叠隐藏层,提升对广告点击行为的建模能力。


5.1.1.4 通用近似器

理论上,只要隐藏层节点足够多,单隐藏层神经网络就可以逼近任何函数(通用近似定理)。
不过:

  • 实际训练中,单层网络往往效率低下,需要巨量节点。

  • 深层(多层)网络,能够更高效、更优雅地表示复杂函数。

因此,现代深度学习强调“更深”而不是“更宽”。

 

理论理解
  • 理论上,单隐藏层网络只要节点足够多,就能逼近任何函数(通用近似定理)。

  • 但实际中,单层网络:

    • 需要非常多节点

    • 参数量爆炸

    • 训练困难

  • 因此,深层(多层)网络比宽层(巨量神经元)更高效、更实际。

企业实战理解
  • OpenAI CLIP模型通过堆叠深层Transformer模块学习复杂的文本-图像对应关系。

  • Google BERT 也是典型的深层结构(12层Transformer),而非单层巨宽网络。

  • 字节跳动西瓜视频内容理解也倾向于使用深而窄的网络设计,以便提高训练效率和部署速度。


5.1.2 激活函数

为了打破线性,我们在每一层使用激活函数(Activation Function),添加非线性。 


5.1.2.1 ReLU 函数

ReLU(Rectified Linear Unit) 是目前应用最广的激活函数。
定义非常简单:

  • 输入大于0,输出自身

  • 输入小于0,输出0

特点:

  • 简单高效

  • 计算量小

  • 缓解了早期神经网络中常见的梯度消失问题

ReLU的导数在正区间是1,负区间是0,0点处取左导数为0。

 

理论理解
  • ReLU(Rectified Linear Unit)是目前应用最广的激活函数。

  • 定义简单:输出=max(0,x)

  • 特点:

    • 保留正数,抑制负数

    • 计算简单

    • 有效缓解梯度消失问题

  • ReLU使得训练深层神经网络变得可行,是深度学习崛起的重要因素。

企业实战理解
  • NVIDIA Megatron-LM超大模型中广泛使用ReLU激活,保持训练稳定性。

  • **Google Vision Transformer(ViT)**虽然本体是Transformer结构,但内部FFN也使用ReLU作为激活。

  • 字节跳动AI Lab也大量使用ReLU构建轻量级和大型深度网络,兼顾性能与推理速度。


5.1.2.2 Sigmoid 函数

Sigmoid 将任意实数输入压缩到(0,1)之间,非常适合输出概率。

优点:

  • 直观,与概率解释吻合

缺点:

  • 大输入值下梯度接近0,容易导致梯度消失问题

  • 训练深层神经网络时不稳定

因此,现在Sigmoid主要用于输出层(如二分类问题),很少用于隐藏层。

 

理论理解
  • Sigmoid将输入压缩到(0,1),适合做概率输出。

  • 曾经在早期神经网络中流行,但存在:

    • 梯度消失问题

    • 饱和区间训练困难

  • 现代神经网络中,Sigmoid主要用于输出层(如二分类),而不用于隐藏层。

企业实战理解
  • OpenAI GPT系列输出层中,少数特殊任务使用Sigmoid作为二分类概率预测。

  • Google Cloud ML服务中,在某些多标签分类任务上使用Sigmoid输出多概率。

  • 华为MindSpore框架在二分类头部模块中仍保留Sigmoid激活选项。


5.1.2.3 Tanh 函数

Tanh(双曲正切) 也是一个压缩函数,但输出区间是(-1,1),中心对称于0。

特点:

  • 输出是零均值,更利于优化

  • 但同样在极端输入下梯度接近0,存在梯度消失问题

相比Sigmoid,Tanh稍微稳定一些,但在现代深度学习中仍常被ReLU取代。

 

理论理解
  • Tanh(双曲正切)把输入压缩到(-1,1),并且中心对称于0。

  • 在Sigmoid基础上改进,适合某些需要零均值特性的任务。

  • 但Tanh仍然存在梯度消失问题,训练深层网络效果不如ReLU。

企业实战理解
  • **OpenAI LSTM模型(如WaveNet生成器)**曾经广泛使用Tanh在循环神经网络中。

  • DeepMind RNN结构中也曾偏好Tanh以保证输出零均值。

  • 但在现今主流CNN/Transformer领域,Tanh逐渐被ReLU类激活取代。


5.1.3 总结与讨论

通过引入隐藏层激活函数,我们可以构建功能丰富、表达力强的深度网络。

总结本节要点:

  • 隐藏层增加了模型的非线性表达能力。

  • 激活函数是实现非线性的关键,ReLU因其简单高效成为主流。

  • 多层神经网络可以模拟非常复杂的函数关系。

  • 深度学习复兴的重要原因之一,就是激活函数(如ReLU)的改进。

值得注意的是,研究仍在继续,近年来还出现了如GELU、Swish等更先进的激活函数,进一步提升了深度网络的训练性能和效果。

理论理解
  • 引入隐藏层+激活函数,是深度学习区别于传统机器学习的根本。

  • ReLU极大缓解了梯度消失问题,是深度学习复兴的关键。

  • 激活函数的研究仍在继续,例如:

    • GELU(Gaussian Error Linear Unit)

    • Swish(x * sigmoid(x))

  • 新的激活函数不断带来更快收敛速度和更高准确率。

企业实战理解
  • **Google BERT改进版(e.g., ALBERT)**使用GELU作为默认激活,取得更好效果。

  • NVIDIA在DLSS 3.5图像生成中,部分模块使用Swish替代ReLU提升视觉质量。

  • OpenAI GPT-4内部自定义了类似Swish变体的激活函数,以优化大规模训练稳定性。


🎯 小结表

关键点内容
为什么引入隐藏层打破线性限制,学习复杂模式
多层感知器(MLP)输入 → 隐藏层(非线性)→ 输出
常见激活函数ReLU、Sigmoid、Tanh
深度网络表达力更深通常比更宽更有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值