相對熵與交叉熵_熵、KL散度、交叉熵

公眾號關注?“ML_NLP”設為 “星標”,重磅干貨,第一時間送達!

26b2f029b8fa727788645148011ff93f.png

機器學習算法與自然語言處理出品

@公眾號原創專欄作者?思婕的便攜席夢思

單位 |?哈工大SCIR實驗室

KL散度 = 交叉熵 - 熵

  1. 1. 熵(Entropy)

抽象解釋:熵用于計算一個隨機變量的信息量。對于一個隨機變量X,X的熵就是它的信息量,也就是它的不確定性。
形象例子:有兩個隨機變量X和Y,或者說兩個事件,X表示“投一枚硬幣,落地時,哪一面朝上”;Y表示“太陽從哪個方向升起”。對于隨機變量X,“正面朝上”和“反面朝上”的概率各為0.5;對于隨機變量Y,“太陽從東邊升起”的概率為1,從另外三個方向升起的概率為0。由此可以看出,事件X的不確定性大于事件Y,因此事件X的熵也就大于事件Y。
那么具體該如何計算熵呢?
熵的數學定義為:

631f5621aeaf2a44cf1032722fb3d533.png


舉個例子,依舊是投硬幣的那個事件:
我們令

f4705f08704abb65bd1f3ddcd317d075.png


那么它的熵為:

a4673ae3b71f0d8f2b0a16d65efd0b0f.png


從編碼的角度理解熵
對于任意一個離散型隨機變量,我們都可以對其進行編碼。例如我們可以把字符看出一個離散型隨機變量。
根據shannon的信息論,給定一個字符集的概率分布,我們可以設計一種編碼,使得表示該字符集組成的字符串平均需要的比特數最少。假設這個字符集是X,對x∈X,其出現概率為P(x),那么其最優編碼(哈夫曼編碼)平均需要的比特數等于這個字符集的熵。

  1. 1. KL散度(Kullback-Leibler divergence)

抽象解釋:KL散度用于計算兩個隨機變量的差異程度。相對于隨機變量X,隨機變量Y有多大的不同?這個不同的程度就是KL散度。KL散度又稱為信息增益,相對熵。需要注意的是KL散度是不對稱的,就是說:X關于Y的KL散度 不等于 Y關于X的KL散度。
形象例子:
X表示“不透明的袋子里有2紅2白五個球,隨機抓一個球,球的顏色”事件,
Y表示“不透明的袋子里有3紅2白五個球,隨機抓一個球,球的顏色”事件,
Z表示“不透明的袋子里有1紅1白兩個球,隨機抓一個球,球的顏色”事件。
由于在事件X和Z中,都是P(紅)=0.5 P(白)=0.5;而在事件Y中P(紅)=0.6 P(白)=0.4,所以我們認為:相對于事件X,事件Y的差異程度小于事件Z。
那么該如何具體計算KL散度呢?
KL散度的數學定義為:
對于離散型隨機變量,我們定義A和B的KL散度為:

aafee7bbd87e3a02f29ced61872dc9b4.png


對于離散型隨機變量,我們定義A和B的KL散度為:

c7c9ddf941fd50b71d9bd0c4e6bf6b31.png


從編碼的角度理解KL散度
在同樣的字符集上,假設存在另一個概率分布Q(X)。如果用概率分布P(X)的最優編碼(即字符x的編碼長度等于log[1/P(x)]),來為符合分布Q(X)的字符編碼,那么表示這些字符就會比理想情況多用一些比特數。KL-divergence就是用來衡量這種情況下平均每個字符多用的比特數,因此可以用來衡量兩個分布的距離。

  1. 1. 交叉熵(Cross-Entropy)

抽象解釋:我所理解的交叉熵的含義,與KL散度是類似的,都是用于度量兩個分布或者說兩個隨機變量、兩個事件不同的程度。
具體例子:與KL散度類似
交叉熵的數學定義:

b2ff3a7966ccafa918b132faa814d2cd.png


