前馈神经网络-神经元

人工神经元(Artificial Neuron),简称神经元(Neuron),是构成神经网络的基本单元,其主要是模拟生物神经元的结构和特性,接受一组输入信号并产出输出。

生物学家在 20 世纪初就发现了生物神经元的结构。一个生物神经元通常具有多个树突和一条轴突。树突用来接受信息,轴突用来发送信息。当神经元所获得的输入信号的积累超过某个阈值时,它就处于兴奋状态,产生电脉冲。轴突尾端有许多末梢可以给其他个神经元的树突产生连接(突触),并将电脉冲信号传递给其它神经元。

1943 年,心理学家 McCulloch 和数学家 Pitts 根据生物神经元的结构,提出了一种非常简单的神经元模型,MP神经元[McCulloch and Pitts, 1943]。现代神经网络中的神经元和 M-P 神经元的结构并无太多变化。不同的是,MP神经元中的激活函数 f 为 0 或 1 的阶跃函数,而现代神经元中的激活函数通常要求是连续可导的函数。

假设一个神经元接受d个输入x1, x2, · · · , xd,令向量x = [x1; x2; · · · ; xd]来表示这组输入,并用净输入(Net Input)z ∈ R表示一个神经元所获得的输入信号 x 的加权和,

z=\sum_{i=1}^{d}w_ix_i+b\tag{4.1}
=W^TX+b\tag{4.2}

其中W = [w1;w2;··· ;wd] ∈ Rd是d维的权重向量,b ∈ R是偏置。
净输入 z 在经过一个非线性函数 f (·) 后,得到神经元的活性值(Activation) a,

a=f(z)\tag{4.3}

其中非线性函数f(·)称为激活函数(Activation Function)。

图4.1给出了一个典型的神经元结构示例。


激活函数 激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能
力,激活函数需要具备以下几点性质:

  1. 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以 直接利用数值优化的方法来学习网络参数。
  2. 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。
  3. 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。

下面介绍几种在神经网络中常用的激活函数。

4.1.1 Sigmoid 型激活函数

Sigmoid 型函数是指一类 S 型曲线函数,为两端饱和函数。常用的 Sigmoid 型
函数有 Logistic 函数和 Tanh 函数。

Logistic函数 Logistic函数定义为
\sigma=\frac{1}{1+exp(-x)}\tag{4.4}

Logistic 函数可以看成是一个“挤压”函数,把一个实数域的输入“挤压”到 (0, 1)。当输入值在 0 附近时,Sigmoid 型函数近似为线性函数;当输入值靠近两端时,对输入进行抑制。输入越小,越接近于0;输入越大,越接近于1。这样的特点也和生物神经元类似,对一些输入会产生兴奋(输出为 1),对另一些输入产生抑制(输出为 0)。和感知器使用的阶跃激活函数相比,Logistic 函数是连续可导的, 其数学性质更好。

因为 Logistic 函数的性质,使得装备了 Logistic 激活函数的神经元具有以下两点性质:

  1. 其输出直接可以看作是概率分布,使得神经网络可以更好地和统计学习模型进行结合。
  2. 其可以看作是一个软性门(Soft Gate),用来控制其它神经元输出信息的数量。

Tanh函数 Tanh函数是也一种Sigmoid型函数。其定义为

tanh(x)=\frac{exp(x)-exp(-x)}{exp(x)+exp(-x)}\tag{4.5}

Tanh 函数可以看作是放大并平移的 Logistic 函数,其值域是 (−1, 1)。

tanh(x)=2\sigma(2x)\tag{4.6}

图4.2给出了Logistic函数和Tanh函数的形状。Tanh函数的输出是零中心化的(Zero-Centered),而 Logistic 函数的输出恒大于 0。非零中心化的输出会使得其后一层的神经元的输入发生偏置偏移(Bias Shift),并进一步使得梯度下降的收敛速度变慢

4.1.1.1 Hard-Logistic 和 Hard-Tanh 函数

