tft每日頭條

 > 生活

 > 最大似然估計函數定義

最大似然估計函數定義

生活 更新时间:2024-08-14 22:09:09

【本文内容是對此視頻的整理、補充和修正】

在大多數課程,尤其是幫助大家快速掌握深度學習的課程,損失函數似乎并不是一個需要額外關心的問題。因為它往往都是現成的。

就像是網上非常火的,吳恩達講深度學習的課程裡面,他就提到了兩個損失函數。也就是紅框裡的那兩個函數。

最大似然估計函數定義(損失函數是如何設計出來的)1

對于某個數據x,y^hat是通過機器學習模型對這個數據x估計出來的結果,而y則是x的實際結果,往往也就是x數據的标簽值。

在課程裡面,吳恩達老師就是給我們演示了一下這兩個函數如何用的,至于為什麼是這樣的卻沒有給出一個詳細解釋。

現在做深度學習研究的,往往都會自嘲說自己是煉丹的。煉丹嘛,其實就算是說一個模型它為什麼好用,為什麼不好用,我們其實也搞不太清楚,反正就是試來試去,試出來的。

我想很多人可能都和我一樣,看到這兩個損失函數其實都産生過好奇,它們是怎麼得出來的,肯定不是硬生生地湊出來的。能寫成這樣,背後一定有道理。

但是又可能會想,反正都已經是在煉丹了,背後的原理是不是搞明白也無所謂了,能用就行。

如果是這樣的話,你就會發現,對于快速上機實踐、應付一下學校裡的作業,這麼做完全沒有問題。但是一旦你想稍微系統化地學習一下深度學習,不論去看花書還是西瓜書,損失函數都會成為你理解的障礙。

就是想找深度學習方面的工作,面試官都很有可能會讓你現場給出損失函數的推導。

這篇文章的作用,就是希望解決這個問題。

1、直觀理解損失函數到底是什麼,為什麼這麼重要

2、吳恩達老師給出的兩個損失函數分布是最小二乘法和最大似然估計,它們是怎麼來的,為什麼叫這個名字

3、最小二乘法和最大似然估計它們之間到底有什麼關系

1.損失函數的作用

要想明白損失函數是怎麼設計出來的,還要從損失函數的作用開始說起。

我們都知道,機器學習本質上來說就是在學習數據背後的規律。就比如,給了一堆照片,照片裡面有貓有狗,我們人去分辨的話,很容易就能分辨出哪些是貓、哪些是狗。雖然我們沒有辦法清楚地給出一個定義,符合這個的是貓,符合那個的就是狗。但是,我們認為在我們大腦裡是有那麼一個分辨貓狗的定義和規律的。

而機器學習的作用,就是哪怕你自己都不清楚這些事物的定義和規律,它依然可以通過模型和算法把這個規律找出來。

其實,我們人的學習行為很多時候也是這樣的。這個世界從來沒有告訴我們它的背後到底有什麼規律,但是我們還是可以通過觀察世界運行的各種現象,尋找到它背後的規律。這就是智能的一種體現,機器學習為什麼是人工智能的重要一環,也正是這個原因。

那麼機器是如何學到數據背後規律的呢?不同的學習方法可能會有不同,不過針對神經網絡的深度學習,它們尋找規律的方法是先猜測、後比較、再調整。

就比如說,一個還沒有訓練過的新神經網絡,神經網絡裡的參數W、b還都是初始值。不論效果怎麼樣,這個神經網絡其實已經完成了一次猜測。輸入一張圖片,不論結果對錯,它肯定是會得出一個結論,判斷這張圖片是貓還是狗。

猜測完了,就是比較了。一下蒙對那是不可能的,所以初始的一個新神經網絡肯定不靠譜,但是有多不靠譜呢,就需要拿猜測的這個規律和真實的規律進行比較了。具體怎麼比,我們放在後面再說,其實這就是損失函數的作用。

通過比較,就可以得到一個具體的差值,我們猜測的規律和真實的規律到底差了多少。有了這個具體的差距之後,再接下來就是調整了。比如說用梯度下降法,其實就是把損失函數計算出的那個差值分配到各個參數。用梯度下降法的好處就是,這個算法可以知道哪個參數對産生這個差值貢獻的多,哪個貢獻的少,貢獻多的多調整,貢獻少的少調整。

這樣調整完之後,就是神經網絡對規律的新一輪猜測。然後就可以再比較、再調整,直到差距小到一定程度位置。

