交叉熵损失函数与最大似然估计的关系理解

一、softmax分类

对于一般的分类问题,已知一共 m m m组样本(sample),每组样本 n n n个特征(feature),令每组样本为列向量 x ( i ) ∈ R n \boldsymbol{x}^{(i)} \in R^n x(i)Rn i i i代表第 i i i组样本( i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m)。假设一共有 q q q种类别,我们可以通过一维的输出 y = 1 , 2 , . . . , q y=1,2,...,q y=1,2,...,q来表示不同的分类识别结果。但这种输出方式本质上是由连续回归问题转化而来,对于分类问题,我们有更合适的softmax分类模型。

softmax分类输出维数等于类别数 q q q,其中每个元素对应某特定分类的概率。对于各训练样本的标签 y ( i ) ∈ R q \boldsymbol{y}^{(i)} \in R^q y(i)Rq,我们将该样本真实分类对应元素令为1,其余元素令为0,便可将输出拓展为 q q q维。比如我们要对猫、狗、鸡进行分类,猫对应输出可写为 [ 1 0 0 ] \begin{bmatrix}1\\0\\0\end{bmatrix} 100,狗为 [ 0 1 0 ] \begin{bmatrix}0\\1\\0\end{bmatrix} 010,鸡为 [ 0 0 1 ] \begin{bmatrix}0\\0\\1\end{bmatrix} 001

对于我们根据样本 i i i得到的预测结果 y ^ ( i ) ∈ R q \hat{\boldsymbol{y}}^{(i)} \in R^q y^(i)Rq,我们通过以下算法将其各元素之和归一化为1。设原始输出为 o 1 , o 2 , . . . , o q o_1,o_2,...,o_q o1,o2,...,oq,归一化后的输出为 y ^ 1 , y ^ 2 , . . . , y ^ q \hat{y}_1,\hat{y}_2,...,\hat{y}_q y^1,y^2,...,y^q
y ^ 1 , y ^ 2 , . . . , y ^ q = softmax ( o 1 , o 2 , . . . , o q ) \hat{y}_1, \hat{y}_2,..., \hat{y}_q = \text{softmax}(o_1, o_2,..., o_q) y^1,y^2,...,y^q=softmax(o1,o2,...,oq)
其中
y ^ k = exp ⁡ ( o k ) ∑ i = 1 q exp ⁡ ( o i ) \hat{y}_k = \frac{ \exp(o_k)}{\sum_{i=1}^q \exp(o_i)} y^k=i=1qexp(oi)exp(ok)
这样我们可以把模型输出的各元素视为各类别的概率,其中最大的一项就可以取为我们的预测结果。比如上面分类猫、狗、鸡的问题,我们的模型输出为 [ 0.1 0.6 0.3 ] \begin{bmatrix}0.1\\0.6\\0.3\end{bmatrix} 0.10.60.3,便可认为预测分类为狗。

三、交叉熵损失函数

在训练过程中,我们需要一个损失函数(cost function)来衡量预测输出与实际标签之间的差异,并将该损失函数最小化来优化模型。我们可以像线性回归那样使用平方损失函数 ∥ y ^ ( i ) − y ( i ) ∥ 2 / 2 \|\boldsymbol{\hat y}^{(i)}-\boldsymbol{y}^{(i)}\|^2/2 y^(i)y(i)2/2。然而,想要预测分类结果正确,我们其实并不需要预测概率完全等于标签概率。例如,在图像分类的例子里,如果 y ( i ) = 3 y^{(i)}=3 y(i)=3,那么我们只需要 y ^ 3 ( i ) \hat{y}^{(i)}_3 y^3(i)比其他两个预测值 y ^ 1 ( i ) \hat{y}^{(i)}_1 y^1(i) y ^ 2 ( i ) \hat{y}^{(i)}_2 y^2(i)大就行了。即使 y ^ 3 ( i ) \hat{y}^{(i)}_3 y^3(i)值为0.6,不管其他两个预测值为多少,类别预测均正确。而平方损失则过于严格,例如 y ^ 1 ( i ) = y ^ 2 ( i ) = 0.2 \hat y^{(i)}_1=\hat y^{(i)}_2=0.2 y^1(i)=y^2(i)=0.2 y ^ 1 ( i ) = 0 , y ^ 2 ( i ) = 0.4 \hat y^{(i)}_1=0, \hat y^{(i)}_2=0.4 y^1(i)=0,y^2(i)=0.4的损失要小很多,虽然两者都有同样正确的分类预测结果。(该段主要引自《动手学深度学习》)

