激活函数

首先激活函数肯定非线性连续的。
激活函数_第1张图片

一.sigmoid

隐患1:饱和神经元导致梯度消失:

激活函数_第2张图片
如果此时输入sigmoid的 x x x值为10或者-10等, x x x是位于饱和区的数,该位置sigmoid的梯度(斜率)是几乎为0的正数,即在此处 ∂ σ ∂ x ≈ 0 ( 正 ) \frac{\partial \sigma}{\partial x }\approx 0(正) xσ0(),会使得链式求导法则中上游的梯度 ∂ L ∂ δ \frac{\partial L}{\partial \delta} δL与该层的偏导数 ∂ σ ∂ x \frac{\partial \sigma}{\partial x } xσ相乘之后得到一个及其小的数——梯度消失,这样会使得本层训练修正 w w w的效果很差,进而传到下一层就更凉凉了。。。
激活函数_第3张图片
解决办法:最好使得第一此使用sigmoid层的输入的数据介于0附近(如先归一化,再去均值操作),经过sigmoid输出的数也肯定介于0-1之间的,然后再往后传……也要注意规避这一问题。

隐患2:不是以0为中心的函数

如果神经元的输入 x x x都是正数:会导致权值系数的变化趋势很粗糙很不理想(参CS321 p14)
假设 x x x由5个变量组成,当前层的神经元的数量是3个,激活层对第 j j j个神经元的执行的操作如下:
σ = f ( ∑ i 5 w j , i ∗ x i + b j ) \sigma =f(\sum_i^5 w_{j,i}*x_{i}+b_{j}) σ=f(i5wj,ixi+bj)

a = ∑ i 5 w j , i ∗ x i + b j a=\sum_i^5 w_{j,i}*x_{i}+b_{j} a=i5wj,ixi+bj
由于sigmoid函数的偏导数恒大于0,所以 ∂ L ∂ a \frac{\partial L}{\partial a} aL的正负取决于 ∂ L ∂ σ \frac{\partial L}{\partial \sigma} σL的符号,同时梯度 ∂ a ∂ w j , x = x i \frac{\partial a}{\partial w_{j,x}}=x_{i} wj,xa=xi,如果所有的 x i x_{i} xi的值均为正,则会使得每个权值都朝着同时增大或者减小的方向变换,随着迭代的进行, w w w整体(等同于 w w w的均值)的变化趋势呈现上升或者下降,但我们并不太关心整体,而需要的是 w w w本身里面的每个元素根据训练集做出不同方向的调整。
以标准的DNN网络为例子,假设当前层输入的变量是5个,当前层神经元的数量是3个,则当前层的权值系数是一个3行5列的二维矩阵( W X + b WX+b WX+b)。为了形象说明这个问题的严峻性,我们简化模型,假设模型需要训练的参数只有 w 0 w_{0} w0 w 1 w_{1} w1,假设合理的变化趋势是 w 1 w_{1} w1下降,而 w 0 w_{0} w0上升,理想变化趋势如下图绿色线所示( w 1 w_{1} w1下降的同时 w 0 w_{0} w0上升),但是由于 x x x的恒大于0的,导致 w 0 w_{0} w0 w 1 w_{1} w1同时上升和下降,很有可能在训练结束,无法收敛到理想位置。
激活函数_第4张图片
图片来自
根本原因就是sigmoid函数不是以0为中心的:
当前激活层的输出是恒大于0的,也就是下一层中,如果对权值系数求导,会出现更新方向一致的问题。
解决办法: 激活前的数据去均值,这样就存在 x i < 0 x_{i}<0 xi<0,s使得不同的 w w w有不同的变化趋势。特别是针对图像数据,因为原始数据均为大于0的数据。

缺陷3:指数运算

相比与点积和卷积运算,这小case

你可能感兴趣的:(卷积细节)