05_多层感知机_多层感知机笔记

4. 多层感知机

  1. 多层感知机:最简单的深度网络,由多层神经元组成,每一层都与下面一层(从中接收输入)和上面一层(反过来影响当前层的神经元)完全相连
  2. 训练大容量模型时,面临着过拟合的风险

4.1. 多层感知机

4.1.1. 隐藏层

  1. 仿射变换:带有偏置项的线性变换(线性变换:线性空间V到其自身的线性映射)
4.1.1.1. 线性模型可能会出错
  1. 线性意味着单调假设:特征的任何增大都会导致模型输出增大(如果对应的权重为正),或者导致模型输出减少(如果对应的权重为负)
  2. 对于深度神经网络,使用观测数据来联合学习隐藏层表示和应用于该表示的线性预测器
4.1.1.2. 在网络中加入隐藏层

通过在网络中加入一个或多个隐藏层来克服线性模型的限制,使其能处理更普遍的函数关系类型

多层感知机(MLP):

  1. 最简单的方法是将许多全连接层堆叠在一起。每一层都输出到上面的层,直到生成最后的输出
  2. 把前 L−1 层看作表示,把最后一层看作线性预测器
  3. 输入层不涉及任何计算,因此使用此网络产生输出只需要实现隐藏层和输出层的计算
  4. 每个输入都会影响隐藏层中的每个神经元,而隐藏层中的每个神经元又会影响输出层中的每个神经元
  5. 具有全连接层的多层感知机的参数开销可能会高得令人望而却步, 即使在不改变输入或输出大小的情况下,也可能促使在参数节约和模型有效性之间进行权衡
4.1.1.3. 从线性到非线性
  1. 单隐藏层多层感知机:
    H = X W ( 1 ) + b ( 1 ) O = H W ( 2 ) + b ( 2 ) \begin{aligned} H & = XW^{(1)} + b^{(1)} \\ O & = HW^{(2)} + b^{(2)} \end{aligned} HO=XW(1)+b(1)=HW(2)+b(2)
    X ∈ R n × d X \in R^{n \times d} XRn×d表示 n n n个样本的小批量,每个样本具有 d d d个输入(特征)
    H ∈ R n × d H \in R^{n \times d} HRn×d表示隐藏层的输出(隐藏表示),具有 h h h个隐藏单元的单隐藏层发。在数学或代码中, H H H也称为隐藏层变量或隐藏变量
    隐藏层权重 W ( 1 ) ∈ R d × h W^{(1)} \in R^{d \times h} W(1)Rd×h,隐藏层偏置 b ( 1 ) ∈ R 1 × h b^{(1)} \in R^{1 \times h} b(1)R1×h
    输出层权重 W ( 2 ) ∈ R h × q W^{(2)} \in R^{h \times q} W(2)Rh×q,输出层偏置 b ( 2 ) ∈ R 1 × q b^{(2)} \in R^{1 \times q} b(2)R1×q,输出 O ∈ R n × q O \in R^{n \times q} ORn×q

  2. 隐藏单元由输入的仿射函数本身给出,而输出(softmax操作前)只是隐藏单元的仿射函数,仿射函数的仿射函数本身就是仿射函数(线性模型已经能够表示任何仿射函数)

  3. 为了发挥多层结构的潜力,在仿射变换之后对每个隐藏单元应用非线性的激活函数,激活函数的输出为激活值。一般来说有了激活值就不会将多层感知机退化成线性模型:
    H = σ ( X W ( 1 ) + b ( 1 ) ) O = H W ( 2 ) + b ( 2 ) \begin{aligned} H &= \sigma(XW^{(1)} + b^{(1)}) \\ O &= HW^{(2)} + b^{(2)} \end{aligned} HO=σ(XW(1)+b(1))=HW(2)+b(2)

  4. 由于 X X X中的每一行对应于小批量中的一个样本,出于记号习惯的考量,定义非线性函数 σ \sigma σ也以按行的方式作用于其输入,即一次计算一个样本

  5. 应用于隐藏层的激活函数通常不仅仅是按行的,而且也是按元素。 在计算每一层的线性部分之后,可以计算每个激活值,而不需要查看其他隐藏单元所取的值

  6. 为了构建更通用的多层感知机,可以通过堆叠多个隐藏层,从而产生更有表达能力的模型

4.1.1.4. 通用近似定理
  1. 多层感知机是通用近似器,即使是网络只有一个隐藏层,给定足够的神经元(可能非常多)和正确的权重,可以对任意函数建模,尽管实际中学习该函数是很困难的
  2. 通过使用更深(而不是更广)的网络,可以更容易地逼近许多函数

4.1.2. 激活函数