Logistic 函数和 Tanh 函数都是 Sigmoid 型函数,具有饱和性,但是计算开销较大。因为这两个函数都是在中间(0附近)近似线性,两端饱和。因此,这两个函数可以通过分段函数来近似。

以Logistic函数σ(x)为例,其导数为σ′(x) = σ(x)(1 − σ(x))。Logistic函数在0附近的一阶泰勒展开(Taylor expansion)为

g_l(x)≈\sigma(0)+x×\sigma'(0)\tag{4.7}
=0.25x+0.5\tag{4.8}

用分段来近似 Logistic 函数,得到

hard-logistic(x)=\begin{cases} 1 & g_l(x)\geq1 \\g_l & 0 <g_l(x) < 1 \\0 & g_l(x) \leq 0 \end{cases}\tag{4.9}
=max(min(g_l(x),1),0)\tag{4.10}
=max(min(0.25x+0.5,1))\tag{4.11}

同样,Tanh 函数在 0 附近的一阶泰勒展开为

g_t(x)=tanh(0)+x \times tanh'(0)\tag{4.12}
=x\tag{4.13}

这样Tanh函数也可以用分段函数hard-tanh(x)来近似。

hard-tanh(x)=max(min(g_t(x), 1), -1)\tag{4.14}
=max(min(x,1),-1)\tag{4.15}

图4.3给出了 hard-Logistic 和 hard-Tanh 函数两种函数的形状。


4.1.2 修正线性单元

修正线性单元(Rectified Linear Unit,ReLU)[Nair and Hinton, 2010],也叫
rectifier函数[Glorot et al., 2011],是目前深层神经网络中经常使用的激活函数。
ReLU 实际上是一个斜坡(ramp)函数,定义为

ReLU(x)=\begin{cases} x & x \geq 0 \\0 & x < 0 \end{cases}\tag{4.16}
=max(0, x)\tag{4.17}

优点 采用ReLU的神经元只需要进行加、乘和比较的操作,计算上更加高效。 ReLU 函数被认为有生物上的解释性,比如单侧抑制宽兴奋边界(即兴奋程度 也可以非常高)。在生物神经网络中,同时处于兴奋状态的神经元非常稀疏。人脑中在同一时刻大概只有1 ∼ 4%的神经元处于活跃状态。Sigmoid型激活函数会导致一个非稀疏的神经网络,而 ReLU 却具有很好的稀疏性,大约 50% 的神经元 会处于激活状态。

在优化方面,相比于 Sigmoid 型函数的两端饱和,ReLU 函数为左饱和函数, 且在x > 0时导数为1,在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。

缺点 ReLU函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,会影响梯度下降的效率。此外,ReLU神经元在训练时比较容易“死亡”。在训练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个 ReLU 神经元在所有的训练数据上都不能被激活,那么这个神经元自身参数的梯度永远都会是 0,在以后的训练过程中永远不能被激活。这种现象称为死亡 ReLU问题(Dying ReLU Problem),并且也有可能会发生在其它隐藏层。
在实际使用中,为了避免上述情况,有几种 ReLU 的变种也会被广泛使用。

4.1.2.1 带泄露的 ReLU

带泄露的ReLU(Leaky ReLU)在输入x < 0时,保持一个很小的梯度\gamma。这样当神经元非激活时也能有一个非零的梯度可以更新参数,避免永远不能被激活[Maas et al., 2013]。带泄露的ReLU的定义如下:

LeakyReLU(x)=\begin{cases} x & \mbox{if } x>0 \\ \gamma x & \mbox{if } x \leq 0 \end{cases}\tag{4.18}

=max(0,x)+\gamma min(0,x)\tag{4.19}

其中 \gamma 是一个很小的常数,比如 0.01。当 \gamma < 1 时,带泄露的 ReLU 也可以写为

LeakyReLU(x)=max(x, \gamma x)\tag{4.20}

相当于是一个比较简单的 maxout 单元。

