交叉熵和相對熵(KL散度), 極大似然估計求loss, softmax多分類

看了一篇好文章, 講解交叉熵和相對熵, 之前就想弄懂, 今天仔細研究了一下.
文章鏈接: 交叉熵(Cross-Entropy)

  1. 信息量
    定義事件X=x0X=x_0發生時的信息量爲: 定義事件X=x0X=x_0發生時的信息量爲:
    I(x0)=log(p(x0))I(x_0)=−log(p(x_0)) 一個事件發生的概率越大,則它發生時所攜帶的信息量就越小,當p(x0)=1p(x_0)=1時,熵將等於0,表示該事件的發生不會導致任何信息量的增加.

  2. 不確定度
    對一個事件XX所有可能的發生結果x1,x2,...x_1, x_2,...帶來的額外信息量求期望E(I(x))E(I(x)),其結果就能衡量出這個事件XX的不確定度,稱爲熵(不確定度的量度). H(X)=xXp(x)log(p(x))H(X) = -\sum_{x\in X}p(x)log(p(x)) 舉個例子, A、B、C事件均爲0~1分佈, 正例發生的概率分別爲0.001, 0.1和0.5, 那麼HA(x)=[p(xA=0)log(p(xA=0))+(p(xA=1))log(p(xA=1))]=0.0114H_A(x) = -[p(x_A=0)log(p(x_A=0))+(p(x_A=1))log(p(x_A=1))] = 0.0114 HB(x)=[p(xB=0)log(p(xB=0))+(p(xB=1))log(p(xB=1))]=0.4690H_B(x) = -[p(x_B=0)log(p(x_B=0))+(p(x_B=1))log(p(x_B=1))] = 0.4690 HC(x)=[p(xC=0)log(p(xC=0))+(p(xC=1))log(p(xC=1))]=1H_C(x) = -[p(x_C=0)log(p(x_C=0))+(p(x_C=1))log(p(x_C=1))] = 1 這與我們的常識認知也是一致的, A事件中正例很有可能發生、B事件中正例基本有可能發生、C事件中正例和反例都有可能發生, ABC中到底是正例還是反例發生的不確定度越來越高. \newline

  3. 相對熵(KL散度)
    相對熵定義爲:DKL(pq)=Ep[logp(x)q(x)]=xXp(x)logp(x)q(x)=Hp(q)H(p)D_{KL}(p||q) = E_p[log\frac{p(x)}{q(x)}] = \sum_{x\in X}p(x)log\frac{p(x)}{q(x)} = H_p(q) - H(p) 它用來度量兩個分佈p(真實分佈),q(假設分佈)之間的距離. 表示當真實分佈爲p時, 假設分佈q的無效性. 當p=q時, 相對熵=0, 表示兩個分佈相等.
    解釋: Hp(q)H_p(q)表示在p分佈下, 用q進行編碼所需的bit數, H(p)H(p)表示分佈p的最優編碼bit數, 所以DKL(pq)D_{KL}(p||q)表示真實分佈爲p的前提下, 使用q分佈進行編碼相對於直接用p分佈進行編碼(最優編碼)所多出來的bit數(q相對p的無效性). 優化相對熵, 即等於優化假設分佈q來擬合真實分佈p.
    關於爲什麼H(p)H(p)爲什麼是分佈p的最優編碼數, 參考知乎"信息熵是什麼?"的回答, 同理可得Hp(q)H_p(q).

  4. 交叉熵(cross_entropy)
    交叉熵就是Hp(q)H_p(q):Hp(q)=DKL(pq)+H(p)=xXp(x)log(q(x))H_p(q) = D_{KL}(p||q)+H(p) = -\sum_{x\in X}p(x)log(q(x)) 因爲真實分佈p是確定的, H(p)H(p)爲一個常數, 優化Hp(q)H_p(q)就等於優化DKL(pq)D_{KL}(p||q), 所以在機器學習/深度學習中, 我們可以把交叉熵作爲損失函數進行優化, 從而讓假設分佈儘可能的接近真實分佈.
    在邏輯迴歸中:
    p:真實樣本分佈,服從參數爲p的0-1分佈,即X∼B(1,p)
    q:待估計的模型,服從參數爲q的0-1分佈,即X∼B(1,q)
    它們的交叉熵爲
    Hp(q)=xXp(x)log(q(x))=[plog(q)+(1p)log(1q)]=[ylog(hθ(x))+(1y)log(1hθ(x))] \begin{aligned} H_p(q) &= -\sum_{x\in X}p(x)log(q(x)) \\&= -[p * log(q) + (1-p) * log(1-q)] \\&= -[y * log(h_\theta(x)) + (1-y) * log(1-h_\theta(x))] \end{aligned}
    對所有樣本取均值:
    loss=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]loss = -\frac{1}{m} \sum_{i=1}^{m}[y^{(i)} * log(h_\theta(x^{(i)})) + (1-y^{(i)}) * log(1-h_\theta(x^{(i)}))]
    與通過極大似然估計方法求出來的loss結果是一致的.

  5. 極大似然估計求loss(二分類)
    二項 logistic regression模型的條件概率分佈:
    P(Y=1x)=hw(x)=exp(wx+b)1+exp(wx+b)P(Y=1|x) = h_w(x) = \frac{exp(w \cdot x + b)}{1 + exp(w \cdot x + b)}p(Y=0x)=1hw(x)=11+exp(wx+b)p(Y=0|x) = 1 - h_w(x) = \frac{1}{1 + exp(w \cdot x + b)}似然函數爲: i=1m[hw(xi)]yi[1hw(xi)]1yi\prod_{i=1}^m[h_w(x_i)]^{y_i}[1-h_w(x_i)]^{1-y_i}對數似然函數: L(w)=i=1m[yilog(hw(xi))+(1yi)log(1hw(xi))]L(w) = \sum_{i=1}^m[y_ilog(h_w(x_i)) + (1-y_i)log(1-h_w(x_i))]定義loss: loss=1mi=1m[yilog(hw(xi))+(1yi)log(1hw(xi))]loss = -\frac{1}{m}\sum_{i=1}^m[y_ilog(h_w(x_i)) + (1-y_i)log(1-h_w(x_i))] 梯度計算公式: Z=wx+bZ = w \cdot x + bLZ=dZ=y^y\frac{\partial L}{\partial Z} = dZ = \hat y - y

極大化對數似然函數求w^\hat w, 等於極小化lossloss

  1. softmax 多分類
    多項 logistic regression 模型的概率分佈:
    P(Y=kx)=exp(wkx)1+k=1K1exp(wkx),k=1,2,...,K1P(Y=k|x) = \frac{exp(w_k \cdot x)}{1 + \sum_{k=1}^{K-1}exp(w_k \cdot x)}, k = 1,2,..., K-1P(Y=Kx)=11+k=1K1exp(wkx)P(Y=K|x) = \frac{1}{1 + \sum_{k=1}^{K-1}exp(w_k \cdot x)}
    同樣可以通過極大似然估計或者交叉熵原理得到lossloss:
    單個數據:loss(y^,y)=j=1cyjlogy^jloss(\hat y, y) = -\sum_{j=1}^cy_jlog\hat y_j多個數據: loss=1mi=1mj=1cyj(i)logy^j(i)loss = -\frac{1}{m}\sum_{i=1}^m\sum_{j=1}^cy_j^{(i)}log\hat y_j^{(i)}梯度計算公式: LZ[L]=dZ[L]=y^y\frac{\partial L}{\partial Z^{[L]}} = dZ^{[L]} = \hat y - y
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章