今天要談到的是 entropy。Entropy 其實原本是熱力學中的理論,用於度量一個熱力學系統的無序程度(表達原子在空間當中的分布狀況,如果原子分佈愈混亂,entropy 就愈高)。
在 1948 年,Claude Elwood Shannon 將熱力學的熵引入到資訊理論,因此它又被稱為 Shannon entropy。資訊理論的 entropy 又是在描述什麼呢?在資訊理論中,entropy 是接收的每條消息中包含的資訊的平均量,又被稱為資訊熵、信源熵、平均資訊本體量。所以 entropy 就是單一事件中的機率 (期望值)。在資訊世界,entropy 愈高,則能傳輸越多的資訊,entropy 越低,則傳輸的資訊越少。換句話說,我們可以透過計算 entropy 來得知其所含有的資訊量,當資訊愈確定且單一, entropy 愈小;資訊愈不確定、愈混亂,entropy 愈大。
下圖是 Shannon entropy 的公式:
其中:
看到這裡,應該不難理解為什麼 entropy 也能應用在 NLP 任務中了吧?沒錯!它可以用來計算一篇文本中的詞彙複雜程度(所包含的新詞量、特別的字彙)。因為在一篇文本中,若某個字頻繁地出現,代表此篇文本絕大部分都有該特徵,因此,該特徵的代表性不足以幫助識別不同的字詞。然而,若此時出現了一個之前沒有出現過的新詞彙,其所帶的特徵與文本中大部分的字彙有所不同(所謂資訊量大),它的 entropy 就會很高。Shannon entropy 看起來很美好,然而它有一個問題,就是它在有限的 corpus 裡面沒有遍歷性(Ergodicity),可能導致計算不夠精確。
所謂遍歷性是指一個隨機的過程中,統計結果在時間上的平均數與空間上的平均數相等。舉個投資理財的例子(https://justininvesting.wordpress.com/2018/04/30/skin-in-the-game-ergodicity/):
情境1:昨天晚上有100個人去一家賭場賭博,其中99個人賭完都沒事,只有一個人賭到輸光了。那請問,這家賭場是不是一個危險場所?答案似乎是並不危險,因為輸光的機率只有1%。
情境2:同一家賭場,假設去一次輸光的機率是1%。那請問,如果同一個人,連續去了這家賭場100次,他輸光的機率有多大?答案是,他肯定會輸光。
上面 2 個情境皆不具備遍歷性,因為在空間上(同一時間一群人的集合:賭場裡面的人)的數學期望,和時間上(一個人連續去很多次)的數學期望是不一樣的。
如果一個系統具有遍歷性,在兩個情境之下的結果應該是相同的。就像重覆拋一個硬幣,正面與反面的機率各為50/50,和我也重複拋一個硬幣,正面與反面的機率也是各為 50/50,這就表示拋硬幣這個隨機過程是具有遍歷性。
也因為這樣的問題,NLP 中計算 entropy 的方式出現了改良版 Zhang's Estimation,公式如下:
使用 Zhang's Estimation 的優點:
講完了 entropy,我們也來了解一下什麼是 cross entropy 吧!cross entropy 的公式如下:
交叉熵是表示兩個幾率分佈 p, q,其中 p 表示真實分佈,q 表示非真實分佈。在相同的一組事件中,用非真實分佈 q 來表示某個事件發生所需要的平均 byte。此公式可以依照下面步驟來理解。
此時就將H(p,q)稱之為 cross entropy。
Cross entropy 可在神經網絡(機器學習)中作為損失函數 loss function,p 表示真實標記的分佈,q 則為訓練後的模型的預測標記分佈。交叉熵損失函數可以衡量 p 與 q 的相似性。在語言模型中(NLP)中,由於真實的分佈 p 是未知的,模型是通過訓練集得到的,cross entropy 就是衡量這個模型在測試集上的正確率。
今天就介紹到這邊,明天進行實作解說!