4.1.2.2 带参数的 ReLU

带参数的ReLU(Parametric ReLU,PReLU)引入一个可学习的参数,不 同神经元可以有不同的参数[He et al., 2015]。对于第i个神经元,其PReLU的 定义为

PReLU_i(x)=\begin{cases} x & \mbox{if } x>0 \\ \gamma_i x & \mbox{if } x \leq 0 \end{cases}\tag{4.18}

=max(0,x)+\gamma_i min(0,x)\tag{4.19}

其中γi为x ≤ 0时函数的斜率。因此,PReLU是非饱和函数。如果γi = 0,那么 PReLU 就退化为 ReLU。如果 γi 为一个很小的常数,则 PReLU 可以看作带泄露 的 ReLU。PReLU 可以允许不同神经元具有不同的参数,也可以一组神经元共享 一个参数。

4.1.2.3 ELU

指数线性单元(Exponential Linear Unit,ELU)[Clevert et al., 2015]是一个近似的零中心化的非线性函数,其定义为

ELU(x)=\begin{cases} x & \mbox{if } x>0 \\ \gamma (exp(x)-1) & \mbox{if } x \leq 0 \end{cases}\tag{4.18}

=max(0,x)+min(0,\gamma(exp(x)-1))\tag{4.19}

其中 \gamma ≥ 0是一个超参数,决定x ≤ 0时的饱和曲线,并调整输出均值在0附近。

4.1.2.4 Softplus 函数

Softplus函数[Dugas et al., 2001]可以看作是rectifier函数的平滑版本,其 定义为

Softplus(x)=log(1+exp(x))\tag{4.25}

Softplus 函数其导数刚好是 Logistic 函数。Softplus函数虽然也有具有单侧抑制、
宽兴奋边界的特性,却没有稀疏激活性

图4.4给出了ReLU、Leaky ReLU、ELU以及Softplus函数的示例。

4.1.3 Swish 函数

Swish函数是一种自门控(Self-Gated)激活函数[Ramachandran et al., 2017],定义为

swish(x)=x \sigma (\beta x)\tag{4.26}

其中σ(·)为Logistic函数,β为可学习的参数或一个固定超参数。σ(·) ∈ (0,1)可以看作是一种软性的门控机制。当 σ(βx) 接近于 1 时,门处于“开”状态,激活函数的输出近似于 x 本身;当 σ(βx) 接近于 0 时,门的状态为“关”,激活函数的输出近似于 0。

图4.5给出了Swish函数的示例。当β = 0时,Swish函数变成线性函数x/2。 当β = 1时,Swish函数在x > 0时近似线性,在x < 0时近似饱和,同时具有一定的非单调性。当β → +∞时,σ(βx)趋向于离散的0-1函数,Swish函数近似为 ReLU 函数。因此,Swish 函数可以看作是线性函数和 ReLU 函数之间的非线性插值函数,其程度由参数 β 控制。

4.1.4 Maxout 单元

Maxout单元[Goodfellow et al., 2013]也是一种分段线性函数。Sigmoid型函数、ReLU 等激活函数的输入是神经元的净输入 z,是一个标量。而 maxout 单元的输入是上一层神经元的全部原始输入,是一个向量 x = [x1 ; x2 ; · · · , xd ]。

每个maxout单元有K个权重向量wk ∈ Rd和偏置bk (1 ≤ k ≤ K)。对于输 入x,可以得到K个净输入zk,1 ≤ k ≤ K。

z_k=W_k^TX+b_k\tag{4.27}

其中w_k = [w_{k,1},··· ,w_{k,d}]^T为第k个权重向量。

Maxout 单元的非线性函数定义为

maxout(X)=\max_{k\in[1,K]}(z_k)\tag{4.28}

Maxout 单元不单是净输入到输出之间的非线性映射,而是整体学习输入到 输出之间的非线性映射关系。Maxout 激活函数可以看作任意凸函数的分段线性 近似,并且在有限的点上是不可微的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354