<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          機(jī)器學(xué)習(xí)小知識(shí): 圖解熵、交叉熵和 KL-散度

          共 4619字,需瀏覽 10分鐘

           ·

          2020-08-18 11:39

          交叉熵是分類問題中最常用的損失函數(shù)之一。但是由于如今有大量容易上手的現(xiàn)成庫和框架,我們大多數(shù)人常常在沒有真正了解熵的核心概念的情況下,就可以熟練地解決問題。
          在本文中,讓我們研究一下熵這個(gè)概念背后的基本直覺,并將其與交叉熵、KL-散度相關(guān)聯(lián)。我們還將使用交叉熵作為損失函數(shù),結(jié)合一個(gè)實(shí)例來看看它在分類問題中的應(yīng)用。

          1什么是熵?

          首先,本文指的熵是指信息熵。想要明白熵的確切含義,先讓我們了解一下信息論的一些基礎(chǔ)知識(shí)。在這個(gè)數(shù)字時(shí)代,信息由位(即比特,由 0 和 1)組成。在通信時(shí),有些位是有用的,有些是冗余的,有些是錯(cuò)誤,依此類推。當(dāng)我們傳達(dá)信息時(shí),我們希望向收件人發(fā)送盡可能多的有用信息。

          在 Claude Shannon 的論文《通信的數(shù)學(xué)理論》(1948)中,他指出,傳輸 1 比特的信息意味著將接收者的不確定性降低 2 倍。

          讓我們來看看他說的意思。例如,考慮一個(gè)天氣狀況隨機(jī)的地方,每天可能有 50% 的機(jī)率是晴天或陰雨。

          現(xiàn)在,如果氣象站告訴你明天要下雨,那么他們將不確定性降低了 2 倍。起初,有兩種可能,但在收到氣象站的信息后,就只有一種可能了。在這里,氣象站向我們發(fā)送了一點(diǎn)點(diǎn)有用的信息,無論他們?nèi)绾尉幋a這些信息,這都是事實(shí)。

          即使發(fā)送的信息是多雨(Rainy),并且每個(gè)字符占用一個(gè)字節(jié),消息總的大小也相當(dāng)于 40 比特,但是它們?nèi)匀恢粋鬟_(dá)了 1 比特的有用信息。

          假設(shè)天氣有 8 種可能的狀態(tài),所有可能性都相同。

          現(xiàn)在,當(dāng)氣象站為你提供第二天的天氣時(shí),它們會(huì)將不確定性降低了 8 倍。由于每個(gè)事件的發(fā)生機(jī)率為 1/8,因此降低因子為 8。

          但是,如果不同天氣的可能性不一樣該怎么辦呢?

          假設(shè)有 75% 的概率是晴天,25% 的概率是下雨。

          現(xiàn)在,如果氣象站說第二天要下雨,那么不確定性就會(huì)降低 4 倍,即 2 個(gè)比特信息。減少的不確定性是事件概率的倒數(shù)。在這種情況下,25% 的倒數(shù)是 4,以 2 為底的 得到 2。因此,我們得到 2 個(gè)比特的有用信息。

          解讀

          • 原來憑空猜下雨,你只有 1/4 把握,得到天氣預(yù)報(bào)后現(xiàn)在的把握是 1 了。確定性提升到 4 倍,或者說不確定性降低到 4 倍。
          • 原來猜晴天,你有 3/4 把握,得到天氣預(yù)報(bào)后現(xiàn)在的把握是 1 了。確定性提升到 4/3 倍,或者說不確定性降低到 4/3 倍。

          2信息熵

          我們經(jīng)常會(huì)說,某個(gè)新聞的信息量好大。那么這個(gè)信息量到底怎么定義呢?所含的文字?所表達(dá)的內(nèi)容?貌似并不好定義。

          可以這么來理解,對(duì)某個(gè)事件由不確定到確定就得到了所謂的信息量,那么如何來量化它呢?即這個(gè)信息量到底有多大呢?這個(gè)就需要對(duì)不確定到確定這個(gè)轉(zhuǎn)化作量化了。首先看看怎么量化不確定性。通過前文我們知道,事件概率越大,不確定性自然就越小,再結(jié)合事件是獨(dú)立的這個(gè)前提。信息量應(yīng)該滿足下面這些條件,

          • 信息量跟事件的概率值成反比,即 。概率越大的事件確定性越大,因此由不確定到確定的轉(zhuǎn)化所含的信息量越小。
          • 兩個(gè)獨(dú)立事件所對(duì)應(yīng)的信息量應(yīng)等于各自信息量之和,因?yàn)橄嗷ゲ挥绊?,所謂的可加性,即 。

          滿足這兩個(gè)條件的常見函數(shù)有嗎?答案是肯定的,比如

          這個(gè)正是 Shannon 采用的函數(shù)。來一小段 Python 代碼繪制一下這個(gè)函數(shù),

          #?compare?probability?vs?information?entropy
          from?math?import?log2
          from?matplotlib?import?pyplot
          #?list?of?probabilities
          probs?=?[0.1,?0.2,?0.3,?0.4,?0.5,?0.6,?0.7,?0.8,?0.9,?1.0]
          #?calculate?information
          info?=?[-log2(p)?for?p?in?probs]
          #?plot?probability?vs?information
          pyplot.plot(probs,?info,?marker='.')
          pyplot.title('Probability?vs?Information')
          pyplot.xlabel('Probability')
          pyplot.ylabel('Information')
          pyplot.show()

          結(jié)果見下圖,對(duì)照一下圖像來更好地理解一下這個(gè)函數(shù)吧。

          好了,接下來我們就用這個(gè)函數(shù)來計(jì)算信息熵。熵,從數(shù)學(xué)上看,衡量的是一種期望值,即隨機(jī)變量多次試驗(yàn)后所傳遞的信息量的平均值。假設(shè)離散隨機(jī)變量對(duì)應(yīng)的分布為 ,那么該離散隨機(jī)變量的信息熵定義為,

          這里用的都是以 2 為底的對(duì)數(shù),也因此信息量對(duì)應(yīng)的單位稱為比特(bit)。下面我們回到前文的例子。

          如果氣象站說第二天是晴天,那么我們將獲得 0.41 比特的信息量。因此,平均而言,我們將從氣象站獲得多少信息量呢?

          好吧,明天有 75% 的機(jī)率是晴天,這會(huì)給你 0.41 比特的信息,明天有 25% 的機(jī)率會(huì)下雨,它為給你提供 2 比特的信息,對(duì)應(yīng)于下圖

          平均而言,我們每天從氣象站獲得 0.81 比特的信息。因此,我們把剛剛計(jì)算出的平均值稱為信息熵。這很好地衡量了事件的不確定性。

          希望熵的公式現(xiàn)在完全有了意義。它衡量的是你每天收到天氣預(yù)報(bào)時(shí)得到的平均信息量。通常,它給出了我們從給定的概率分布 抽取的一個(gè)樣本中獲得的平均信息量。它告訴我們某個(gè)概率分布對(duì)應(yīng)的隨機(jī)變量有多么不可預(yù)測,即它的不確定程度。

          如果我們生活在每天陽光明媚的沙漠中,平均來說,每天我們不會(huì)從氣象站獲得太多信息。熵值將接近于零。另一方面,如果每天的天氣情況變化很大,熵值將很大。

          3交叉熵

          現(xiàn)在,讓我們談?wù)劷徊骒?。可以將它看成平均信息長度。比如上面例子中,考慮到有 8 種可能的天氣狀況,它們的可能性均等,可以使用 3 個(gè)比特的信息對(duì)每種狀況來編碼。

          如圖所示,這里的平均信息長度為 3,這就是這個(gè)例子的交叉熵。

          但是現(xiàn)在,假設(shè)你住在陽光充足的地區(qū),天氣的概率分布并不均勻,具體如下圖所示,

          每天都有 35% 的機(jī)率是晴天,雷雨的可能性只有 1%。因此,我們可以計(jì)算該概率分布的熵,得,

          請注意,此處使用的是以 2 為底的對(duì)數(shù)。

          因此,氣象站平均發(fā)送 3 個(gè)比特信息,但是接收者僅獲得 2.23 個(gè)有用的比特信息。那么,是不是說明我們還可以做得更好呢?

          例如,像下面這樣來更改編碼,

          現(xiàn)在,我們只使用 2 個(gè)比特信息表示晴天或部分晴天,使用 3 個(gè)比特信息表示多云和大部分多云,使用 4 個(gè)比特信息表示中雨和小雨,使用 5 個(gè)比特信息表示大雨和雷暴。對(duì)天氣坐這樣的編碼方式是不會(huì)引起歧義的,例如,你鏈接多條消息,則只有一種方法可以解釋比特流。例如,01100 只能表示部分晴天(01),然后是小雨(100)。因此,如果我們計(jì)算該站每天發(fā)送的平均比特?cái)?shù),則可以得出,

          這是我們新的和改進(jìn)的交叉熵,它比以前的 3 個(gè)比特更好?,F(xiàn)在,假設(shè)我們在不同的地方使用相同的代碼,那兒的天氣是相反的,多雨。

          現(xiàn)在,如果我們計(jì)算交叉熵,

          我們得到 4.58 個(gè)比特,大約是熵的兩倍。平均而言,該站發(fā)送 4.58 個(gè)比特信息,但只有 2.23 個(gè)比特信息對(duì)接收者來說是有用的。每條消息發(fā)送的信息量是必要信息的兩倍。這是因?yàn)槲覀兪褂玫拇a對(duì)天氣分布做出了一些隱含的假設(shè)。例如,當(dāng)我們在晴天使用 2 個(gè)比特信息時(shí),我們含蓄地預(yù)測了晴天的概況為 25%。這是因?yàn)?。

          同樣,我們計(jì)算所有的天氣情況。

          分母中 2 的冪對(duì)應(yīng)于用于傳輸信息的比特?cái)?shù)。很明顯,預(yù)測分布 與真實(shí)分布 完全不同。

          因此,現(xiàn)在我們可以將交叉熵表示為真實(shí)概率分布 和預(yù)測概率分布 的函數(shù) ,具體公式為,

          請注意,本示例中使用的對(duì)數(shù)均是以 2 為底的。

          正如你所見,除了我們在這里使用預(yù)測概率的對(duì)數(shù)外,它看起來與熵的等式非常相似。如果我們的預(yù)測是完美的,那就是預(yù)測分布等于真實(shí)分布,那么交叉熵就等于熵。但是,如果分布不同,交叉熵就會(huì)比熵更大一些,因?yàn)槎嗔艘恍┍忍?。交叉熵超過熵的數(shù)量,被稱為相對(duì)熵,或更通常稱為 Kullback-Leibler Divergence(KL-散度)??偨Y(jié)一下,簡而言之,

          從上面的例子中,我們得到

          4應(yīng)用

          現(xiàn)在,讓我們在實(shí)際應(yīng)用中來用一用交叉熵。比如,我們正在訓(xùn)練一個(gè)圖像分類器,對(duì)看起來比較相似的不同動(dòng)物進(jìn)行分類,例如浣熊啊、小熊貓啊、狐貍之類等等。

          因此,對(duì)于可能的 7 個(gè)類別中的每一個(gè)類別,分類器會(huì)分別給出一個(gè)概率,即所謂的預(yù)測分布。由于這是有監(jiān)督的學(xué)習(xí)問題,因此我們是知道真實(shí)分布的。

          在上面的示例中,我拍了一只浣熊的照片,因此在真實(shí)分布中,浣熊類的概率應(yīng)該為 100%,其他類的概率為 0。我們可以將這兩個(gè)分布之間的交叉熵作為成本函數(shù),稱為交叉熵?fù)p失

          這只是我們前面看到的等式,除了它通常使用自然對(duì)數(shù)而不是 以 2 為底的對(duì)數(shù)。對(duì)于訓(xùn)練而言,這無關(guān)緊要,因?yàn)橐?2 為底的對(duì)數(shù) 與自然對(duì)數(shù)之間的轉(zhuǎn)換關(guān)系為 ,其中分母是常數(shù)。注意,本文其他地方如沒有特別說明, 都是指以 2 為底的對(duì)數(shù)。

          因此,當(dāng)類別概率被稱為一個(gè)獨(dú)熱編碼向量(這意味著一個(gè)類別具有 100% 概率,其余類別均為 0%)時(shí),交叉熵只是真實(shí)類別的估計(jì)概率的負(fù)對(duì)數(shù)。

          在這個(gè)例子中,交叉熵為

          現(xiàn)在,你可以看到,當(dāng)對(duì)真實(shí)類別的預(yù)測概率接近 0 時(shí),成本函數(shù)可能會(huì)非常大。但是,當(dāng)預(yù)測概率接近 1 時(shí),成本函數(shù)將接近 0。因此,我們需要對(duì)每個(gè)類使用更多的例子來訓(xùn)練分類器,以減少損失。

          5小結(jié)

          我們以氣象站更新第二天的天氣為例,了解了香農(nóng)信息理論的概念。然后我們將其與熵、交叉熵相關(guān)聯(lián)。最后,我們使用一個(gè)例子看了下交叉熵?fù)p失函數(shù)的實(shí)際用法。我希望本文能幫大家弄清熵、交叉熵和 KL-散度以及他們之間的聯(lián)系。

          小結(jié)一下: 給定一個(gè)分布為??的隨機(jī)變量,如果你用分布??去編碼它,那你就得付出額外的編碼稅。這個(gè)稅要繳多少呢,正是 KL-散度。


          - 完 -

          ?參考資料?

          [1]

          Hands-On Machine Learning with Scikit-Learn and TensorFlow: https://www.oreilly.com/library/view/hands-on-machine-learning/9781491962282/

          [2]

          Entropy, Cross-Entropy, and KL-Divergence Explained: https://towardsdatascience.com/entropy-cross-entropy-and-kl-divergence-explained-b09cdae917a

          [3]

          A Gentle Introduction to Information Entropy: https://machinelearningmastery.com/what-is-information-entropy

          [4]

          Entropy_information_theory: https://en.wikipedia.org/wiki/Entropy_information_theory


          瀏覽 73
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  A A毛片| 大香蕉伊人在线观看 | 大香蕉福利视频 | 又黄又爽网站 | 亚洲人兽|