經典損失函數——交叉熵損失函數(cross-entropy loss function)

爲了更好的理解交叉熵的意義,先介紹一下相對熵的概念

1、相對熵

  • 基本概念
    相對熵又稱爲KL散度(Kullback–Leibler divergence),用來描述兩個概率分佈的差異性。假設有對同一變量xxq(x)q(x)p(x)p(x)兩個概率分佈,那麼兩者之間的相對熵可由以下定義:
    DKL(pq)=i=1Np(xi)log(p(xi)q(xi)) D_{K L}(p \| q)=\sum_{i=1}^{N} p\left(x_{i}\right) \log \left(\frac{p\left(x_{i}\right)}{q\left(x_{i}\right)}\right)
    對於實際應用,p(x)p(x)是目標分佈,q(x)q(x)是預測的匹配分佈。

  • 理解相對熵(參考
    因爲p(x)p(x)是目標分佈,所以用pp來表示該事件是最好的。但是現在用了q(x)q(x),多了一些不確定性因素,這個增加的信息量就是相對熵。

  • 性質
    相對熵有一個性質:兩個分佈差異越大,KL散度越大。實際應用需要兩個分佈儘可能的相等,於是就需要KL散度儘可能的小

  • 相對熵的非負性
    根據Jensen不等式,當ff是一個凸函數時,滿足以下函數:
    f(θ1x1++θnxn)θ1f(x1)++θnf(xn),0θi1,θ1++θn=1 f\left(\theta_{1} x_{1}+\ldots+\theta_{n} x_{n}\right) \leq \theta_{1} f\left(x_{1}\right)+\ldots+\theta_{n} f\left(x_{n}\right) ,0 \leq \theta_{i} \leq 1, \theta_{1}+\ldots+\theta_{n}=1
    對照相對熵的表達式,這裏做幾個映射關係:

Jensen不等式 相對熵
θi\theta_{i} p(xi)p(x_i)
xix_{i} q(xi)p(xi)\frac{q\left(x_{i}\right)}{p\left(x_{i}\right)}
f()f() log()-log()

根據上表中的關係得到下式:
DKL(pq)=i=1Np(xi)log(p(xi)q(xi))=i=1Np(xi)log(q(xi)p(xi))log(i=1Np(xi)q(xi)p(xi))=0 D_{K L}(p \| q)=\sum_{i=1}^{N} p\left(x_{i}\right) \log \left(\frac{p\left(x_{i}\right)}{q\left(x_{i}\right)}\right)=\sum_{i=1}^{N} p\left(x_{i}\right) \cdot-\log \left(\frac{q\left(x_{i}\right)}{p\left(x_{i}\right)}\right) \geq -\log \left(\sum_{i=1}^{N} p\left(x_{i}\right) \cdot \frac{q\left(x_{i}\right)}{p\left(x_{i}\right)}\right)=0
顯然,只有當q(x)q(x)=p(x)p(x)時,纔有最小值。

  • 與交叉熵的關係
    DKL(pq)=i=1Np(xi)log(p(xi)q(xi))=i=1Np(xi)logp(xi)i=1Np(xi)logq(xi)=H(p)+H(p,q) D_{K L}(p \| q)=\sum_{i=1}^{N} p\left(x_{i}\right) \log \left(\frac{p\left(x_{i}\right)}{q\left(x_{i}\right)}\right)=\sum_{i=1}^{N} p\left(x_{i}\right) \log p\left(x_{i}\right)-\sum_{i=1}^{N} p\left(x_{i}\right) \log q\left(x_{i}\right)=-H(p)+H(p, q)
    上式中的H(p,q)H(p, q),而當一個目標事件確定後,H(p)H(p)便爲一個常數,所以最小化相對熵的問題化簡成了計算H(p,q)H(p, q)的最小值。

2、交叉熵

  • 簡單概念
    交叉熵是信息熵論中的概念,它原本是用來估算平均編碼長度的。在深度學習中,可以看作通過概率分佈q(x)q(x)表示概率分佈p(x)p(x)的困難程度。其表達式爲:
    H(p,q)=i=1np(xi)log1q(xi)=i=1np(xi)logq(xi) H(p, q)=\sum_{i=1}^{n} p\left(x_{i}\right) \log \frac{1}{q\left(x_{i}\right)}=-\sum_{i=1}^{n} p\left(x_{i}\right) \log {q\left(x_{i}\right)}
  • 簡單性質
    交叉熵刻畫的是兩個概率分佈的距離,也就是說交叉熵值越小(相對熵的值越小),兩個概率分佈越接近(該說法需要證明)。
    下面將給出兩個具體樣例來直觀地說明通過交叉熵可以判斷預測答案和真實答案之間的距離。假設有個三分類問題,某個正確答案和一個經過softmaxsoftmax迴歸後的預測答案如下:
x1x_1 x2x_2 x3x_3
p(xi)p(x_i) 1 0 0
q1(xi)q_1(x_i) 0.5 0.4 0.1
q2(xi)q_2(x_i) 0.8 0.1 0.1

那麼p(x)p(x)q1(x)q_1(x)的交叉熵爲:
H((1,0,0),(0.5,0.4,0.1))=(1×log0.5+0×log0.4+0×log0.1)0.3 \mathrm{H}((1,0,0),(0.5,0.4,0.1))=-(1 \times \log 0.5+0 \times \log 0.4+0 \times \log 0.1) \approx 0.3
p(x)p(x)q2(x)q_2(x)的交叉熵爲:
H((1,0,0),(0.8,0.1,0.1))=(1×log0.8+0×log0.1+0×log0.1)0.1 \mathrm{H}((1,0,0),(0.8,0.1,0.1))=-(1 \times \log 0.8+0 \times \log 0.1+0 \times \log 0.1) \approx 0.1
從直觀上可以看到第二個預測的結果要優於第一個,並且通過計算交叉熵,結果也是一致的。

  • TensorFlow中實現交叉熵
cross_entropy = -tf.reduce_mean( y_ * tf.log(tf.clip.by_value(y, 1e-10, 1.0)))

其中y_代表正確結果,y代表預測結果。

3、Logistic迴歸風險函數與交叉熵

在Logistic迴歸任務中,常見的輸出定義爲:
y^=σ(wTx+b), where σ(z)=11+ez \widehat{y}=\sigma \left( {{w}^{T}}x+b \right),\text{ }where\text{ }\sigma \left( z \right)=\frac{1}{1+{{e}^{-z}}}
定義y=1y=1的例子的後驗概率爲
P(y=1x)=y^=σ(wTx+b) P(y=1|x)=\widehat{y}=\sigma \left( {{w}^{T}}x+b \right)
以及y=0y=0的例子的後驗概率爲
P(y=0x)=1y^=1σ(wTx+b) P(y=0|x)=1-\widehat{y}=1-\sigma \left( {{w}^{T}}x+b \right)
那麼可以定義後驗概率P(yx)P(y|x)如下:
P(yx)=y^y(1y^)(1y) P\left( y|x \right)={{\widehat{y}}^{y}}{{\left( 1-\widehat{y} \right)}^{\left( 1-y \right)}}
迴歸的目標應爲該後驗概率越大越好,根據最大似然估計,在所有樣本滿足獨立同分布的情況下,可以確定一組參數使得上述概率最大。

因爲loglog函數是單調遞增函數,所以求上述函數的最大化,等價於求log(P(yx))log(P(y|x))的最大化。

對上述概率對數化可得:
log(P(yx))=ylog(y^)+(1y)log(1y^)\log \left( P\left( y|x \right) \right)=y\log \left( \widehat{y} \right)+\left( 1-y \right)\log \left( 1-\widehat{y} \right)
即邏輯迴歸的目標是最大化上述函數。對於代價函數來說,一般都是最小化函數,所以可以增加一個負號。那麼,對於mm個樣本來說,代價函數即爲交叉熵函數:
J(w,b)=i=1m(ylogy^+(1y)log(1y^)) J\left( w,b \right)=-\sum\limits_{i=1}^{m}{\left( y\log \widehat{y}+\left( 1-y \right)\log \left( 1-\widehat{y} \right) \right)}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章