信息量,熵,交叉熵,相對熵與代價函數

来源:http://www.cnblogs.com/llhthinker/archive/2017/08/04/7287029.html
-Advertisement-
Play Games

本文將介紹信息量,熵,交叉熵,相對熵的定義,以及它們與機器學習演算法中代價函數的定義的聯繫。轉載請保留原文鏈接:http://www.cnblogs.com/llhthinker/p/7287029.html 1. 信息量 信息的量化計算: 解釋如下: 信息量的大小應該可以衡量事件發生的“驚訝程度”或 ...


本文將介紹信息量,熵,交叉熵,相對熵的定義,以及它們與機器學習演算法中代價函數的定義的聯繫。轉載請保留原文鏈接:http://www.cnblogs.com/llhthinker/p/7287029.html

1. 信息量

信息的量化計算:

解釋如下:

信息量的大小應該可以衡量事件發生的“驚訝程度”或不確定性:

如果有⼈告訴我們⼀個相當不可能的事件發⽣了,我們收到的信息要多於我們被告知某個很可能發⽣的事件發⽣時收到的信息。如果我們知道某件事情⼀定會發⽣,那麼我們就不會接收到信息。 也就是說,信息量應該連續依賴於事件發生的概率分佈p(x) 。因此我們想要尋找⼀個基於概率p(x)計算信息量的函數h(x),它應該具有如下性質:

  1. h(x) >= 0,因為信息量表示得到多少信息,不應該為負數。
  2. h(x, y) = h(x) + h(y),也就是說,對於兩個不相關事件x和y,我們觀察到兩個事件x, y同時發⽣時獲得的信息應該等於觀察到事件各⾃發⽣時獲得的信息之和;
  3. h(x)是關於p(x)的單調遞減函數,也就是說,事件x越容易發生(概率p(x)越大),信息量h(x)越小。

又因為如果兩個不相關事件是統計獨⽴的,則有p(x, y) = p(x)p(y)。根據不相關事件概率可乘、信息量可加,很容易想到對數函數,看出h(x)⼀定與p(x)的對數有關。因此,有

滿足上述性質。

2. 熵(信息熵)

對於一個隨機變數X而言,它的所有可能取值的信息量的期望就稱為熵。熵的本質的另一種解釋:最短平均編碼長度(對於離散變數

離散變數:

連續變數:

3. 交叉熵

現有關於樣本集的2個概率分佈p和q,其中p為真實分佈,q非真實分佈。按照真實分佈p來衡量識別一個樣本的熵,即基於分佈p給樣本進行編碼的最短平均編碼長度為:

如果使用非真實分佈q來給樣本進行編碼,則是基於分佈q的信息量的期望(最短平均編碼長度),由於用q來編碼的樣本來自分佈p,所以期望與真實分佈一致。所以基於分佈q的最短平均編碼長度為:

 上式CEH(p, q)即為交叉熵的定義。

4. 相對熵

將由q得到的平均編碼長度比由p得到的平均編碼長度多出的bit數,即使用非真實分佈q計算出的樣本的熵(交叉熵),與使用真實分佈p計算出的樣本的熵的差值,稱為相對熵,又稱KL散度

KL(p, q) = CEH(p, q) - H(p)=

 

相對熵(KL散度)用於衡量兩個概率分佈p和q的差異。註意,KL(p, q)意味著將分佈p作為真實分佈,q作為非真實分佈,因此KL(p, q) != KL(q, p)。

5. 機器學習中的代價函數與交叉熵

p(x) 是數據的真實概率分佈,q(x) 是由數據計算得到的概率分佈。機器學習的目的就是希望q(x)儘可能地逼近甚至等於p(x) ,從而使得相對熵接近最小值0. 由於真實的概率分佈是固定的,相對熵公式的後半部分(-H(p)) 就成了一個常數。那麼相對熵達到最小值的時候,也意味著交叉熵達到了最小值。對q(x) 的優化就等效於求交叉熵的最小值。另外,對交叉熵求最小值,也等效於求最大似然估計(maximum likelihood estimation)。 特別的,在logistic regression中, 
p:真實樣本分佈,服從參數為p的0-1分佈,即XB(1,p)  p(x = 1) = y p(x = 0) = 1 - y
q:待估計的模型,服從參數為q的0-1分佈,即XB(1,q)  p(x = 1) = h(x) p(x = 0) = 1-h(x) 其中h(x)為logistic regression的假設函數。
兩者的交叉熵為: 

對所有訓練樣本取均值得: 
這個結果與通過最大似然估計方法求出來的結果一致。使用最大似然估計方法參加博客 Logistic Regression. 

 

Ref:

《模式識別與機器學習》1.6節

http://blog.csdn.net/rtygbwwwerr/article/details/50778098

https://www.zhihu.com/question/41252833


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • iOS精選源碼 iOS優質博客 前言最近因為工作原因遷移到了北京,大致有兩周時間。入職也大概有一周時間,工作內容與APM相關,包括改進與攻剋新監控方案。雖然入職時間善短,但是龐大的用戶量下,即便是不到百分之一的卡頓率仍然影響到了巨大的用戶。如何改進現有的卡頓監控方案是目前我在思考的問題。ANR回顧市 ...
  • Android精選源碼 Android優質博客 為什麼會選用Kotlin關於 Google 為什麼會選擇 Kotlin,我認為有兩方面的原因。為了逐漸擺脫專利流氓Oracle。從去年的轉向OpenJDK,到現在的支持Kotlin作為官方語言,某種意義是為了擺脫藉由9行代碼敲詐獲取天價賠償的Oracl ...
  • TextView實現跑馬燈效果 一、方法 這裡我們用兩種方法來實現跑馬燈效果,雖然實質上是一種 實質就是: 1、TextView調出跑馬燈效果 2、TextView獲取焦點 第一種: 1、TextView調出跑馬燈效果 android:ellipsize="marquee" 2、TextView獲取 ...
  • InflateException:Bin file line #19:Error inflating class MyTextView 一、錯誤簡介 為了實現TextView的跑馬燈效果,我自己寫了一個MyTextView的類繼承TextView,結果在layout的XML頁面調用的時候出現錯誤。 ...
  • 一,代碼。 二,輸出。 ...
  • SpannableString實現TextView的鏈接效果 一、簡介 TextView使用SpannableString設置複合文本TextView通常用來顯示普通文本,但是有時候需要對其中某些文本進行樣式、事件方面的設置。Android系統通過SpannableString類來對指定文本進行相關 ...
  • 選中Project 然後滑鼠右鍵,將Compact Empty Moiddle Packages 的勾取消 輸入新名稱點擊 Preview輸入新名稱點擊 Preview輸入新名稱點擊 Preview輸入新名稱點擊 Preview輸入新名稱點擊 Preview輸入新名稱點擊 Preview輸入新名稱點 ...
  • 前言 Oracle Database 2 Day DBA是一個資料庫管理快速入門指南,教您如何執行日常資料庫管理任務。本書的目的是幫助您瞭解Oracle資料庫背後的概念。它教你如何執行保持資料庫運行所需的所有常見管理任務,包括如何執行基本故障排除和性能監控活動。 讀者 Oracle Database ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...