二、损失函数

2.1 损失函数的非凸性

  1. 在线性模型中,对于线性回归模型,可以直接求解出解析解。对于logistic回归或者SVM,其损失函数为凸的。

    凸优化算法可以保证全局收敛,而且理论上保证从任何一种参数出发都可以收敛。实际计算中,可能遇到数值稳定性问题。

  2. 神经网络和线性模型的最大区别是:神经网络的非线性导致大多数的损失函数都是非凸的。损失函数非凸导致两个问题:

    • 基于梯度的优化算法仅仅能够使得损失函数到达一个较小的值,而不是全局最小值。

    • 基于梯度的优化算法无法保证从任何一个初始参数都能收敛,它对于参数的初值非常敏感。

      对于神经网络:

      • 通常将所有的权重值初始化为小的随机数。

      • 通常将偏置初始化为零或者小的正值。

        不用负数是因为如果偏置的初始值为负,很可能导致某些神经元一直处于未激活状态。

2.2 代价函数的选取

  1. 深度学习的一个重要方面是代价函数的选取。

    • 代价函数给出的是单个样本的损失,损失函数是代价函数在所有样本上的和。
    • 通常神经网络的代价函数与传统模型(如线性模型)的代价函数相同。
  2. 大多数现代的神经网络采用最大似然准则,令代价函数为负的对数似然函数。因此损失函数为:

    二、损失函数 - 图1

    其中:

    • 二、损失函数 - 图2 为样本的经验分布:

      二、损失函数 - 图3

      二、损失函数 - 图4 为狄拉克函数,它仅在原点处非0,在其它所有位置都为 0 ,其在整个定义域上的积分为 1 。 二、损失函数 - 图5 为数据集 二、损失函数 - 图6 的大小。

    • 二、损失函数 - 图7 为对数据建立的模型, 二、损失函数 - 图8 为模型参数。 代价函数的具体形式取决于 二、损失函数 - 图9的形式,随不同的模型而改变。

      如: 二、损失函数 - 图10 ,则 二、损失函数 - 图11 ,常数项包含了高斯分布的方差,与 二、损失函数 - 图12 无关。

      因此可以看到:此时的最大似然估计等价于最小均方误差。

    • 二、损失函数 - 图13 其实就是样本的经验分布 二、损失函数 - 图14 与模型 二、损失函数 - 图15 的交叉熵 二、损失函数 - 图16

  3. 使用最大似然准则来导出代价函数的优势是:减轻了为每个模型设计代价函数的负担。一旦明确了一个模型 二、损失函数 - 图17 ,则自动地确定了一个代价函数 二、损失函数 - 图18

  4. 代价函数的梯度必须足够大且能够计算。

    • 如果代价函数非常平缓,则代价函数的梯度非常小。若梯度很小甚至消失,会导致求解模型参数的迭代过程无法推进。
    • 如果代价函数太大导致发生上溢出时,数值计算会出现问题。用负的对数似然函数作为代价函数可以避免这个问题。
  5. 均方误差和平均绝对误差这两种代价函数,在使用基于梯度的优化方法时,经常会产生非常小的梯度。

    这也是使用负的对数似然函数作为代价函数的一个重要原因。