损失函数--KL散度与交叉熵

损失函数

在逻辑回归建立过程中,我们需要一个关于模型参数的可导函数,并且它能够以某种方式衡量模型的效果。这种函数称为损失函数(loss function)。

损失函数越,则模型的预测效果越。所以我们可以把训练模型问题转化为最小化损失函数的问题。

​ 损失函数有多种,此次介绍分类问题最常用的交叉熵(cross entropy)损失,并从信息论贝叶斯两种视角阐释交叉熵损失的内涵。

K-L散度与交叉熵

  • 随机变量Xk种不同的取值:X1,X2,X3XkX^1, X^2, X^3 ,…… ,X^k。 记X的取值XiX^i 的概率为p(X=XiX^i) ,简写为P(XiX^i) .

  • 克劳德**·** 香农定义了信息的信息量:

    I(X=Xi)=log1p(Xi)=logp(Xi) I(X = X^i) = \log \frac{1}{p(X^i)} = - \log p(X^i)

    注:其中对数可以以任意合理数为底,如 2、e。使用不同的底数所得到的信息量之间相差一个常系数。

    若以2为底,信息量的单位是bit ,I(X=XiX^i )是X = XiX^i 这条信息的自信息量(self-information) .

  • 自信息量I随着概率P(XiX^i)的图像变化如下:

损失函数--KL散度与交叉熵

自信息量背后的含义:信息中事件发生的概率越小,则信息量越大。

举例:假如有人告诉你即将开奖的**中奖号码是777777777,这条信息的价值很高,类似事情发生概率极小。假如有人告诉你明天太阳会升起,这件事对你来说价值很低,但是他发生的概率却很高。所以我们会觉得**的开奖号信息量很大,太阳升起的信息量较小。

  • 我们令信息源X 取不同的值 x1,x2,x3...xkx^1, x^2 , x^3 ... x^k 的概率分布分别为p(x1)p(x2)p(x3)...p(xk)p(x^1) p(x^2) p(x^3) ... p(x^k) .

  • 定义信息源 X的熵(entropy)为:

    H§ = i=1KP(xi)log1P(xi)=i=1KP(xi)logP(xi)\sum_{i=1}^K P(x^i) \log \frac{1}{P(x^i)} = - \sum_{i=1}^K P(x^i)\log P(x^i)

  • 信息源由概率分布p描述,s所以熵是p的函数,熵的概念来自热力学。H§又称平均信息。

  • 根据公式我们可以看出,H§是将X所有取值的自信息量以概率为权重取平均。

  • 对于两个概率分布p和q, 定义p和q的K-L散度(kullback-leibler divergence)是:

    KLD(pq)=i=1kp(xi)logp(xi)q(xi)=i=1kp(xi)logq(xi)H(p)KLD(p||q) = \sum_{i=1}^k p(x^i) \log \frac{p(x^i)}{q(x^i)} = - \sum_{i=1}^k p(x^i) \log q(x^i) - H(p)

  • K-L散度是logp(xi)q(xi)\log \frac{p(x^i)}{q(x^i)} 在分布p上的期望。(注:KLD(p||q) \neq KLD(q||p))

  • 根据上述公式我们可以发现,当p(xi)q(xi)p(x^i)和q(x^i) 相等时,logp(xi)q(xi)=0\log \frac{p(x^i)}{q(x^i)} =0 所以KLD散度等于0。所以说两个同分布的KLD散度为0,所以我们一般使用KLD描述两个概率分布之间的相似度。

  • 我们定义交叉熵:

    H(p,q)=i=1kp(xi)logq(xi)H(p,q) = - \sum_{i=1}^k p(x^i) \log q(x^i)

  • 所以根据上述两式,有:

    H(p,q)=KLD(pq)+H(p)H(p,q) = KLD(p||q) + H(p)

  • 分布p和q的交叉熵等于它们的K-L散度加上p的熵。现在假设分布pp固定,则H(p,q)H(p,q)KLD(pq)KLD(p||q)之间只相差一个常数H(p)H(p),所以此时H(p,q)H(p,q)也可以被用来描述两个分部之间的相似程度。即:H(p,q)H(p,q)越小,p,q越相似。

  1. 对于一个训练样本{xi,yi{x^i, y^i} } 可以标签yiy^i 给出了一个类别的概率分布:

  2. P(xip)=yiP(xin)=1yi,i=1,MP(x^i \in p) = y^i , P(x^i \in n) = 1-y^i , i= 1,……,M

  3. 我们将逻辑回归模型的输出看做一个分布Q:

  4. Q(xip)=11+ebWTxi,Q(xin)=11+eb+wTxi,i=1,MQ(x^i \in p) = \frac{1}{1+e^{-b-W^Tx^i}} , Q(x^i \in n) = \frac{1}{1+e^{b+w^Tx^i}} , i=1,……,M

  5. 所以我们希望回归模型的准确率尽可能地高,即是希望分布Q与训练集P的分布尽可能地相似,由此我们可以使用交叉熵来描述输出分布于标签分布的相似度,也就是我们所说的损失函数(loss)

loss(w,bxi,yi)=yilog11+ebWTxi(1yi)log11+eb+wTxii=1,...,Mloss(w,b|x^i,y^i) = -y^i\log \frac{1}{1+e^{-b-W^Tx^i}} - (1-y^i)\log\frac{1}{1+e^{b+w^Tx^i}} i= 1,...,M

上式是模型在一个样本的交叉熵,其值越小,预测分布于标签给出分布越相似。

loss(w,bxi,yi)=1Mi=1M(yilog11+ebWTxi(1yi)log11+eb+wTxi)i=1,...,Mloss(w,b|x^i,y^i) = \frac{1}{M} \sum_{i=1}^M( -y^i\log \frac{1}{1+e^{-b-W^Tx^i}} - (1-y^i)\log\frac{1}{1+e^{b+w^Tx^i}} )i= 1,...,M

上式是样本的平均交叉熵,作为模型的损失函数。