深度学习中的损失函数

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

1 信息流forward,直到输出端

2 定义损失函数L(x,y|theta)

3 误差信号backpagation ,利用链式法则,求L(x,y|theta) 关于theta的梯度

4 利用最优化方法(例如随机梯度下降)进行参数更新

5 重复3,4  直到收敛

在步骤2中,会见到多种损失函数:

均方误差(error of mean square),最大似然 误差(maximum  likelihood estimate) ,最大后验概率,交叉熵,

(1)  均方误差是一种较早的损失函数的定义方法,它衡量的是两个分布对应维度的差异性之和,与它非常接近的是一种相似性度量标准"余弦角",则衡量的是两个分布整体的相似性,也就是把两个向量分别作为一个整体,计算出来的夹角作为其相似性大小的判断依据。

(2) 最大似然误差是从概率的角度,求解出能完美拟合训练样例的模型参数theta ,使得概率p(y|x,theta) 最大化.

(3) 最大化后验概率,即使概率p(theta |x,y) 最大化,实际上也等价于带正则化项的最大似然概率。它考虑了先验信息,通过对参数值的大小进行约束来防止“过拟合”;

(4) 交叉熵损失函数: 衡量的是两个分布p,q 的相似性,在给定集合上两个分布p和q的交叉熵的定义如下:

H(p,q) =Ep[-logq)]=H(p)+DKL(p||q)

其中,H(p) 是p的熵,DKL(pq)为交叉熵,对于离散化的分布p和q,

在机器学习中,p 表示样例的标签的真实分布,为确定值,故最小化交叉熵和最小化L 是等价的,只不过之间相差了一个常数,

值得一提的是:分类问题中,交叉熵的本质就是似然函数的最大化,

记带标签的样例(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+0y2)=-y1,显然此时交叉熵的最小化等价于似然函数的最大化:

(2) 对于多分类问题,假设p(x) =[0,0,0,...,1,0,0] ,q(x)=[y1,y2,y3,....y(k+2)] ,即表示真实样例标签为第k 类。

yk=p(y=k|x) 表示模型输出为第k类的概率,交叉熵H(p,q) =-(0*y1+0*y2+.....+1*yk+0*y(k+1)+0*y(k+2))=-yk ,此时同上。

你可能感兴趣的:(项目-深度学习)