sigmoid
sigmoid函数和tanh函数是研究早期被广泛使用的2种激活函数。两者都为S型饱和函数。
当sigmoid 函数输入的值趋于正无穷或负无穷时,梯度会趋近零,从而发生梯度弥散现象
。sigmoid函数的输出恒为正值,不是以零为中心的,这会导致权值更新时只能朝一个方向更新,从而影响收敛速度。
tanh激活函数是sigmoid 函数的改进版,是以零为中心的对称函数,收敛速度快,不容易出现 loss 值晃动,
但是无法解决梯度弥散的问题
。
2个函数的计算量都是指数级的,计算相对复杂。softsign 函数是 tanh 函数的改进版,为 S 型饱和函数,以零为中心,值域为(−1,1)。
公式
1 | # -*- coding: utf8 -*- |
交叉熵
有木有发现,伯努利分布加上log就是交叉熵。
另外其实可以理解交叉熵就是极大似然估计加上log。
如何解释梯度消失呢?
描述
梯度消失是指模型在反向传播的过程中,更上层模型获取到的梯度值越来越小,导致更上层的权重基本保持不变,导致整个模型无法正常收敛以及训练。
原因?
其出现原因在Xavier Glorot和Yoshua Bengio在2010年的一篇论文中阐述了一些观点,包含像当时流行的sigmoid激活函数以及均值为0标准差为1的权重初始化方案,每层输出的方差远大于输入的方差,随着网络的延伸,方差在每一层之后都会增加,直到激活函数在顶层达到饱和为止。而实际像simoid这种激活函数随x的增大其导数值趋向于0,导致在反向传播的过程中,基本没有什么可以传播回去。
解决方式?
他提出应该在每一层网络的输出的方差等于其输入的方差。但是除非该层具有相等数量的输入和神经元,否则这条条件无法满足,故提出一些这种方案,像Xavier初始化或者Glorot初始化。