y代表真实值,y_代表预测值,损失函数采用交叉熵损失函数如下
loss function:L(y,y_)=-(ylny_+(1-y)ln(1-y_))
一般更新参数的方式,我们梯度下降的方式,目的是使得损失函数最小,达到一个能够接受的局部最小值,当然如果能到达全局最小最好。
对损失函数的研究:
当y=1,y_=1 L=-ln1=0
当y=1,y_=0 L=无穷大
当y=0,y_=1 L=无穷大
当y=0,y_=0 L=0
由损失函数可知,想要使得函数变小,也就是对于正例
y=WTX+b
y_要变大,则更新权重W,使得W变大,负例y_要变小,更新权重W使得W变小
如果learn_rate设置过大,在遇到负例的时候,W会突然变的很小,会导致所有样本在某一结点处,全部输出为负数,
由图可知,当y_为负数时候,梯度为0,则在此处权重将不会得到更新,这样便导致了死亡节点
或许你会发现使用L2正则化,或者其他的梯度下降方式如动能,RMS ,Adam等 可以避免,笔者认为他们可以改变的原理还是因为这些算法使得w在一次更新中变化的缓和了,所以想要尽量避免死亡节点,最好的办法还是学习率不要设置太大。
在设置激活函数的时候,也可以试试其他的如上图 的右边两个,由图可知在抑制区的导数不为0,这也是一种避免死亡节点的手段。