深度学习损失函数

在利用深度学习模型解决有监督问题时,比如分类、回归、去噪等,我们一般的思路如下:

  • 1、信息流forward propagation,直到输出端;
  • 2、定义损失函数L(x, y | theta);
  • 3、误差信号back propagation。采用数学理论中的“链式法则”,求L(x, y | theta)关于参数theta的梯度;
  • 4、利用最优化方法(比如随机梯度下降法),进行参数更新;
  • 5、重复步骤3、4,直到收敛为止;

在第2步中,我们通常会见到多种损失函数的定义方法,常见的有均方误差(error of mean square)、最大似然误差(maximum likelihood estimate)、最大后验概率(maximum posterior probability)、交叉熵损失函数(cross entropy loss),下面我们就来理清他们的区别和联系。一般地,一个机器学习模型选择哪种损失函数,是凭借经验而定的,没有什么特定的标准。具体来说,
(1)均方误差是一种较早的损失函数定义方法,它衡量的是两个分布对应维度的差异性之和。说点题外话,与之非常接近的一种相似性度量标准“余弦角”,则衡量的是两个分布整体的相似性,也即把两个向量分别作为一个整体,计算出的夹角作为其相似性大小的判断依据,读者可以认真体会这两种相似性判断标准的差异;
(2)最大似然误差是从概率的角度,求解出能完美拟合训练样例的模型参数theta,使得概率p(y | x, theta)最大化;
(3)最大化后验概率,即使得概率p(theta | x, y)最大化,实际上也等价于带正则化项的最大似然概率(详细的数学推导可以参见Bishop 的Pattern Recognition And Machine Learning),它考虑了先验信息,通过对参数值的大小进行约束来防止“过拟合”;
(4)交叉熵损失函数,衡量的是两个分布p、q的相似性。在给定集合上两个分布p和q的cross entropy定义如下:
这里写图片描述
其中,H(p)是p的熵,Dkl(p||q)表示KL-divergence。对于离散化的分布p和q,
这里写图片描述
在机器学习应用中,p一般表示样例的标签的真实分布,为确定值,故最小化交叉熵和最小化KL-devergence是等价的,只不过之间相差了一个常数。
值得一提的是,在分类问题中,交叉熵的本质就是似然函数的最大化。证明如下:

记带标签的样例为(x, y), 其中x表示输入特征向量,y=[y1, y2, …, yc]表示真实标签的one-hot表示,y_=[y1, y2, …, yc]表示模型输出的分布,c表示样例输出的类别数,那么。
(1)对于二分类问题,p(x)=[1, 0],q(x)=[y1, y2],y1=p(y=1|x)表示模型输出的真实概率,交叉熵H(p, q)=-(1*y1+0*y2)=-y1,显然此时交叉熵的最小化等价于似然函数的最大化;
(2)对于多分类问题, 假设p(x)=[0, 0, 0, …, 1, 0, 0],q(x)=[y1, y2, y3, …, yk, y(k+1), y(k+2)],即表示真实样例标签为第k类,yk=p(y=k|x)表示模型输出为第k类的概率,交叉熵H(p,q)=-(0*y1+0*y2+0*y3+…+1*yk+0*y(k+1)+0*y(k+2) ) = -yk, 此时同上。

展开阅读全文

没有更多推荐了,返回首页