為什麼邏輯迴歸的損失函式是交叉熵?
前言
當前正在整理機器學習中邏輯迴歸的基礎和麵試內容,這裡有一個值得思考的問題與大家分享與討論。
微信:
概要
邏輯迴歸(logistic regression)在機器學習中是非常經典的分類方法,周志華教授的《機器學習》書中稱其為對數機率迴歸,因為其屬於對數線性模型。
在演算法面試中,邏輯迴歸也經常被問到,常見的面試題包括:
邏輯迴歸推導;
邏輯迴歸如何實現多分類?
SVM與LR的聯絡與區別?
邏輯迴歸反向傳播虛擬碼;
大家可以思考下能不能回答/推匯出,但這次討論的問題是:
❝ 為什麼邏輯迴歸損失函式是交叉熵?
❞
初看這個問題感覺很奇怪,但是其中的知識包含了LR的推導與理解。在我個人看來,可以從兩個角度看待這個問題:
【1】從極大似然估計的角度可以推匯出交叉熵;
【2】從KL散度(熵的角度)去理解(參考了[1]);
極大似然估計
對於邏輯迴歸,我們一般透過極大似然估計來求解引數
。
首先假設兩個邏輯迴歸的兩個條件機率:
學習時,採用極大似然估計來估計模型的引數,似然函式為:
對數似然函式(採用對數似然函式是因為上述公式的連乘操作易造成下溢)為:
對其求最大值,估計引數
:
再將其改為最小化負的對對數似然函式:
如此,就得到了Logistic迴歸的損失函式,即機器學習中的
「二元交叉熵」
(Binary crossentropy):
此時轉變為以負對數似然函式為目標函式的最最佳化問題,採用梯度下降法進行最佳化。
KL散度
KL散度這個概念知道的人可能相對極大似然估計更少一點,具體可以看我
文章。簡單來說,
「KL散度是衡量兩個機率分佈的差異」
。
邏輯迴歸模型最後的計算結果(透過sigmoid或softmax函式)是各個分類的機率(可以看做是各個分類的機率分佈)。那麼假設真實的機率分佈是
,估計得到的機率分佈是
, 這兩個機率分佈的距離如何去衡量?
在資訊理論中,
「相對熵」
,也就是KL散度可以衡量兩個機率分佈的差異性。具體公式為:
並且簡單轉化,可以得到:
其中對於
就是
「交叉熵」
,
是真實分佈的資訊熵,所以
KL散度 = 交叉熵 - 真實機率分佈的熵
因為交叉熵越大,KL散度越大,也可以用交叉熵來衡量兩個機率分佈之間的距離,所以邏輯迴歸使用交叉熵作為邏輯迴歸的損失函式。
總結
以上便是個人對這個問題的理解。