比較熵、KL散度和交叉熵的數學定義會發現:
KL散度 = 交叉熵 - 熵
從編碼的角度理解交叉熵熵的意義是:對一個隨機變量A編碼所需要的最小字節數,也就是使用哈夫曼編碼根據A的概率分布對A進行編碼所需要的字節數;KL散度的意義是:使用隨機變量B的最優編碼方式對隨機變量A編碼所需要的額外字節數,具體來說就是使用哈夫曼編碼卻根據B的概率分布對A進行編碼,所需要的編碼數比A編碼所需要的最小字節數多的數量;交叉熵的意義是:使用隨機變量B的最優編碼方式對隨機變量A編碼所需要的字節數,具體來說就是使用哈夫曼編碼卻根據B的概率分布對A進行編碼,所需要的編碼數。

912dc63ddbad40ac456efab716cc2792.png

推薦閱讀:

【長文詳解】從Transformer到BERT模型

賽爾譯文 | 從頭開始了解Transformer

百聞不如一碼!手把手教你用Python搭一個Transformer

ca80e6ed94b146f15baeb3a1c9151554.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532394.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532394.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532394.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

動手實現一個帶自動微分的深度學習框架

動手實現一個帶自動微分的深度學習框架 轉自:Automatic Differentiation Tutorial 參考代碼:https://github.com/borgwang/tinynn-autograd (主要看 core/tensor.py 和 core/ops.py) 目錄 簡介自動求導設計自動求導實現一個例子總結參考資料 簡介 梯度…

git安裝后找不見版本_結果發現git版本為1.7.4,(git --version)而官方提示必須是1.7.10及以后版本...

結果發現git版本為1.7.4,(git --version)而官方提示必須是1.7.10及以后版本升級增加ppasudo apt-add-repository ppa:git-core/ppasudo apt-get updatesudo apt-get install git如果本地已經安裝過Git,可以使用升級命令:sudo apt-get dist-upgradeapt命令…

隨機數生成算法:K進制逐位生成+拒絕采樣

隨機數生成算法:K進制逐位生成拒絕采樣 轉自:【宮水三葉】k 進制諸位生成 拒絕采樣 基本分析 給定一個隨機生成 1 ~ 7 的函數,要求實現等概率返回 1 ~ 10 的函數。 首先需要知道,在輸出域上進行定量整體偏移,仍然滿…

深入理解NLP Subword算法:BPE、WordPiece、ULM

深入理解NLP Subword算法:BPE、WordPiece、ULM 本文首發于微信公眾號【AI充電站】,感謝大家的贊同、收藏和轉發(▽) 轉自:深入理解NLP Subword算法:BPE、WordPiece、ULM 前言 Subword算法如今已經成為了一個重要的NLP模型性能提升…

http 錯誤 404.0 - not found_電腦Regsvr32 用法和錯誤消息的說明

? 對于那些可以自行注冊的對象鏈接和嵌入 (OLE) 控件,例如動態鏈接庫 (DLL) 文件或 ActiveX 控件 (OCX) 文件,您可以使用 Regsvr32 工具 (Regsvr32.exe) 來將它們注冊和取消注冊。Regsvr32.exe 的用法RegSvr32.exe 具有以下命令行選項: Regs…

mysql error 1449_MySql錯誤:ERROR 1449 (HY000)

筆者系統為 mac ,不知怎的,Mysql 竟然報如下錯誤:ERROR 1449 (HY000): The user specified as a definer (mysql.infoschemalocalhost) does not exist一時沒有找到是什么操作導致的這個錯誤。然后經過查詢,參考文章解決了問題。登…

MobileNet 系列:從V1到V3

MobileNet 系列:從V1到V3 轉自:輕量級神經網絡“巡禮”(二)—— MobileNet,從V1到V3 自從2017年由谷歌公司提出,MobileNet可謂是輕量級網絡中的Inception,經歷了一代又一代的更新。成為了學習輕…

mysql 查詢表的key_mysql查詢表和字段的注釋

1,新建表以及添加表和字段的注釋.create table auth_user(ID INT(19) primary key auto_increment comment 主鍵,NAME VARCHAR(300) comment 姓名,CREATE_TIME date comment 創建時間)comment 用戶信息表;2,修改表/字段的注釋.alter table auth_user comment 修改后的表注…

mysql 高級知識點_這是我見過最全的《MySQL筆記》,涵蓋MySQL所有高級知識點!...

作為運維和編程人員,對MySQL一定不會陌生,尤其是互聯網行業,對MySQL的使用是比較多的。MySQL 作為主流的數據庫,是各大廠面試官百問不厭的知識點,但是需要了解到什么程度呢?僅僅停留在 建庫、創表、增刪查改…

teechart mysql_TeeChart 的應用

TeeChart 是一個很棒的繪圖控件,不過由于里面沒有注釋,網上相關的資料也很少,所以在應用的時候只能是一點點的試。為了防止以后用到的時候忘記,我就把自己用到的東西都記錄下來,以便以后使用的時候查詢。1、進制縮放圖…

NLP新寵——淺談Prompt的前世今生

NLP新寵——淺談Prompt的前世今生 轉自:NLP新寵——淺談Prompt的前世今生 作者:閔映乾,中國人民大學信息學院碩士,目前研究方向為自然語言處理。 《Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in…

mysql key_len_淺談mysql explain中key_len的計算方法

mysql的explain命令可以分析sql的性能,其中有一項是key_len(索引的長度)的統計。本文將分析mysql explain中key_len的計算方法。1、創建測試表及數據CREATE TABLE member (id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,age tinyint(…

requestfacade 這個是什么類?_Java 的大 Class 到底是什么?

作者在之前工作中,面試過很多求職者,發現有很多面試者對Java的 Class 搞不明白,理解的不到位,一知半解,一到用的時候,就不太會用。想寫一篇關于Java Class 的文章,沒有那么多專業名詞&#xff0…

初學機器學習:直觀解讀KL散度的數學概念

初學機器學習:直觀解讀KL散度的數學概念 轉自:初學機器學習:直觀解讀KL散度的數學概念 譯自:https://towardsdatascience.com/light-on-math-machine-learning-intuitive-guide-to-understanding-kl-divergence-2b382ca2b2a8 解讀…

php mysql讀取數據查詢_PHP MySQL 讀取數據

PHP MySQL 讀取數據從 MySQL 數據庫讀取數據SELECT 語句用于從數據表中讀取數據:SELECT column_name(s) FROM table_name我們可以使用 * 號來讀取所有數據表中的字段:SELECT * FROM table_name如需學習更多關于 SQL 的知識,請訪問我們的 SQL 教程。使用 …

MySQL應用安裝_mysql安裝和應用

1.下載mysql安裝包2.安裝mysql,自定義->修改路徑3.配置mysql,選擇自定義->server模式->500訪問量->勾選控制臺->設置gbk->設置密碼和允許root用戶遠程登錄等等。以管理員權限,在控制臺輸入:net start MySQL, 啟…

mysql 商品規格表_商品規格分析

產品表每次更新商品都會變動的,ID不能用,可是購物車還是用了,這就導致每次保存商品,哪怕什么都沒有改動,也會導致用戶的購物車失效。~~~其實可以考慮不是每次更新商品就除所有的SKU,畢竟有時什么都沒修改呢…

mysql維表的代理鍵字段_mysql多維數據倉庫指南--第三篇第12章(2)

賓夕法尼亞州地區客戶維在本節我將用賓夕法尼亞州地區客戶的子集維度來解釋第二種維度子集的類型。我也將向你說明如何測試該子集維度。相對的,一個向上鉆取的維包含了它基礎維的所有更高級別的數據。而一個特定子集維度則選擇了它基礎維的某個特定的數據集合。列表…

huggingface NLP工具包教程1:Transformers模型

huggingface NLP工具包教程1:Transformers模型 原文:TRANSFORMER MODELS 本課程會通過 Hugging Face 生態系統中的一些工具包,包括 Transformers, Datasets, Tokenizers, Accelerate 和 Hugging Face Hub。…

mysql日期比較timestamp_Mysql中的Datetime和Timestamp比較(轉載)

mysql中用于表示時間的三種類型date, datetime, timestamp (如果算上int的話,四種) 比較容易混淆,下面就比較一下這三種類型的異同相同點都可以用于表示時間都呈字符串顯示不同點1.顧名思義,date只表示YYYY-MM-DD形式的日期,datet…