[損失函數(shù)]——負(fù)對數(shù)似然

閱讀本文可以了解如下內(nèi)容:

  1. 似然
  2. 似然估計
  3. 對數(shù)似然
  4. 負(fù)對數(shù)似然

1. 似然

在開始之前需要區(qū)分一個知識:似然(likelihood)和概率(probability)住拭。概率是一個事件發(fā)生的可能性溺忧,而似然指的是影響概率的未知參數(shù)秋麸。也就是說徊件,概率是在該未知參數(shù)已知的情況下所得到的結(jié)果潭辈;而似然是該參數(shù)未知,我們需要根據(jù)觀察結(jié)果旅赢,來估計概率模型的參數(shù)宛蚓。

用數(shù)學(xué)方法可以描述為:
假設(shè)X是離散隨機(jī)變量激捏,其概率質(zhì)量函數(shù)p依賴于參數(shù)\theta,則:
L(\theta|x)=p_{\theta}(x)=P_{\theta}(X=x)
其中L(\theta|x)為參數(shù)\theta的似然函數(shù)凄吏,x為隨機(jī)變量X的某一值缩幸。[1]

如果我們發(fā)現(xiàn):
L(\theta_{1}|x)=P_{\theta_{1}}(X=x)>P_{\theta_{2}}(X=x)=L(\theta_{2}|x)
那么似然函數(shù)就可以反映出這樣一個樸素推測:在參數(shù)\theta_{1}下隨機(jī)變量X取到x的可能性大于在參數(shù)\theta_{2}下隨機(jī)向量X取到x的可能性壹置。換句話說,我們更有理由相信表谊,相對于\theta_2钞护,\theta_{1}更有可能是該概率模型的真實參數(shù)。[2]

綜上爆办,概率(密度)表達(dá)給定\theta下樣本隨機(jī)向量X=x可能性难咕,而似然表達(dá)了給定樣本X=x下參數(shù)\theta_{1}(相對于另外的參數(shù)\theta_{2})為真實值的可能性。我們總是對隨機(jī)變量的取值談概率距辆,而在非貝葉斯統(tǒng)計的角度下余佃,參數(shù)是一個實數(shù)而非隨機(jī)變量,所以我們一般不談一個參數(shù)的概率跨算。

2. 最大似然估計(Maximum Likelihood Estimation, MLE)

假設(shè)我們有一個非常復(fù)雜的數(shù)據(jù)分布P_{data}(x)爆土,但是我們不知道該分布的數(shù)學(xué)表達(dá)形式,所以我們需要定義一個分布模型P_{G}(x;\theta)诸蚕,該分布由參數(shù)\theta決定步势。
我們的目標(biāo)是求得參數(shù)\theta使得定義的分布P_{G}(x;\theta)盡可能的接近P_{data}(x)

下面我們來看看最大似然估計如何操作:

  1. P_{data}(x)中采集m個樣本{x_{1},x_{2},...,x_{m}}
  2. 計算樣本的似然函數(shù)L=\prod_{i=1}^{m}P_{G}(x^{i};\theta)
  3. 求使得似然函數(shù)L最大的參數(shù)\theta:\theta^{*}=\arg \max _{\theta}\prod_{i=1}^{m} P_{G}(x^{i};\theta)

當(dāng)來自P_{data}(x)的樣本{x_{1},x_{2},...,x_{m}}P_{G}(x;\theta)分布模型出現(xiàn)的概率越高背犯,也就是\prod_{i=1}^{m}P_{G}(x^{i};\theta)越大坏瘩,P_{G}(x;\theta)P_{data}(x)越接近。[3]

3. 對數(shù)似然

在知道了最大似然估計之后就容易理解對數(shù)似然了漠魏。從公式可以看到倔矾,似然函數(shù)是很多個數(shù)相乘的形式:L=\prod_{i=1}^{m}P_{G}(x^{i};\theta)
然而很多數(shù)相乘并不容易計算柱锹,也不方便求導(dǎo)哪自。如果我們對它取對數(shù),連乘就會變成連加禁熏,計算起來要方便的多壤巷,求導(dǎo)也變得更加容易。
l(\theta)=\sum_{i=1}^{m}\log (P_{G}(x^{i};\theta))
這樣一來就變成了我們非常熟悉的求極值過程匹层,\theta為自變量隙笆,我們需要找到某一個\theta锌蓄,使得l(\theta)最大升筏。只需對\theta求導(dǎo)然后令導(dǎo)數(shù)等于0即可。
最大似然估計的一般步驟如下:
(1) 寫出似然函數(shù);
(2) 對似然函數(shù)取對數(shù),得到對數(shù)似然函數(shù);
(3) 求對數(shù)似然函數(shù)的關(guān)于參數(shù)組的偏導(dǎo)數(shù),并令其為0,得到似然方程組;
(4) 解似然方程組,得到參數(shù)組的值瘸爽。

4. 負(fù)對數(shù)似然(Negative log-likelihood, NLL)[1]

