如何為一般回歸目標構建交叉熵損失?
在神經網絡文獻中,將分類交叉熵損失簡單地稱為“交叉熵”是一種常見的簡寫。然而,這個術語是模棱兩可的,因為不同的概率分佈具有不同的交叉熵損失函數。
那麼,一般來說,如何從目標變量的假設概率分佈轉變為為您的網絡定義交叉熵損失?該函數需要什麼作為輸入?(例如,one-hot 目標的分類交叉熵函數需要 one-hot 二元向量和概率向量作為輸入。)
一個好的答案將討論所涉及的一般原則,以及適用於
- 單熱目標的分類交叉熵損失
- 高斯分佈的目標分佈以及如何減少到通常的 MSE 損失
- 一個不太常見的例子,例如伽馬分佈目標或重尾目標
- 解釋最小化交叉熵和最大化對數似然之間的關係。
假設我們試圖推斷參數分佈 $ p(y|\Theta(X)) $ , 在哪裡 $ \Theta(X) $ 是一個向量輸出反向鏈接函數 $ [\theta_1,\theta_2,…,\theta_M] $ .
我們手頭有一個神經網絡,我們決定了一些拓撲結構。輸出層的輸出數量與我們想要推斷的參數數量相匹配(如果我們不關心所有參數,它可能會更少,正如我們將在下面的示例中看到的那樣)。
在隱藏層中,我們可以使用我們喜歡的任何激活函數。至關重要的是每個參數的輸出激活函數,因為它們必須與參數的支持兼容。
一些示例對應:
- 線性激活: $ \mu $ , 高斯分佈的均值
- 物流激活: $ \mu $ , 伯努利分佈的平均值
- 軟加激活: $ \sigma $ , 高斯分佈的標準差, Gamma 分佈的形狀參數
交叉熵的定義:
$$ H(p,q) = -E_p[\log q(y)] = -\int p(y) \log q(y) dy $$
在哪裡 $ p $ 是理想的真理,並且 $ q $ 是我們的模型。
經驗估計:
$$ H(p,q) \approx -\frac{1}{N}\sum_{i=1}^N \log q(y_i) $$
在哪裡 $ N $ 是來自的獨立數據點的數量 $ p $ .
條件分佈版本:
$$ H(p,q) \approx -\frac{1}{N}\sum_{i=1}^N \log q(y_i|\Theta(X_i)) $$
現在假設網絡輸出是 $ \Theta(W,X_i) $ 對於給定的輸入向量 $ X_i $ 和所有網絡權重 $ W $ ,則預期交叉熵的訓練過程為:
$$ W_{opt} = \arg \min_W -\frac{1}{N}\sum_{i=1}^N \log q(y_i|\Theta(W,X_i)) $$
這相當於網絡參數的最大似然估計。
一些例子:
- 回歸:具有異方差性的高斯分佈
$$ \mu = \theta_1 : \text{linear activation} $$ $$ \sigma = \theta_2: \text{softplus activation*} $$ $$ \text{loss} = -\frac{1}{N}\sum_{i=1}^N \log [\frac{1} {\theta_2(W,X_i)\sqrt{2\pi}}e^{-\frac{(y_i-\theta_1(W,X_i))^2}{2\theta_2(W,X_i)^2}}] $$
在同方差下我們不需要 $ \theta_2 $ 因為它不影響優化並且表達式簡化為(在我們丟棄不相關的常量之後):
$$ \text{loss} = \frac{1}{N}\sum_{i=1}^N (y_i-\theta_1(W,X_i))^2 $$
- 二進制分類:伯努利分佈
$$ \mu = \theta_1 : \text{logistic activation} $$ $$ \text{loss} = -\frac{1}{N}\sum_{i=1}^N \log [\theta_1(W,X_i)^{y_i}(1-\theta_1(W,X_i))^{(1-y_i)}] $$ $$ = -\frac{1}{N}\sum_{i=1}^N y_i\log [\theta_1(W,X_i)] + (1-y_i)\log [1-\theta_1(W,X_i)] $$
和 $ y_i \in {0,1} $ .
- 回歸:伽馬響應
$$ \alpha \text{(shape)} = \theta_1 : \text{softplus activation*} $$ $$ \beta \text{(rate)} = \theta_2: \text{softplus activation*} $$
$$ \text{loss} = -\frac{1}{N}\sum_{i=1}^N \log [\frac{\theta_2(W,X_i)^{\theta_1(W,X_i)}}{\Gamma(\theta_1(W,X_i))} y_i^{\theta_1(W,X_i)-1}e^{-\theta_2(W,X_i)y_i}] $$
- 多類分類:分類分佈
一些約束不能通過普通的神經網絡工具箱直接處理(但現在它們似乎做了非常高級的技巧)。這是其中一種情況:
$$ \mu_1 = \theta_1 : \text{logistic activation} $$ $$ \mu_2 = \theta_2 : \text{logistic activation} $$ … $$ \mu_K = \theta_K : \text{logistic activation} $$
我們有一個約束 $ \sum \theta_i = 1 $ . 所以我們在將它們插入發行版之前修復它:
$$ \theta_i' = \frac{\theta_i}{\sum_{j=1}^K \theta_j} $$
$$ \text{loss} = -\frac{1}{N}\sum_{i=1}^N \log [\Pi_{j=1}^K\theta_i'(W,X_i)^{y_{i,j}}] $$
注意 $ y $ 在這種情況下是一個向量。另一種方法是Softmax。
*不幸的是,ReLU 並不是一個特別好的激活函數 $ (0,\infty) $ 由於兩個原因。首先,它在左象限有一個死導數區域,這會導致優化算法陷入困境。其次,在恰好為 0 值時,許多分佈對於參數的值會變得奇異。出於這個原因,通常的做法是添加一個小值 $ \epsilon $ 協助現成的優化器和數值穩定性。
正如@Sycorax Softplus 所建議的那樣,激活是一個更好的替代品,因為它沒有死派生區。
概括:
- 將網絡輸出插入分佈參數並獲取 -log,然後最小化網絡權重。
- 這相當於參數的最大似然估計。