2.“最小二乘法”是怎麼得出來的

在猜測、比較、調整,這個循環過程中,損失函數的作用就是将神經網絡裡猜測的規律與真實規律進行比較,看看它們差距有多少。

而要想完成比較這個動作,也就是把損失函數設計出來,其中有個最重要的問題需要解決。那就是,真實的規律我們不知道,我們沒有辦法拿着猜測出來的規律和真實的規律直接比較。

還好,我們雖然不知道真實的規律是什麼樣子的,但是我們有已經打好标簽的數據集。就比如,數據集裡的每一個圖片,都被打好标簽了,是貓是狗我們都已經知道了正确答案。正确答案是什麼?換個角度想,它們其實就是利用真實規律對圖片進行判斷,得到的判斷結果。

所以,雖然沒有辦法拿出真實的規律來比較,但是我們可以拿猜測的規律和真實規律它們的判斷的結果進行比較。如果我們猜測的規律就是真實規律的話,那麼神經網絡判斷出來的結果一定和數據的标簽一緻。y^hat是神經網絡的判斷的結果,y是标簽标記的真實結果,那麼損失函數我們就可以設計成,把數據集裡所有數據都放到神經網絡判斷一遍,挨個比較猜測的結果和真實的結果,看看它們之間差了多少,然後把所有的差值都加起來。

最大似然估計函數定義(損失函數是如何設計出來的)2

我們都知道,絕對值這個函數并不是全定義域都可導的,而随後求最小值還要進行求導,所以我們就可以把絕對值換成平方(還額外加了一個系數1/2,這是因為求導的時候指數部分的2會拿下來,可以和1/2抵消)。

最大似然估計函數定義(損失函數是如何設計出來的)3

3.如果深度學習是一個概率問題3.如果深度學習是一個概率問題

第一個式子是怎麼設計出來的,這個問題我解決了。那第二個式子又是如何設計出來的?它又為什麼叫做極大似然估計法,似然又是個啥?

要想明白這些,就需要切換一下視角了,需要從概率的視角來看深度學習問題。

怎麼切換成概率呢?我們可以先來看一下最理想的情況,比如,我們可以想象一下,把真實規律用概率分布的方式表示出來,會是什麼樣子。 (假如說就是判斷是一個非貓即狗的二分問題)

最大似然估計函數定義(損失函數是如何設計出來的)4

也就是說,隻要圖片是貓,那麼判斷的結果一定不會是狗;如果圖片是狗,那麼判斷的結果就一定不是貓,沒有任何判斷錯誤的情況出現。(注意:“具體一個貓的圖片判斷結果也是貓”這個事件的概率并不等于1,“所有貓的圖片都判斷成貓”、“所有狗的圖片都判斷成狗”,它們這些事件的概率全加起來才是1)

但是我們猜測出來的規律呢?雖然仍然可以用一個概率分布來表示,但是就沒有這麼準了,就算是給了一張貓的圖片,但是神經網絡還是有概率把它判斷成狗。最理想的情況,當然是讓我們猜測出來的規律可以和真實規律的概率分布一模一樣,但現實是,我們幾乎不可能得到和真實規律一模一樣的規律,隻能近似。(這個原因,需要對PAC框架和VC維理論有比較深入的理解之後才能解釋清楚,這裡就不多解釋了。可以簡單的理解為,任何一種機器學習的模型能力都是有限的,所以無法學到真實規律。)

不過,不論這麼樣,不論是真實的規律,還是我們猜測的規律,都可以用一個條件概率分布來呈現。我們得到的數據集裡面打好标簽的數據,其實就是在真實規律這個概率分布下進行抽樣得到的結果,而深度學習的過程,就是我們已經有了樣本數據,去反推背後概率分布是什麼的過程。

這就相當于,你有一個不知道正反概率是什麼的硬币,抛了10次結果是7正3反,如何才能反推出這個硬币正反的真實概率。

4.已知樣本數據,如何反推概率分布

如何才能反推出硬币真實的概率呢?投了10次,7正3反,是不是說硬币的概率就一定是正面的概率是0.7,反面的概率是0.3呢?

這麼想很符合我們的直覺,但這并不是一件闆上釘釘的事情。

你可以想一下,假如說,我們的硬币是正反概率都是0.5的話,你抛10次,難道就真的能保證一定是5次正、5次反嗎?不一定吧,出現6正4反,4正6反也還是挺常見的吧。更甚者,運氣好到極點,10次全部是正面也是有可能的。

那麼,當我們不知道硬币正反概率的時候,7正3反,就一定0.7的概率嗎?也不一定,對吧。完全有可能是,硬币的概率是0.1正、0.9反,但是運氣就是很好,抛出了7正3反的結果。或者是,概率本來是0.8正、0.2反,但是運氣就差那麼一點,抛出了7正3反。

最大似然估計函數定義(損失函數是如何設計出來的)5

也就是說,我們知道抛硬币的結果(抽樣結果),我們沒有辦法唯一确定一個真實的概率(背後的規律)。就像前面看到的,7正3反的硬币結果,沒有辦法排除掉任何一種概率,它們都有可能。

不過,雖然我們沒有辦法百分百确定樣本背後的概率分布原本是什麼樣子的,但是我們還是可以确定,最有可能情況是什麼。

比如,C1~C10代表着10次抛硬币的結果,θ是硬币決定正反概率的屬性(這個屬性是未知的;也可以直接理解為硬币固有的概率屬性),那麼抛10次硬币有7次是正面對應的概率就是等号右邊這麼多。

最大似然估計函數定義(損失函數是如何設計出來的)5

有了這個式子之後,我們就可以算出來,如果硬币抛出來正面朝上的概率分别是0.1、0.7和0.8的時候,要想得到抛10次硬币7次朝上的概率分布是多少。

最大似然估計函數定義(損失函數是如何設計出來的)7

大家算一下就知道,顯然當正面概率是0.7的時候,發生的概率是最大的。

所以,我們直覺上覺得抛10次硬币7次正面,硬币的概率應該是0.7,不是沒有根據的,這種情況與其他的情況想比,的确是可能性最大的。其實對于任何已經知道了樣本,想要反推背後的概率分布,都可以用類似的思路。這種思路,雖然沒有辦法百分百的知道真實的情況是什麼,但是顯然猜0.7是正面,這樣的正确的可能性最大。

對應到深度學習裡面也一樣,也是已知了一堆樣本數據,目的是想辦法反推出生成樣本數據的真實概率分布。雖然沒有辦法百分百确定是哪一個,但是我們還是有辦法确定哪一個的可能性最大。

而這個思路,就是最大似然估計法的思路,其中的“最大”這個詞,對應的就是前面說的可能性最大。至于為什麼是似然值,而不是概率值,這個就用解釋一下似然值和概率值的區别了。

5.“似然”和“概率”有什麼不一樣

什麼是似然值?首先,它也是用來表示可能性的,但是它又和概率描述的問題不一樣。

就比如,C代表了硬币是正還是反,θ是硬币決定正反概率的屬性。

最大似然估計函數定義(損失函數是如何設計出來的)7

這是一個概率分布的前提是,C是随機變量。随機變量是什麼意思呢?其實就是在說,當θ是一個固定值的時候,把所有C的可能取值都考慮進來,把它們對應的概率值加起來,最後的結果是歸一的。

最大似然估計函數定義(損失函數是如何設計出來的)9

但是我們可以想一下,在前面我們的問題是什麼?我們面臨的問題是,C是一個确定的值(也就是樣本已經确定了),未知的是θ。θ是一個條件,它不是随機變量,也就是說如果把全部θ的取值都考慮進來,它并不要求滿足歸一。也就是下式不一定等于1。

最大似然估計函數定義(損失函數是如何設計出來的)10

了解這些之後,我們應該就能明白了,如果我們設計一個函數,它的變量是θ:

最大似然估計函數定義(損失函數是如何設計出來的)11

這個L函數的結果,雖然還是一個概率值,也能表示某個事件發生的可能性,但是它又和概率分布的概率不太一樣。概率如果寫成函數的話,變量一定是随機變量才對,而這裡變量是條件。

而我們在已知某個抽樣結果後,反推那種情況的可能性最大,其實就是在求這個L函數的最大值。

至于這個函數呢?因為和概率表達意義不同,所以就被賦予了一個新的名字,似然函數。我們說的最大似然估計法,其實就是在說,要求出似然函數的最大值,這個最大值對着的就是最有可能的規律。

6.“最大似然估計法”為什麼要寫成這個樣子

最大似然估計法到底是什麼意思,我們已經知道了,剩下的就是神經網絡裡面的最大似然法為什麼寫出來是這個樣子的。