由于對數(shù)似然是對概率分布求對數(shù)您访,概率P(x)的值為[0,1]區(qū)間,取對數(shù)后為(-\infty ,0]區(qū)間剪决。再在前面加個符號灵汪,變成[0,\infty)區(qū)間檀训。
l(\theta)=-\sum_{i=1}^{m}\log (P_{G}(x^{i};\theta))
寫到這你有沒有發(fā)現(xiàn),這個公式不就是交叉熵嗎享言?只是少了一項p(x_{i})峻凫,但是真實標(biāo)簽的概率為1,所以省掉了览露。
關(guān)于交叉熵的理解可以參考我的另一篇博客荧琼。


我們期望似然估計越大越好,取完負(fù)號之后就是負(fù)對數(shù)似然越小越好差牛,因此負(fù)對數(shù)似然函數(shù)可以作為損失函數(shù)命锄。

Pytorch中對應(yīng)的負(fù)對數(shù)似然損失函數(shù)為:

torch.nn.NLLLoss(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean')

值得注意的是,在使用該損失函數(shù)的時候并不需要將標(biāo)簽轉(zhuǎn)換成one-hot形式偏化,c類標(biāo)簽脐恩,就用c-1個數(shù)表示即可。
輸入與輸出數(shù)據(jù)的形狀:

  • input: (N,C)
  • output:(N)
    其中N為batch size侦讨,C為分類數(shù)量驶冒。假設(shè)batch size為3,有5個類別搭伤。我們用一段代碼看看torch.nn.NLLLoss()如何使用:
>>> import torch
>>> m = torch.nn.LogSoftmax(dim=1)
>>> loss = torch.nn.NLLLoss()
>>> input = torch.randn(3,5,requires_grad=True)
>>> input
tensor([[ 0.1076, -1.4376, -0.6307,  0.6451, -1.5122],
        [ 1.5105,  0.7662, -1.7587, -1.4581,  1.1357],
        [-1.4673, -0.5111, -0.0779, -0.7404,  1.4447]], requires_grad=True)
>>> target = torch.tensor([1, 0, 4])
>>> output = loss(m(input), target)
>>> output.backward()

計算結(jié)果為:

tensor(1.3537)

實際上這段代碼計算的是交叉熵只怎,因為在pytorch交叉熵的官方文檔中寫道[4]

This criterion (CrossEntropyLoss) combines LogSoftmax and NLLLoss in one single class.

它先將輸入經(jīng)過log softmax函數(shù),得到一個輸出:

>>> data = nn.LogSoftmax(dim=1)(input)
>>> data
tensor([[-1.2812, -2.8264, -2.0195, -0.7437, -2.9010],
        [-0.8118, -1.5561, -4.0810, -3.7804, -1.1866],
        [-3.3349, -2.3787, -1.9455, -2.6080, -0.4229]])

然后根據(jù)負(fù)對數(shù)似然估計的公式怜俐,得到如下等式:
Loss = - (-2.8264 - 0.8118 - 0.4229 )/3 = 1.3537
和函數(shù)計算結(jié)果相同身堡。

值得注意的是,nn.NLLLoss()函數(shù)雖然叫負(fù)對數(shù)似然損失函數(shù)拍鲤,但是該函數(shù)內(nèi)部并沒有像公式里那樣進(jìn)行了對數(shù)計算贴谎,而是在激活函數(shù)上使用了nn.LogSoftmax()函數(shù),所以nn.NLLLoss()函數(shù)只是做了求和取平均然后再取反的計算季稳,在使用時要配合logsoftmax函數(shù)一起使用擅这,或者直接使用交叉熵?fù)p失函數(shù)。


  1. 負(fù)對數(shù)似然(negative log-likelihood) ? ?

  2. 如何理解似然函數(shù) ?

  3. 如何通俗地理解概率論中的「極大似然估計法」? ?

  4. torch.nn.CrossEntropyLoss ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末景鼠,一起剝皮案震驚了整個濱河市仲翎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铛漓,老刑警劉巖溯香,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異浓恶,居然都是意外死亡玫坛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門包晰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來湿镀,“玉大人炕吸,你說我怎么就攤上這事∶愠眨” “怎么了赫模?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蒸矛。 經(jīng)常有香客問我嘴瓤,道長,這世上最難降的妖魔是什么莉钙? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任廓脆,我火速辦了婚禮,結(jié)果婚禮上磁玉,老公的妹妹穿的比我還像新娘停忿。我一直安慰自己,他們只是感情好蚊伞,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布席赂。 她就那樣靜靜地躺著,像睡著了一般时迫。 火紅的嫁衣襯著肌膚如雪颅停。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天掠拳,我揣著相機(jī)與錄音癞揉,去河邊找鬼。 笑死溺欧,一個胖子當(dāng)著我的面吹牛喊熟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姐刁,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼芥牌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了聂使?” 一聲冷哼從身側(cè)響起壁拉,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柏靶,沒想到半個月后弃理,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡宿礁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年案铺,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔬芥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梆靖。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡控汉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出返吻,到底是詐尸還是另有隱情姑子,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布测僵,位于F島的核電站街佑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捍靠。R本人自食惡果不足惜沐旨,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望榨婆。 院中可真熱鬧磁携,春花似錦、人聲如沸良风。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烟央。三九已至统诺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疑俭,已是汗流浹背粮呢。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留钞艇,地道東北人鬼贱。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像香璃,于是被迫代替她去往敵國和親这难。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容