Neural-Networks

如何為一般回歸目標構建交叉熵損失?

  • November 22, 2018

在神經網絡文獻中,將分類交叉熵損失簡單地稱為“交叉熵”是一種常見的簡寫。然而,這個術語是模棱兩可的,因為不同的概率分佈具有不同的交叉熵損失函數。

那麼,一般來說,如何從目標變量的假設概率分佈轉變為為您的網絡定義交叉熵損失?該函數需要什麼作為輸入?(例如,one-hot 目標的分類交叉熵函數需要 one-hot 二元向量和概率向量作為輸入。)

一個好的答案將討論所涉及的一般原則,以及適用於

  • 單熱目標的分類交叉熵損失
  • 高斯分佈的目標分佈以及如何減少到通常的 MSE 損失
  • 一個不太常見的例子,例如伽馬分佈目標或重尾目標
  • 解釋最小化交叉熵和最大化對數似然之間的關係。

假設我們試圖推斷參數分佈 p(y|Θ(X)) , 在哪裡 Θ(X) 是一個向量輸出反向鏈接函數 [θ1,θ2,,θM] .

我們手頭有一個神經網絡,我們決定了一些拓撲結構。輸出層的輸出數量與我們想要推斷的參數數量相匹配(如果我們不關心所有參數,它可能會更少,正如我們將在下面的示例中看到的那樣)。

在此處輸入圖像描述

在隱藏層中,我們可以使用我們喜歡的任何激活函數。至關重要的是每個參數的輸出激活函數,因為它們必須與參數的支持兼容。

在此處輸入圖像描述

一些示例對應:

  • 線性激活: μ , 高斯分佈的均值
  • 物流激活: μ , 伯努利分佈的平均值
  • 軟加激活: σ , 高斯分佈的標準差, Gamma 分佈的形狀參數

交叉熵的定義:

H(p,q)=Ep[logq(y)]=p(y)logq(y)dy

在哪裡 p 是理想的真理,並且 q 是我們的模型。

經驗估計:

H(p,q)1NNi=1logq(yi)

在哪裡 N 是來自的獨立數據點的數量 p .

條件分佈版本:

H(p,q)1NNi=1logq(yi|Θ(Xi))

現在假設網絡輸出是 Θ(W,Xi) 對於給定的輸入向量 Xi 和所有網絡權重 W ,則預期交叉熵的訓練過程為:

Wopt=argminW1NNi=1logq(yi|Θ(W,Xi))

相當於網絡參數的最大似然估計。

一些例子:

μ=θ1:linear activation

σ=θ2:softplus activation*
loss=1NNi=1log[1θ2(W,Xi)2πe(yiθ1(W,Xi))22θ2(W,Xi)2]

在同方差下我們不需要 θ2 因為它不影響優化並且表達式簡化為(在我們丟棄不相關的常量之後):

loss=1NNi=1(yiθ1(W,Xi))2

μ=θ1:logistic activation

loss=1NNi=1log[θ1(W,Xi)yi(1θ1(W,Xi))(1yi)]
=1NNi=1yilog[θ1(W,Xi)]+(1yi)log[1θ1(W,Xi)]

yi0,1 .

α(shape)=θ1:softplus activation*

β(rate)=θ2:softplus activation*

loss=1NNi=1log[θ2(W,Xi)θ1(W,Xi)Γ(θ1(W,Xi))yθ1(W,Xi)1ieθ2(W,Xi)yi]

一些約束不能通過普通的神經網絡工具箱直接處理(但現在它們似乎做了非常高級的技巧)。這是其中一種情況:

μ1=θ1:logistic activation

μ2=θ2:logistic activation
μK=θK:logistic activation

我們有一個約束 θi=1 . 所以我們在將它們插入發行版之前修復它:

θi=θiKj=1θj

loss=1NNi=1log[ΠKj=1θi(W,Xi)yi,j]

注意 y 在這種情況下是一個向量。另一種方法是Softmax

*不幸的是,ReLU 並不是一個特別好的激活函數 (0,) 由於兩個原因。首先,它在左象限有一個死導數區域,這會導致優化算法陷入困境。其次,在恰好為 0 值時,許多分佈對於參數的值會變得奇異。出於這個原因,通常的做法是添加一個小值 ϵ 協助現成的優化器和數值穩定性。

正如@Sycorax Softplus 所建議的那樣,激活是一個更好的替代品,因為它沒有死派生區。

在此處輸入圖像描述

概括:

  1. 將網絡輸出插入分佈參數並獲取 -log,然後最小化網絡權重。
  2. 這相當於參數的最大似然估計。

引用自:https://stats.stackexchange.com/questions/378274