激活函数
1.1激活函数的作用
它主要被设置在每一层神经元之后,对神经元的输出做非线性变换。激活函数是实数到实数的映射,且几乎处处可导。没有激活函数,每层网络的变换都为线性变换,多层网络叠加的变换仍然是线性的,本质上与单层网络没有区别。从神经元的仿生学原理而言,神经元模仿的是生物神经元对于刺激的响应,激活函数最初承担的是以门限控制对给定程度的刺激神经元是否激活的作用。可以说,激活函数是深度学习得以存在的关键技术。
1.2 Sigmoid与Tanh
Sigmoid和Tanh两种激活函数各有优点,Sigmoid将神经元的输出映射到0到1的区间内,在许多场合可以当作概率解释,其物理意义也最接近生物神经元。Tanh将神经元输出映射到-1到1之间,具有关于原点对称的特性,这种特性对神经网络的优化有利。但两种激活函数都具有梯度消失的缺点,即函数在左右边缘区域导数接近于0,当输入落入左右边缘区(称为饱和区)时,会产生回传梯度消失的现象,不利于深层网络的训练。此外,两种激活函数都需要进行较多的指数运算,计算效率不高。目前,Sigmoid和Tanh在LSTM等循环神经网络中多有应用,主要用于充当内部门控函数。