神经元架构
神经元接受来自n个其他神经元传递过来的输入信号,神经元将接受到的输入值按照某种权重加起来,叠加起来的刺激强度S可用公式表示:
S = w 1 x 1 + w 2 x 2 + . . . . . + w n x n = ∑ i = 1 n w i x i S = w_1x_1+w_2x_2+.....+ w_nx_n = \sum_{i=1}^nw_ix_i S=w1x1+w2x2+.....+wnxn=i=1∑nwixi
而这种输出,并非赤裸裸地直接输出,而是与当前神经元的阈值进行比较,然后通过激活函数(Activation Function)向外表达输出,在概念上这叫做感知机(Perceptron),其模型可用公式表示:
y = f ( ∑ i = 1 n w i x i − θ ) y = f(\sum_{i=1}^nw_ix_i-\theta) y=f(i=1∑nwixi−θ)
在这里的 θ \theta θ就是所谓的阈值(Threshold),f就是激活函数,y就是最终输出。
线性神经元
Linear Neuron 是指输出和输入呈线性关系的一种简单的模型。他实现的是输入信息的完全传到,在现实中,由于缺乏对信息的整合而基本不被使用,仅作为一个概念基础。
线型阈值神经元
能够实现简单地逻辑运算机制,就我个人而言目前还未在教材中看到应用。
Sigmoid 神经元
Sigmoid神经元可以使输出平滑的限制在0~1的范围内,靠近0的范围接近线性,远离0的区域为非线性,可以将实数压缩在0 ~1之间。
y = 1 1 + e − x y = \frac{1}{1+e^{-x}} y=1+e−x1
导数简单: y ∗ ( 1 − y ) y*(1-y) y∗(1−y)
Sigmoid 神经元的缺点:
- 函数在进入饱和区的时候会造成梯度消失。
- Sigmoid函数并非以零为中心。
Tanh 神经元
是sigmoid函数的继承,将实数“压缩”至-1~1的范围内,因此改进了sigmoid函数过于平缓的问题。
ReLU
整流线型单元(Rectified Linear Unit),又称为修正线型单元。
优点:
- 相比Sigmoid和Tanh,ReLU在随机梯度下降过程中能够明显加快收敛速度
- 相比Sigmoid和Tanh包含复杂算子,ReLU通过简单的阈值操作就能实现。
存在问题:ReLU在训练过程中可能是脆弱的并且出现死亡,流经ReLU神经元的大梯度可能导致权重更新到不再被任何数据激活的位置上。如果发生这种情况流经该神经元的梯度将永远为0,也就是说在训练过程中ReLU会不可逆转的死去,如果学习率设置的太高网络中将有高达40%的神经元不被激活,通过调整学习率可以限制着中情况的发生。
Maxout
公式: y = max k a k = m a x ( w 1 T x + b 1 , w 2 T x + b 2 , . . . . . , w n T x + b n ) y=\max_{k}a_k = max(w_1^Tx+b_1, w_2^Tx+b_2,.....,w_n^Tx+b_n) y=kmaxak=max(w1Tx+b1,w2Tx+b2