https://www.zhihu.com/question/65288314
知乎上第一条和第二条回答的不错
在利用深度学习模型解决有监督问题时,比如分类、回归、去噪等,我们一般的思路如下:
-
信息流forward propagation,直到输出端;
-
定义损失函数L(x, y | theta);
-
误差信号back propagation。采用数学理论中的“链式法则”,求L(x, y | theta)关于参数theta的梯度;
-
利用最优化方法(比如随机梯度下降法),进行参数更新;
-
重复步骤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_=[y_1, y_2, ..., y_c]表示模型输出的分布,c表示样例输出的类别数,那么,
(1)对于二分类问题,p(x)=[1, 0],q(x)=[y_1, y_2],y_1=p(y=1|x)表示模型输出为真的概率,交叉熵H(p, q)=-(1*y_1+0*y_2)=-y_1,显然此时交叉熵的最小化等价于似然函数的最大化; (2)对于多分类问题, 假设p(x)=[0, 0, 0, ..., 1, 0, 0],q(x)=[y_1, y_2, y_3, ..., y_k, y_(k+1), y_(k+2)],即表示真实样例标签为第k类,y_k=p(y=k|x)表示模型输出为第k类的概率,交叉熵H(p, q)=-( 0*y_1+0*y_2+0*y_3+...+1*y_k+0*y_(k+1)+0*y_(k+2) ) = -y_k, 此时同上。
网友评论