Quora Question Pairs整理 - 理解交叉熵損失函數


引言

在Quora Question Pairs比賽中,我們的目標是判斷給定的兩個問題的語義信息是否相同(即是否為重復問題),使用的評估標准是log loss,交叉熵損失函數

\[\frac{1}{N}\sum_{i=0}^{N}{-y_i \log{\widehat{y}_i} - (1-y_i)\log{(1-\widehat{y}_i)}} \]

在這個比賽中,訓練集和測試集的類型存在不平衡的問題,訓練集中存在36%的重復問題,而測試集中僅有大約17%的重復問題。因此我們需要處理不平衡的情況。

一、交叉熵損失函數

交叉熵(cross entropy)是用來評估當前訓練得到的概率分布與真實分布的差異情況,減少交叉熵損失就是在提高模型的預測准確率。其離散函數形式

\[H(p, q) = - \sum_{\mathbf{x}}{p(\mathbf{x})\log{q(\mathbf{x})}} \]

這里,\(p(\mathbf{x})\) 是真實分布,\(q(\mathbf{x})\) 是通過數據計算的估計概率。

在二分類問題中,真實的目標要么是 \(1\),要么是 \(0\)\(y_i \in \{0,1\}\)

\(y_i = 1\) 時,

\[P(y_i=1\, |\, \mathbf{x}_i) = 1,P(y_i=0 \,| \,\mathbf{x}_i) = 0 \]

\(y_i = 1\) 時,

\[P(y_i=1\, |\,\mathbf{x}_i) = 0,P(y_i=0\, |\mathbf{x}_i) = 1 \]

而估計的概率

\[P(y_i=1\, |\, \mathbf{x}_i) = \widehat{y}_i,P(y_i=0\, |\,\mathbf{x}_i) = 1 - \widehat{y}_i \]

因此

\[H(p, q) = \frac{1}{N}\sum_{i=0}^{N}{-y_i \log{\widehat{y}_i} - (1-y_i)\log{(1-\widehat{y}_i)}} \]

二、從信息論的角度理解交叉熵損失函數

信息熵是在結果出來之前對可能產生的信息量的期望。

相對熵表示兩個概率分布的差異,即KL散度。當兩個分布相同時,相對熵的值為 \(0\),其余情況下都大於 \(0\)

\[D(p||q) = \int_{\mathbf{x}} {p(\mathbf{x}) log{\frac{p(\mathbf{x})}{q(\mathbf{x})}}} = -\int_{\mathbf{x}} p(\mathbf{x}) \log{q(\mathbf{x})}d\mathbf{x} - (-\int_{\mathbf{x}} p(\mathbf{x}) \log{p(\mathbf{x})}d\mathbf{x}) \]

前者是交叉熵,而后者是真實分布的信息熵。由於真實分布是固定的,所以信息熵的值是固定的。當交叉熵越小,相對熵則越小,估計的概率分布 \(q(\mathbf{x})\) 越接近真實的分布 \(p(\mathbf{x})\)

三、發現問題

交叉熵損失函數對 \(\widehat{y}_i\) 求導,得到

\[\frac{1-y_i}{1-\widehat{y}_i} = \frac{y_i}{\widehat{y}_i} \]

\(y_i = \widehat{y}_i\) 時可以得到損失函數的最小值。

當訓練和測試的數據集中的正例比例不同的時候會影響交叉熵的值。

交叉熵最小化等價於似然函數最大化。假設我們對每個標簽為正例的樣本都預測一個固定的概率,根據似然函數最大化,得到

\[\widehat{y}_i = \frac{the \, number\, of\, positive \, samples}{the \, number \, of \, samples} \]

如果測試集的正例的比例也接近這個值,那么在該假設情況下我們得到的損失函數最小。

但是,如果訓練集和測試集的正例比例不同,那么模型越復雜,越接近臨界值的樣本(越難判斷結果的樣本)就越容易受到訓練集中正例比例的影響而偏離真實分布。

注:有些損失函數基本不受訓練集和測試集的正例比例不同的影響,比如AUC。

四、處理方法

我們假設訓練集來自分布 \((X, Y)\),測試集來自分布 \((X', Y')\)

此時,我們假設兩個分布的唯一不同點就是他們碰巧有不同的正例比例,即

\[(X\,|\,Y=0) \sim (X'\,|\,Y'=0),\, \, \, \,(X\,|\,Y=1) \sim (X'\,|\,Y'=1) \]

即在類別確定的條件下,\(X\)\(X'\) 屬於同一分布。

在訓練集中:

\[P(y=1\,|\,\mathbf{x}) = \frac{P(\mathbf{x}\,|\,y=1)P(y=1)}{P(\mathbf{x})} = \frac{P(\mathbf{x}\,|\,y=1)P(y=1)}{P(\mathbf{x}\,|\,y=1)P(y=1)+P(\mathbf{x}\,|\,y=0)P(y=0)} = \frac{u}{u+v} \]

假設當 \(Y'=1\) 時,\(X'\)\(X\) 上以 \(\alpha\) 比例過抽樣,當 \(Y'=0\) 時,\(X'\)\(X\) 上以 \(\beta\) 比例過抽樣。則在測試集中:

\[P(y'=1\,|\,\mathbf{x}) = \frac{P(\mathbf{x}\,|\,y'=1)P(y'=1)}{P(\mathbf{x}\,|\,y'=1)P(y'=1)+P(\mathbf{x}\,|\,y'=0)P(y'=0)} = \frac{\alpha u}{\alpha u+\beta v} \]

聯立,得

\[P(y'=1\,|\,\mathbf{x}) = \frac{\alpha P(y=1\,|\,\mathbf{x})}{\alpha P(y=1\,|\,\mathbf{x})+\beta (1 - P(y=1\,|\,\mathbf{x}))} \]

可以解出 \(\alpha\)\(\beta\) 的值。最終損失函數變為

\[\frac{1}{N}\sum_{i=0}^{N}{-\alpha y_i \log{\widehat{y}_i} - \beta (1-y_i)\log{(1-\widehat{y}_i)}} \]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM