多层感知机(MLP)

前言

该文章用来记录本人在学习 《动手学深度学习》这本书的 4.1多层感知机一节的笔记。

多层感知机是在单层神经网络的基础上引入一个或多个隐藏层,使神经网络有多个网络层,并通过激活函数转换隐藏层的输出。如果多层感知机没有激活函数转换隐藏层的输出,那么多层感知机将退化成线性模型。为此,为了发挥多层架构的潜力,我们在仿射变换之后对每个隐藏单元应用非线性的激活函数。此外,为了构建更通过的多层感知机,我们可以叠加多个隐藏层,从而产生更有表达能力的模型。

多层感知机

什么是多层感知机?

多层感知机MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network):在单层神经网络的基础上引入一个或多个隐藏层,使神经网络有多个网络层,并通过激活函数转换隐藏层的输出,因而称为多层感知机。

在这里插入图片描述
这个多层感知机有4个输入3个输出,其隐藏层包含5个隐藏单元。输入层不涉及任何计算,因此使用此网络产生输出只需要实现隐藏层和输出层的计算。因此,这个多层感知机中的层数为2

注意,这两个层都是全连接的。每个输入都会影响隐藏层中的每个神经元,而隐藏层中的每个神经元又会影响输出层中的每个神经元。

从线性到非线性

引例

假设矩阵 X ∈ R n × d \mathbf{X}\in\mathbb{R}^{n\times d} XRn×d 来表示 n n n样本的小批量,其中每个样本具有 d d d输入特征
对于具有 h h h隐藏单元的单隐藏层多层感知机,用 H ∈ R n × h \mathbf{H}\in\mathbb{R}^{n\times h} HRn×h表示隐藏层的输出, H H H称为隐藏表示(也称为隐藏层变量或隐藏变量)。
因为隐藏层和输出层都是全连接的,所以我们有隐藏层权重 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
H = X W ( 1 ) + b ( 1 ) O = H W ( 2 ) + b ( 2 ) \begin{aligned}\mathbf{H}&=\mathbf{X}\mathbf{W}^{(1)}+\mathbf{b}^{(1)}\\\mathbf{O}&=\mathbf{H}\mathbf{W}^{(2)}+\mathbf{b}^{(2)}\end{aligned} HO=XW(1)+b(1)=HW(2)+b(2)
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),则
0 = ( X W ( 1 ) + b ( 1 ) ) W ( 2 ) + b ( 2 ) = X W ( 1 ) W ( 2 ) + b ( 1 ) W ( 2 ) + b ( 2 ) = X W + b \mathbf{0}=(\mathbf{X}\mathbf{W}^{(1)}+\mathbf{b}^{(1)})\mathbf{W}^{(2)}+\mathbf{b}^{(2)}=\mathbf{X}\mathbf{W}^{(1)}\mathbf{W}^{(2)}+\mathbf{b}^{(1)}\mathbf{W}^{(2)}+\mathbf{b}^{(2)}=\mathbf{X}\mathbf{W}+\mathbf{b} 0=(XW(1)+b(1))W(2)+b(2)=XW(1)W(2)+b(1)W(2)+b(2)=XW+b

无激活函数的情况

从引例可以看出,若多层感知机没有激活函数转换隐藏层的输出(即 H = X W ( 1 ) + b ( 1 ) \mathbf{H}=\mathbf{X}\mathbf{W}^{(1)}+\mathbf{b}^{(1)} H=XW(1)+b(1)),多层感知机退化成线性模型

有激活函数的情况

为了发挥多层架构的潜力,我们还需要一个额外的关键要素:在仿射变换之后对每个隐藏单元应用非线性的
激活函数
(activationfunction) σ σ σ

激活函数的输出(例如, σ ( ⋅ ) σ(·) σ())被称为活性值(activations)。

一般来说,有了激活函数,就不可能再将我们的多层感知机退化成线性模型
H = σ ( X W ( 1 ) + b ( 1 ) ) O = H W ( 2 ) + b ( 2 ) \begin{aligned}\mathbf{H}&=\sigma(\mathbf{X}\mathbf{W}^{(1)}+\mathbf{b}^{(1)})\\\mathbf{O}&=\mathbf{H}\mathbf{W}^{(2)}+\mathbf{b}^{(2)}\end{aligned} HO=σ(XW(1)+b(1))=HW(2)+b(2)

延伸

为了构建更通用的多层感知机,我们可以继续堆叠这样的隐藏层,例如 H ( 1 ) = σ 1 ( X W ( 1 ) + b ( 1 ) ) \mathsf{H}^{(1)}=\sigma_{1}(\mathbf{XW}^{(1)}+\mathbf{b}^{(1)}) H(1)=σ1(XW(1)+b(1)) H ( 2 ) = σ 2 ( H ( 1 ) W ( 2 ) + b ( 2 ) ) \mathsf{H}^{(2)}=\sigma_2(\mathbf{H}^{(1)}\mathbf{W}^{(2)}+\mathbf{b}^{(2)}) H(2)=σ2(H(1)W(2)+b(2)),一层叠一层,从而产生更有表达能力的模型。

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值