二、深度前馈网络——Part II

上接第一部分

4、隐藏单元

隐藏单元的设计是一个非常活跃的研究领域,并且还没有太多明确的指导性理论原则。整流线性单元(rectified linear units)是隐藏单元极好的默认选择。我们这里描述对于每种隐藏单元的一些基本直觉。先直觉认为某种隐藏单元可能表现良好,然后用它组成神经网路进行训练,最后用验证集来评估它的性能。

这里列出的一些隐藏单元可能并不是在所有输入点都是可微的。例如,整流线性单元 g ( z ) = m a x { 0 , z } g(z)=max\{0,z\} g(z)=max{ 0,z} z = 0 z=0 z=0 处不可微。这似乎使得 g g g 无法使用基于梯度的学习算法。然而在实践中,梯度下降对这些机器学习模型仍然表现得足够好。部分原因是神经网路训练算法通常不会达到代价函数的局部最小值,而是仅仅显著地减少它的值,所有代价函数的最小值对应于梯度未定义的点是可以接受的。不可微的隐藏单元通常只在少数点上不可微。在实践中,我们可以放心地忽略下面描述的隐藏单元激活函数的不可微性。

除非另有说明,大多数的隐藏单元都可以描述为接受输入向量 x \boldsymbol{x} x,计算仿射变换 z = W T x + b \boldsymbol{z=W}^T\boldsymbol{x+b} z=WTx+b,然后应用逐元素非线性函数 g ( z ) g(\boldsymbol{z}) g(z)。大多数隐藏单元的区别仅在于激活函数 g ( z ) g(\boldsymbol{z}) g(z) 的形式。

4.1、整流线性单元及其扩展

整流线性单元使用激活函数 g ( z ) = m a x { 0 , z } g(z)=max\{0,z\} g(z)=max{ 0,z}。整流线性单元易于优化,因为它们与线性单元非常类似。两者唯一区别在于整流线性单元在其一半的定义域上输出为零。这使得只要整流线性单元处于激活状态,它的导数都保持较大。整流操作的二阶导数几乎处处为0,并且在整流线性单元处于激活状态时,它的一阶导数处处为1。整流线性单元通常作用于仿射变换之上: h = g ( W T x + b ) \boldsymbol{h=}g(\boldsymbol{W}^T\boldsymbol{x+b}) h=g(WTx+b) b \boldsymbol{b} b 的所有元素设置为一个小的正值使得整流线性单元很可能初始时就对训练集中的大多数输入呈现激活状态。

整流线性单元的一个缺陷是它们不能通过基于梯度的方法学习那些使它们激活为零的样本。对整流线性单元进行扩展来保证它们能在各个位置都接收到梯度。下述三个扩展基于当 z i < 0 z_i<0 zi<0 时使用一个非零的斜率 α i \alpha_i αi h i = g ( z , α ) i = m a x ( 0 , z i ) + α i m i n ( 0 , z i ) h_i=g(\boldsymbol{z},\alpha)_i=max(0,z_i)+\alpha_imin(0,z_i) hi=g(z,α)i=max(0,zi)+αimin(0,zi)

  • 绝对值整流( absolute value rectification)固定 α i = − 1 α_i = −1 αi=1 来得到 g ( z ) = ∣ z ∣ g(z) = |z| g(z)=z。它用于图像中的对象识别,其中寻找在输入照明极性反转下不变的特征是有意义的。
  • 渗漏整流线性单元( Leaky ReLU)将 α i α_i αi 固定成一个类似 0.01 的小值。
  • 参数化整流线性单元( parametric ReLU)或者 PReLU 将 α i α_i αi 作为学习的参数。
  • maxout 单元( maxout unit):将 z 划分为每组具有 k 个值的组,每个maxout 单元则输出每组中的最大元素: g ( z ) i = m a x j ∈ G ( i )   z j g(\boldsymbol{z})_i=\underset{j\in\mathbb{G}^{(i)}}{max}\,z_j g(z)i=jG(i)maxzj其中 G ( i ) \mathbb{G}^{(i)} G(i) 是组 i i i 的输入索引集 { ( i − 1 ) k + 1 , . . . , i k } \{(i − 1)k + 1,...,ik\} { (i1)k+1,...,ik}。这提供了一种方法来学习对输入 x x x 空间中多个方向响应的分段线性函数。

maxout 单元可以学习具有多达 k 段的分段线性的凸函数。maxout 单元因此可以视为学习激活函数本身而不仅仅是单元之间的关系。使用足够大的 k, maxout 单元可以以任意的精确度来近似任何凸函数。比如,具有两块的 maxout 层可以学习实现和上述单元相同或不同的激活函数。每个 maxout 单元现在由 k 个权重向量来参数化,所以 maxout 单元通常比整流线性单元需要更多的正则化。如果训练集很大并且每个单元的块数保持很低的话,它们可以在没有正则化的情况下表现良好。

4.2、logistic sigmoid与双曲正切函数

在引入整流线性单元之前,大多数神经网络使用 logistic sigmoid 激活函数 g ( z ) = σ ( z ) g(z)=\sigma(z) g(z)=σ(z) 或者是双曲正切激活函数 g ( z ) = t a n h ( z ) g(z)=tanh(z) g(z)=tanh(z)。这两个激活函数之间的关系: t a n h ( z ) = 2 σ ( 2 z ) − 1 tanh(z)=2\sigma(2z)-1 tanh(z)=2σ(2z)1

sigmoid 单元在其大部分定义域内都饱和,这一广泛饱和性会使得基于梯度的学习变得非常困难,所以不鼓励将它们用作前馈网络中的隐藏单元。当使用一个合适的代价函数来抵消 sigmoid 的饱和性时(log抵消exp),它们作为输出单元可以与基于梯度的学习相兼容。

当必须要使用 sigmoid 激活函数时,双曲正切激活函数通常要比logistic sigmoid 函数表现更好。在 t a n h ( 0 ) = 0 tanh(0) = 0 tanh(0)=0 σ ( 0 ) = 1 2 σ(0) = \frac{1}{2} σ(0)=21 的意义上, t a n h tanh tanh 在 0 附近与单位函数更类似,只要网络的激活能够被保持地很小,训练深层神经网络 y ^ = ω T t a n h ( U T t a n h ( V T x ) ) \overset{\text{\textasciicircum}}{y}=\boldsymbol{\omega}^Ttanh(\boldsymbol{U}^Ttanh(\boldsymbol{V}^T\boldsymbol{x})) y^=ωTtanh(UTtanh(VTx)) 类似于训练线性模型 y ^ = ω T U T x \overset{\text{\textasciicircum}}{y}=\boldsymbol{\omega}^T\boldsymbol{U}^T\boldsymbol{x} y^=ωTUTx

5、架构设计

神经网路的架构是指:它应该具有多少单元,以及这些单元应该如何连接。大多数神经网络被组织成称为层的单元组。大多数神经网络架构将这些层布置成链式结构,其中每一层都是前一层的函数。在这种结构中,第一层由下式给出: h ( 1 ) = g ( 1 ) ( W ( 1 ) T x + b ( 1 ) ) \boldsymbol{h}^{(1)}=g^{(1)}(\boldsymbol{W}^{(1)T}\boldsymbol{x+b}^{(1)}) h(1)=g(1)(W(1)Tx+b(1))第二层由 h ( 2 ) = g ( 2 ) ( W ( 2 ) T h ( 1 ) + b ( 2 ) ) \boldsymbol{h}^{(2)}=g^{(2)}(\boldsymbol{W}^{(2)T}\boldsymbol{h}^{(1)}+\boldsymbol{b}^{(2)}) h(2)=g(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值