【机器学习】 **函数和代价函数

【**函数】
如果没有**函数,那么神经网络模型就是一个线性模型;即便有再多的隐藏层,整个网络也只能等价于一个单层的神经网络。有了**函数以后,神经网络就能建模非线性模型,能广泛处理复杂的问题。

  • 阶跃函数:最早采用的**函数是阶跃函数,但其光滑性不好,所以实际中用光滑性较好的函数替代。
    【机器学习】 **函数和代价函数
  • Sigmoid函数:Sigmoid函数具有可微性和单调性,输出值的范围是(0,1),在物理意义上最接近生物神经元。但Sigmoid函数也有缺点,例如:饱和性。根据sigmoid函数的定义不难看出,当x趋向于两侧时,sigmoid函数的导数逐渐趋向于0,在参数更新中,需要代价函数关于参数的偏导数信息,这些偏导数中都会含有一个因子——**函数的导数,如果取sigmoid函数为**函数,一旦输入值落入饱和区域,那么sigmoid函数的导数值就会很小,甚至接近于0,从而使得代价函数关于参数的偏导数很小,参数就无法更新,还有导致向下一层传递的梯度非常小,这种现象称为梯度消失,会使得整个网络的参数难以得到有效的训练。
    【机器学习】 **函数和代价函数
  • 双曲正切函数(Tanh函数):也具有可微性和单调性,输出值的范围是(-1,1),输出均值是0。这就使得在某些计算中收敛速度比sigmoid函数快,减少迭代次数,不过双曲正切函数同sigmoid函数一样,也具有饱和性,会造成梯度消失。
    【机器学习】 **函数和代价函数
  • ReLU函数:ReLU函数是线性整流单元的简称,它是针对**函数饱和性的缺点而提出的。在正半轴上,ReLU函数不存在饱和问题,所以ReLU函数能保持梯度不衰减,缓解梯度消失问题。然而在小于0的区域同样会导致对应权重无法更新,称这种现象为“神经元坏死”,由于神经元坏死会影响神经网络的收敛性,所以提出了各种ReLU函数的变体。
    【机器学习】 **函数和代价函数

【代价函数】

  • 均方误差函数:形式简单、通俗易懂,就是真实值和预测值的平方差之和,但容易出现饱和现象,容易陷于局部极值,改进的方法是采用交叉熵作为代价函数。
    【机器学习】 **函数和代价函数
  • 交叉熵损失函数:多用于分类问题,交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。采用交叉熵作为代价函数后,如果误差越大,则修正项就越大,参数更新就越快,训练速度也越快。
    【机器学习】 **函数和代价函数
    假设概率分布p为期望输出(标签),概率分布q为实际输出,H(p,q)为交叉熵。
    【机器学习】 **函数和代价函数

参考资料:
1.https://blog.****.net/lilong117194/article/details/81542667
2.机器学习与人工智能-浙江大学-中国大学mooc