最大似然估計函數定義(損失函數是如何設計出來的)12

有了這個對應之後,我們就比較容易思考了,于是就有如下:

最大似然估計函數定義(損失函數是如何設計出來的)13

最大似然估計函數定義(損失函數是如何設計出來的)14

(在求最大值的時候灰色部分是可以忽略的。特别是P(xi),這是因為我們默認數據集是優質的數據集,數據集裡的圖片都是相互獨立的,而且應該是等概率的。如果這部分有問題,那就需要重新整理數據集,讓數據集盡可能滿足這個條件。)

最大似然估計函數定義(損失函數是如何設計出來的)15

通過上面的推導,就可以看出來了,為什麼吳恩達老師的最大似然估計法的式子要寫成那個樣子了。

7.“最小二乘法”可以等價于“最大似然估計法”

本來,講到這裡,最開始我們所有的問題就都已經解決了。不論是是最小二乘法,還是極大似然估計法,它們其實都是用來比較神經網絡猜測的那個規律和真實的規律的方法。

最小二乘法認為,當所有的誤差的平方值最小時,神經網絡裡面猜測的規律與真實的規律最接近。最大似然估計法則認為,當似然值最大的時候,猜測的規律與真實的規律最接近。

如果就是這麼看的話,最小二乘法好像和極大似然估計法是兩套不想幹的判斷标準,最後選擇哪個好像就是一個偏好問題。

但其實如果對最小二乘法的本質有所了解的話,就會發現從某種程度上來說,最小二乘法與最大似然估計在底層是相通的。

為什麼這麼說呢?

我們可以看看最小二乘法最後求出來的最值是什麼。為了簡化問題,我們把Y當做變量,代表不同W,b下神經網絡得出的判斷結果。這樣的話,損失函數就可以寫成:

最大似然估計函數定義(損失函數是如何設計出來的)14

最大似然估計函數定義(損失函數是如何設計出來的)17

如果隻是進行到這一步的話,我們還什麼都看不出來。但是我們還可以把Y-yi看做是神經網絡的判斷結果與真實結果的誤差,也就是:

最大似然估計函數定義(損失函數是如何設計出來的)18

那麼我們是可以把數據集裡每個數據對應的ε看做抽樣結果,也就相當于前面抛硬币例子裡面7正3反的結果。這樣的話,我們其實是可以利用最大似然估計法的。(注意這裡用最大似人估計法時,随機變量是誤差ε,而前面用最大似然估計法的時候随機變量是判斷結果yi,這還是有些不一樣的。)

利用最大似然估計法的話,可以得到似然函數如下:

求最大值,其實就是下面的函數對Y求導等于0:

具體這裡的最大值求出來是多少我們先放一下,但是在前面我們已經知道,用最小二乘法已經求出來了,當Y等于yi的平均值時,是我們的目标。而最小二乘法和極大似然估計法,它們雖然用到了不同的思路,但都是在解決同一個問題,那我們是不是可以認為,它們其實是殊途同歸的,最後的答案都是Y應該等于yi的平均值。

如果真的可以做出這樣的假設的話,那把平均值這個答案帶到最大似然估計法裡面,就可以去反推一下這個概率分布是什麼樣子的了。帶進去之後,就會發現,這個概率分布的概率密度函數如下:

這是什麼?這就是正态分布啊。

于是最小二乘法和最大似然估計法的關系就變成了這樣:如果我們認定神經網絡得到的結果與真實情況的誤差,是屬于正态分布的話,那麼最小二乘法與極大似然估計法是等價的。

我們都知道正态分布最開始是被高斯最先提出來的,他提出來的思路是什麼?雖然細節上可能會有差别,但是大體上他就是做了類似的思考,也就是認為最小二乘法和極大似然估計法應該殊途同歸,然後計算得出了正态分布的表達式。

所以,最小二乘法和極大似然估計法,雖然形式上非常不同,但是它們本質上還是相通的。隻不過,最小二乘法比極大似然估計法多了一個前提,那就是它要求誤差的分布屬于正态分布,隻有這樣的時候,最小二乘法和極大似然估計法才是等價的。

其實,最大似然估計法很多人也把它稱為交叉熵法,這是因為極大似然估計法和交叉熵方法是徹徹底底的等價,而不是最小二乘法這種有條件的等價。關于交叉熵方法的介紹,會在下一篇内容中介紹。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved