利用深度学习模型解决有监督问题时,如分类,回归,去噪等,一般思路如下:
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 ,此时同上。