我们可以用如下交叉熵(cross entropy)损失函数改善上诉问题:
H ( y ( i ) , y ^ ( i ) ) = − ∑ j = 1 q y j ( i ) ln ⁡ y ^ j ( i ) H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right ) = -\sum_{j=1}^q y_j^{(i)} \ln \hat y_j^{(i)} H(y(i),y^(i))=j=1qyj(i)lny^j(i)
其中 y j ( i ) y_j^{(i)} yj(i)只有实际分类对应的一项为1,所以损失函数即为预测输出 y ^ ( i ) \boldsymbol{\hat y}^{(i)} y^(i)对应元素的负对数值:
H ( y ( i ) , y ^ ( i ) ) = − ln ⁡ y ^ y ( i ) ( i ) H(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}) = -\ln \hat y_{y^{(i)}}^{(i)} H(y(i),y^(i))=lny^y(i)(i)

对于所有 m m m组样本,交叉熵损失函数可定义为各样本损失函数之和:
ℓ ( Θ ) = ∑ i = 1 m H ( y ( i ) , y ^ ( i ) ) = − ∑ i = 1 m ln ⁡ y ^ y ( i ) ( i ) \ell(\boldsymbol{\Theta}) = \sum_{i=1}^m H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right )= -\sum_{i=1}^m \ln \hat y_{y^{(i)}}^{(i)} (Θ)=i=1mH(y(i),y^(i))=i=1mlny^y(i)(i)

其中 Θ \boldsymbol{\Theta} Θ代表模型参数。

四、最大似然估计

最大似然估计(Maximum Likelihood Estimation, MLE)是一种参数估计中点估计的方法。基本思想是通过选取合适的参数,使得当前已知样本的发生概率最大。为了求得该最大值,写出取得当前样本值的概率函数 L ( Θ ) L(\boldsymbol{\Theta}) L(Θ),该函数与模型参数 Θ \boldsymbol{\Theta} Θ有关,又被称为似然函数。对其求导可以得到似然函数取得最大值时的模型参数。

对于上面的分类问题,将模型预测输出各项看作各类别的概率,似然函数即为各样本对应类别的概率乘积:
L ( Θ ) = ∏ i = 1 m y ^ y ( i ) ( i ) L(\boldsymbol{\Theta})=\prod_{i=1}^m \hat y_{y^{(i)}}^{(i)} L(Θ)=i=1my^y(i)(i)
一般的似然函数为连乘形式,为了计算方便,常对其做取对数处理:
ℓ ( Θ ) = l n L ( Θ ) = ∑ i = 1 m ln ⁡ y ^ y ( i ) ( i ) \ell(\boldsymbol{\Theta})=lnL(\boldsymbol{\Theta})= \sum_{i=1}^m \ln \hat y_{y^{(i)}}^{(i)} (Θ)=lnL(Θ)=i=1mlny^y(i)(i)
根绝极大似然法,此处我们要求 ℓ ( Θ ) \ell(\boldsymbol{\Theta}) (Θ)取得最大值,等价于 − ∑ i = 1 m ln ⁡ y ^ y ( i ) ( i ) -\sum_{i=1}^m \ln \hat y_{y^{(i)}}^{(i)} i=1mlny^y(i)(i)取得最小值。将该式与上面的交叉熵损失函数相比较,可以看到形式完全相同。

你可能感兴趣的:(AI,算法,人工智能)