激活函数通过计算加权和并加上偏置来确定神经元是否应该被激活。它们是将输入信号转换为输出的可微运算。大多数激活函数都是非线性的

4.1.2.1. ReLU函数
  1. 线性整流单元,通俗地说,ReLU函数通过将相应的激活值设为0来仅保留正元素并丢弃所有负元素
    R e L U ( x ) = m a x ( x , 0 ) ReLU(x) = max(x,0) ReLU(x)=max(x,0)

  2. 当输入为负时,ReLU函数的导数为0,而当输入为正时,ReLU函数的导数为1

  3. 当输入值精确等于0时,ReLU函数不可导,默认使用左侧的导数,即当输入为0时导数为0,可以忽略这种情况,因为输入可能永远都不会是0

  4. ReLU函数图像
    在这里插入图片描述

  5. ReLU函数导数图像
    在这里插入图片描述

  6. 使用ReLU的原因是,它求导表现得特别好:要么让参数消失,要么让参数通过。这使得优化表现得更好,并且ReLU减轻了困扰以往神经网络的梯度消失问题

  7. 参数化ReLU,ReLU添加了一个线性项,因此即使参数是负的,某些信息仍然可以通过: p R e L U ( x ) = m a x ( 0 , x ) + α m i n ( 0 , x ) pReLU(x) = max(0,x) + \alpha min(0,x) pReLU(x)=max(0,x)+αmin(0,x)

4.1.2.2. sigmoid函数
  1. 对于一个定义域在 R R R中的输入, s i g m o i d sigmoid sigmoid函数将输入变换为区间 ( 0 , 1 ) (0, 1) (0,1)上的输出。因此,&sigmoid%通常称为挤压函数:它将范围 ( − i n f , i n f ) (-inf, inf) (inf,inf)中的任意输入压缩到区间 ( 0 , 1 ) (0, 1) (0,1)中的某个值
  2. s i g m o i d ( x ) = 1 1 + exp ⁡ ( − x ) sigmoid(x) = \frac{1}{1 + \exp(-x)} sigmoid(x)=1+exp(x)1
  3. sigmoid函数是一个自然的选择,因为它是一个平滑的、可微的阈值单元近似
  4. 将输出视作二分类问题的概率时,sigmoid仍然被广泛用作输出单元上的激活函数(你可以将sigmoid视为softmax的特例)
  5. sigmoid在隐藏层中已经较少使用,它在大部分时候已经被更简单、更容易训练的ReLU所取代
  6. s i g m o i d sigmoid sigmoid函数图像
    当输入接近0时,sigmoid函数接近线性变换
    在这里插入图片描述
  7. s i g m o i d sigmoid sigmoid函数的导数公式: d d x s i g m o i d ( x ) = exp ⁡ ( − x ) ( 1 + exp ⁡ ( − x ) ) 2 = s i g m o i d ( x ) ( 1 − s i g m o i d ( x ) ) \frac{d}{dx}sigmoid(x) = \frac{\exp(-x)}{(1 + \exp(-x))^2} = sigmoid(x)(1 - sigmoid(x)) dxdsigmoid(x)=(1+exp(x))2exp(x)=sigmoid(x)(1sigmoid(x))
  8. s i g m o i d sigmoid sigmoid函数导数图像
    当输入为0时,sigmoid函数的导数达到最大值0.25。而输入在任一方向上越远离0点,导数越接近0
    在这里插入图片描述
4.1.2.3. tanh函数
  1. tanh(双曲正切)函数将其输入压缩转换到区间 ( − 1 , 1 ) (-1, 1) (1,1)
  2. t a n h ( x ) = 1 − exp ⁡ ( − 2 x ) 1 + exp ⁡ ( − 2 x ) tanh(x) = \frac {1 - \exp(-2x)}{1 + \exp(-2x)} tanh(x)=1+exp(2x)1exp(2x)
  3. t a n h tanh tanh函数图像
    当输入在0附近时,tanh函数接近线性变换。函数的形状类似于sigmoid函数,不同的是tanh函数关于坐标系原点中心对称
    在这里插入图片描述
  4. t a n h tanh tanh函数导数: d d x t a n h ( x ) = 1 − t a n h 2 ( x ) \frac{d}{dx}tanh(x) = 1 - tanh^2(x) dxdtanh(x)=1tanh2(x)
  5. 当输入接近0时,tanh函数的导数接近最大值1。与我们在sigmoid函数图像中看到的类似,输入在任一方向上越远离0点,导数越接近0
  6. t a n h tanh tanh函数导数图像
    在这里插入图片描述

4.1.3. 小结

  1. 多层感知机在输出层和输入层之间增加一个或多个全连接的隐藏层,并通过激活函数转换隐藏层的输出
  2. 常用的激活函数包括ReLU函数、sigmoid函数和tanh函数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值