【深度学习】— 多层感知机介绍、 隐藏层、从线性到非线性、线性模型的局限性

4.1 多层感知机

在第 3 节中,我们介绍了 softmax 回归,并实现了其从零开始的实现和基于高级 API 的实现,训练了分类器来识别 10 类服装图像。在此过程中,我们学习了如何处理数据、将输出转换为概率分布、并应用适当的损失函数来最小化损失。现在,我们将深入探索深度神经网络,这是本书的核心模型之一。

4.1.1 隐藏层

在 3.1.1 节中,我们介绍了仿射变换,它是一种带有偏置项的线性变换。回想一下 softmax 回归的模型架构,它通过单个仿射变换将输入直接映射到输出,再进行 softmax 操作。如果标签确实与输入相关,这种方法是足够的。但仿射变换的线性假设过于强烈。

线性模型的局限性

线性模型假设输入特征与输出之间的关系是单调的,例如收入增加会增加偿还贷款的概率,但这种关系不是线性的。处理这个问题的一种方法是对数据进行预处理,比如使用收入的对数作为特征。

然而,对于某些问题,线性模型的假设会完全失败。例如,分类图像中的猫和狗时,某个像素的强度并不能单独决定类别。图像的像素需要依赖上下文,像素之间的复杂交互使得线性模型难以处理。

引入隐藏层

为了解决线性模型的局限性,我们可以在网络中加入隐藏层,使其能够处理更复杂的函数关系。最简单的方法是堆叠多个全连接层,每一层的输出作为下一层的输入,最终生成输出。这种架构称为多层感知机(multilayer perceptron,MLP)。

下图展示了一个单隐藏层的多层感知机:
图4.1.1: 一个单隐藏层的多层感知机,具有5个隐藏单元
图4.1.1: 一个单隐藏层的多层感知机,具有5个隐藏单元

这个 MLP 有 4 个输入,3 个输出,隐藏层有 5 个隐藏单元。输入层不涉及计算,网络的计算只发生在隐藏层和输出层。这种网络共有 2 层,每层都是全连接的,每个输入都会影响隐藏层中的每个神经元,而隐藏层中的每个神经元又会影响输出层中的每个神经元。

然而,如 3.4.3 节所述,具有全连接层的 MLP 可能有大量参数,这会带来高计算成本。即使不改变输入或输出的大小,也需要在参数节约和模型效果之间进行权衡。

4.2 从线性到非线性

与之前的章节类似,我们使用矩阵 X ∈ R n × d \mathbf{X} \in \mathbb{R}^{n \times d} XRn×d 表示包含 n n n 个样本的小批量数据,其中每个样本有 d d d 个输入特征。对于具有 h h h 个隐藏单元的单隐藏层多层感知机(MLP),隐藏层的输出可以用 H ∈ R n × h \mathbf{H} \in \mathbb{R}^{n \times h} HRn×h 表示,称为隐藏表示(hidden representations)。隐藏层的权重和偏置分别为 W ( 1 ) ∈ R d × h \mathbf{W}^{(1)} \in \mathbb{R}^{d \times h} W(1)Rd×h b ( 1 ) ∈ R 1 × h \mathbf{b}^{(1)} \in \mathbb{R}^{1 \times h} b(1)R1×h,输出层的权重和偏置分别为 W ( 2 ) ∈ R h × q \mathbf{W}^{(2)} \in \mathbb{R}^{h \times q} W(2)Rh×q b ( 2 ) ∈ R 1 × q \mathbf{b}^{(2)} \in \mathbb{R}^{1 \times q} b(2)R1×q

单隐藏层多层感知机的输出 O ∈ R n × q \mathbf{O} \in \mathbb{R}^{n \times q} ORn×q 的计算如下:

在这里插入图片描述

线性组合的局限性

引入隐藏层后,模型需要跟踪和更新更多的参数。但这种设置并没有带来好处。原因在于隐藏单元是输入的仿射变换,而输出层也是对隐藏层的仿射变换。仿射变换的仿射变换仍然是仿射变换,这与原先的线性模型没有本质区别。

我们可以证明:对于任意权重值,可以将隐藏层合并为一个等价的单层模型,具有参数 W = W ( 1 ) W ( 2 ) \mathbf{W} = \mathbf{W}^{(1)}\mathbf{W}^{(2)} W=W(1)W(2) 和偏置 b = b ( 1 ) W ( 2 ) + b ( 2 ) \mathbf{b} = \mathbf{b}^{(1)}\mathbf{W}^{(2)} + \mathbf{b}^{(2)} b=b(1)W(2)+b(2),公式为:

在这里插入图片描述

引入非线性

为了让多层感知机的架构真正有效,我们需要在每个隐藏单元的仿射变换之后应用非线性激活函数(activation function) σ \sigma σ。激活函数的输出称为活性值(activations)。有了激活函数后,多层感知机就不再是简单的线性模型:

在这里插入图片描述

激活函数 σ \sigma σ 逐行作用于其输入,并且通常按元素操作,即它可以独立地计算每个活性值,无需查看其他隐藏单元的值。这样,非线性变换可以增强模型的表达能力。

堆叠更多隐藏层

为了构建更强大的模型,我们可以继续堆叠更多的隐藏层。例如:

H ( 1 ) = σ 1 ( X W ( 1 ) + b ( 1 ) ) , \mathbf{H}^{(1)} = \sigma_1(\mathbf{X}\mathbf{W}^{(1)} + \mathbf{b}^{(1)}), H(1)=σ1(XW(1)+b(1)),
H ( 2 ) = σ 2 ( H ( 1 ) W ( 2 ) + b ( 2 ) ) , \mathbf{H}^{(2)} = \sigma_2(\mathbf{H}^{(1)}\mathbf{W}^{(2)} + \mathbf{b}^{(2)}), H(2)=σ2(H(1)W(2)+b(2)),

每一层都可以增强模型的表达能力,使其能够捕捉到更复杂的函数关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

之墨_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值