二、损失函数
2.1 损失函数的非凸性
在线性模型中,对于线性回归模型,可以直接求解出解析解。对于
logistic
回归或者SVM
,其损失函数为凸的。凸优化算法可以保证全局收敛,而且理论上保证从任何一种参数出发都可以收敛。实际计算中,可能遇到数值稳定性问题。
神经网络和线性模型的最大区别是:神经网络的非线性导致大多数的损失函数都是非凸的。损失函数非凸导致两个问题:
基于梯度的优化算法仅仅能够使得损失函数到达一个较小的值,而不是全局最小值。
基于梯度的优化算法无法保证从任何一个初始参数都能收敛,它对于参数的初值非常敏感。
对于神经网络:
通常将所有的权重值初始化为小的随机数。
通常将偏置初始化为零或者小的正值。
不用负数是因为如果偏置的初始值为负,很可能导致某些神经元一直处于未激活状态。
2.2 代价函数的选取
深度学习的一个重要方面是代价函数的选取。
- 代价函数给出的是单个样本的损失,损失函数是代价函数在所有样本上的和。
- 通常神经网络的代价函数与传统模型(如线性模型)的代价函数相同。
大多数现代的神经网络采用最大似然准则,令代价函数为负的对数似然函数。因此损失函数为:
其中:
为样本的经验分布:
为狄拉克函数,它仅在原点处非0,在其它所有位置都为 0 ,其在整个定义域上的积分为 1 。 为数据集 的大小。
为对数据建立的模型, 为模型参数。 代价函数的具体形式取决于 的形式,随不同的模型而改变。
如: ,则 ,常数项包含了高斯分布的方差,与 无关。
因此可以看到:此时的最大似然估计等价于最小均方误差。
其实就是样本的经验分布 与模型 的交叉熵 。
使用最大似然准则来导出代价函数的优势是:减轻了为每个模型设计代价函数的负担。一旦明确了一个模型 ,则自动地确定了一个代价函数 。
代价函数的梯度必须足够大且能够计算。
- 如果代价函数非常平缓,则代价函数的梯度非常小。若梯度很小甚至消失,会导致求解模型参数的迭代过程无法推进。
- 如果代价函数太大导致发生上溢出时,数值计算会出现问题。用负的对数似然函数作为代价函数可以避免这个问题。
均方误差和平均绝对误差这两种代价函数,在使用基于梯度的优化方法时,经常会产生非常小的梯度。
这也是使用负的对数似然函数作为代价函数的一个重要原因。