轉載:https://zhuanlan.zhihu.com/p/334772391
Noise Contrastive Estimation 前世今生——從 NCE 到 InfoNCE
0 前言
作為剛入門自監督學習的小白,在閱讀其中 Contrastive Based 方法的自監督論文時,經常會看到 InfoNCE 這個 loss(在 CPC 的論文中提出),之前只知道它的思想來自於 NCE 以及代表什么含義,但是對其背后的理論推導、以及如何從 NCE 遷移到 InfoNCE 的不太清楚,因此這篇文章就是通過理論推導和自己的理解來對 NCE 和 InfoNCE 的來龍去脈有個了解。(這篇文章着重於原理,因此公式和推導較多)
1 從 NLP 入手
1.1 背景
NCE,也就是 Noise Contrastive Noise(噪聲對比估計), 在 [2] 這篇論文中被提出,但是這篇論文的闡述的不太便於理解,並且論文中估計的是概率密度函數(pdf, probability density function)。而 NLP 中的 word 或 vision 中的 pixel 都是離散的,且我們感興趣的是的概率質量函數(pmf, probability mass function),因此我主要參考了 [4] 這篇論文,它就是在使用 NCE 時假設了離散分布,並用 pmf 代替其中 pdf,然后將 NCE 應用到 NLP 領域。(我對 NLP 領域不是很了解,所以部分闡述方式可能會不嚴謹)。
1.2 n-gram
語言模型(language model)就是假設一門語言所有可能的句子服從一個概率分布,每個句子出現的概率加起來是1,那么語言模型的任務就是預測每個句子在語言中出現的概率。如果把句子
看成單詞
的序列
,那么語言模型就是建模一個
來計算這個句子
出現的概率,直觀上我們要得到這個語言模型,基於鏈式法則可以表示為每個單詞出現的條件概率的乘積,我們將條件概率的條件
稱為單詞
的上下文,用
表示。
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0rJTVDYmVnaW4lN0JhbGlnbmVkJTdEK3AlNUNsZWZ0JTI4d18lN0IxJTdEJTJDK3dfJTdCMiU3RCUyQyslNUNsZG90cyUyQyt3XyU3Qm0lN0QlNUNyaWdodCUyOSUyNiUzRHAlNUNsZWZ0JTI4d18lN0IxJTdEJTVDcmlnaHQlMjkrJTJBK3AlNUNsZWZ0JTI4d18lN0IyJTdEKyU1Q21pZCt3XyU3QjElN0QlNUNyaWdodCUyOSslMkErcCU1Q2xlZnQlMjh3XyU3QjMlN0QrJTVDbWlkK3dfJTdCMSU3RCUyQyt3XyU3QjIlN0QlNUNyaWdodCUyOSslNUNsZG90cytwJTVDbGVmdCUyOHdfJTdCbSU3RCslNUNtaWQrd18lN0IxJTdEJTJDKyU1Q2xkb3RzJTJDK3dfJTdCbS0xJTdEJTVDcmlnaHQlMjkrJTVDJTVDKyUyNiUzRCU1Q3Byb2RfJTdCaSUzRDElN0QlNUUlN0JtJTdEK3AlNUNsZWZ0JTI4d18lN0JpJTdEKyU1Q21pZCt3XyU3QjElN0QlMkMrd18lN0IyJTdEJTJDKyU1Q2xkb3RzJTJDK3dfJTdCaS0xJTdEJTVDcmlnaHQlMjkrJTVDJTVDKyUyNiUzRCU1Q3Byb2RfJTdCaSUzRDElN0QlNUUlN0JtJTdEK3AlNUNsZWZ0JTI4d18lN0JpJTdEKyU1Q21pZCtjX2klNUNyaWdodCUyOSsrKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKzEr.png)
可以看到,language model 就是條件概率
的集合,但是直接計算每個
在語料庫中的條件概率是需要很大計算量的。因此在統計語言模型中,引入了馬爾可夫假設,即“一個詞出現的概率只與它前面出現的有限的一個或者 n 個詞有關”,將這
個詞稱為一個 gram,這就是著名的 n-gram 模型,因此可以將模型簡化為:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1wJTVDbGVmdCUyOHdfJTdCMSU3RCUyQyt3XyU3QjIlN0QlMkMrd18lN0IzJTdEJTJDKyU1Q2xkb3RzJTJDK3dfJTdCbSU3RCU1Q3JpZ2h0JTI5JTNEJTVDcHJvZF8lN0JpJTNEMSU3RCU1RSU3Qm0lN0QrcCU1Q2xlZnQlMjh3XyU3QmklN0QrJTVDbWlkK3dfJTdCaS1uJTJCMSU3RCUyQyslNUNsZG90cyUyQyt3XyU3QmktMSU3RCU1Q3JpZ2h0JTI5KyU1Q3RhZysy.png)
1.3 最大似然估計
上面的 n-gram 構建語言模型的方法實際上就是,將一個訓練語料庫中的每個
和它的
(也就是由前面n個
構成)的條件概率計算出來並儲存(實際操作上是統計每個gram出現的次數),然后下一次計算某個句子的出現的概率時,即
式,就在存儲中找到這個句子中出現的
和
的條件概率,然后乘起來即可。
因此,我們是否可以不事先計算並存儲每個
和
條件概率,而是建立一個模型(或者說函數),給這個模型一組
和
就能輸出它們的條件概率。
在機器學習領域有一個方法是:對所要考慮的問題建模后為其構造一個目標函數,然后對這個目標函數進行優化,從而求得一組最優的參數,最后利用這組最優參數對應的模型進行預測,也就是最大似然估計。
在建模統計語言模型時,利用最大似然估計,根據
式目標函數,我們可以寫出其對數似然函數如下:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNtYXRoY2FsJTdCTCU3RF8lN0JNTEUlN0QlM0QrJTVDc3VtXyU3QndfaSslNUNpbitzJTdEKyU1Q2xvZytwXyU3QiU1Q3RoZXRhJTdEJTI4d19pJTVDbWlkK2NfaSUyOSslNUN0YWcrMw==.png)
然后最大化對數似然函數
,實際上這樣就是將
看成
和
的函數,
為待定參數集: ![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1wXyU3QiU1Q3RoZXRhJTdEJTI4dyU3Q2MlMjklM0RGJTI4dyUyQ2MlM0IlNUN0aGV0YSUyOSslNUN0YWcrNA==.png)
這樣一旦最優參數集
可以確定,函數
就被唯一確定,那么對於任何概率
都可以用函數
來計算了。
1.4 神經概率語言模型
上面的方法似然看起來很美好,但其中有兩個問題:
- 如何構造一個好的函數
。 - 最大似然估計雖然理論上簡單可行,但對於某些模型,在實際計算時可能需要很大的計算量,因此未必容易。
首先來看第一個問題,這也就是我們為什么引入神經網絡,因為神經網絡理論上可以表示任何函數,那么通過訓練,肯定能找到這個合適的
,因此 Bengio 等人在 2003 年 A Neural Probabilistic Language Model [8] 中提出了神經概率語言模型(NPLM)。其不在受限於 gram 的大小,可以在包含任意大小上下文的情況下建模
的條件概率。
具體來看,它把語言模型的建立當作一個多分類問題,我們用
表示一個包含所有單詞的單詞庫,其大小為
,將
當成一對訓練樣本(實際上
會轉換成詞向量,這里不做詳解),通過神經網絡后和 softmax 后,輸出一個向量
, 其中每一維
表示上下文為
時 第
個單詞
是單詞庫中第
個單詞
的概率,訓練過程要求最后單詞庫中概率最大的單詞就是訓練樣本對中的
。這樣訓練結束后,給神經網絡一個上下文
,神經網絡就能預測在當前上下文
時,下一個 單詞
是單詞庫中的各個詞的概率
,通過這個我們也就可以構建語言模型。
我們知道,這種方法本質上就是擬合一個
和
的函數
,或者說建立一個參數集為
條件概率分布
,只要給出當前上下文
,我們就能夠直接計算下一個單詞
的概率。
假設輸入到 softmax 前的結果用
表示,實際上
是有含義的,它是一個 socring function ,輸出的分數用來量化
在上下文
中匹配性,那么
條件概率可以表示為以下形式: ![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0rJTVDYmVnaW4lN0JhbGlnbmVkJTdEK3BfJTdCJTVDdGhldGElN0QlMjh3JTdDYyUyOSUyNiUzRCslNUNmcmFjJTdCZXhwJTI4c18lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTI5JTdEJTdCJTVDc3VtXyU3QnclNUUlNUNwcmltZSslNUNpbitWJTdEZXhwJTI4c18lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTI5JTdEKyU1QyU1QyslMjYlM0QrJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCU3QlolMjhjJTI5JTdEKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKzU=.png)
式中,
表示下一個單詞是這個
在單詞庫中的概率;令
表示當前單詞庫中所有單詞的概率的累和,通常將這一項叫做“配分函數”或“歸一化因子”。一般來說,單詞庫
的數量是非常巨大的,因此計算
是非常昂貴、耗時的一件事,這也就是 NCE 要解決的問題。(見附錄1)
如果我們不考慮
的具體形式,那么
式實際上就可以當作我們在
式中所構造的函數
的表達式, 既然如此,那我們接着用 1.3 中提到的最大似然估計的方式來試着求解
的參數
。我們將從句子
中取樣的
看成經驗分布(數據分布)
,
式中的
可以寫成:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDbWF0aGNhbCU3QkwlN0RfJTdCTUxFJTdEKyUyNiUzRCslNUNzdW1fJTdCdyslNUNzaW0rJTVDdGlsZGUlN0JwJTdEJTI4dyU3Q2MlMjklN0QrJTVDbG9nK3BfJTdCJTVDdGhldGElN0QlMjh3KyU1Q21pZCtjJTI5KyU1QyU1QyslMjYlM0QlNUNtYXRoYmIrRV8lN0J3KyU1Q3NpbSslNUN0aWxkZSU3QnAlN0QlMjh3JTdDYyUyOSU3RCslNUNsb2clN0IlNUNmcmFjJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTdEJTdCWiUyOGMlMjklN0QlN0QrJTVDZW5kJTdCYWxpZ25lZCU3RCslNUN0YWcrNg==.png)
現在要最大化
,那么將其關於
求導:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEJTVDbWF0aGNhbCU3QkwlN0RfJTdCJTVDbWF0aHJtJTdCTUxFJTdEJTdEJTI2JTNEJTVDbWF0aGJiK0VfJTdCdyslNUNzaW0rJTVDdGlsZGUlN0JwJTdEJTI4dyU3Q2MlMjklN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEJTVDbG9nJTdCJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCU3QlolMjhjJTI5JTdEJTdEKyU1QyU1QyslMjYlM0QlNUNtYXRoYmIrRV8lN0J3KyU1Q3NpbSslNUN0aWxkZSU3QnAlN0QlMjh3JTdDYyUyOSU3RCslNUNsZWZ0JTVCKyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCsrJTVDbG9nJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTdELSslNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0QlNUNsb2clN0JaJTI4YyUyOSU3RCslNUNyaWdodCU1RCslNUMlNUMrJTI2JTNEJTVDbWF0aGJiK0VfJTdCdyslNUNzaW0rJTVDdGlsZGUlN0JwJTdEJTI4dyU3Q2MlMjklN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEKyslNUNsb2clN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QrLSsrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEKyU1Q2xvZyU3QlolMjhjJTI5JTdEKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKzc=.png)
這里解釋一下上面到最后一步的轉換,因為
,其中
為單詞庫
中所有的單詞,而單詞庫其中每個單詞的概率由
產生,因此
,與經驗分布
不相關,所以可以把期望
去掉。
式結果中的
計算如下:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEJTVDbG9nJTdCWiUyOGMlMjklN0QlMjYlM0QlNUNmcmFjJTdCMSU3RCU3QlolMjhjJTI5JTdEKyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RFolMjhjJTI5KyU1QyU1QyslMjYlM0QlNUNmcmFjJTdCMSU3RCU3QlolMjhjJTI5JTdEJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEKyU1Q3N1bV8lN0J3JTVFJTVDcHJpbWUrJTVDaW4rViU3RHVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSslNUMlNUMrJTI2JTNEJTVDZnJhYyU3QjElN0QlN0JaJTI4YyUyOSU3RCslNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0QrJTVDc3VtXyU3QnclNUUlNUNwcmltZSslNUNpbitWJTdEKyU3QmV4cCUyOHNfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSUyOSU3RCslNUMlNUMrJTI2JTNEJTVDc3VtXyU3QnclNUUlNUNwcmltZSslNUNpbitWJTdEKyU1Q2ZyYWMlN0IxJTdEJTdCWiUyOGMlMjklN0QrZXhwJTI4c18lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTI5KyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCtzXyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjkrJTVDJTVDKyUyNiUzRCU1Q3N1bV8lN0J3JTVFJTVDcHJpbWUrJTVDaW4rViU3RCtwXyU3QiU1Q3RoZXRhJTdEJTI4dyU3Q2MlMjkrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK3NfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSslNUMlNUMrJTI2JTNEJTVDbWF0aGJiJTdCRSU3RF8lN0J3KyU1Q3NpbStwXyU3QiU1Q3RoZXRhJTdEJTI4dyU3Q2MlMjklN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK3NfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSslNUMlNUMrJTI2JTNEJTVDbWF0aGJiJTdCRSU3RF8lN0J3KyU1Q3NpbStwXyU3QiU1Q3RoZXRhJTdEJTI4dyU3Q2MlMjklN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK2xvZ3VfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSslNUNlbmQlN0JhbGlnbmVkJTdEKyU1Q3RhZys4.png)
將
式結果帶回
式中得:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEJTVDbWF0aGNhbCU3QkwlN0RfJTdCJTVDbWF0aHJtJTdCTUxFJTdEJTdEKyUyNiUzRCU1Q21hdGhiYitFXyU3QncrJTVDc2ltKyU1Q3RpbGRlJTdCcCU3RCUyOHclN0NjJTI5JTdEKyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCsrJTVDbG9nJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTdEKy0rKyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCslNUNsb2clN0JaJTI4YyUyOSU3RCslNUMlNUMrJTI2JTNEJTVDbWF0aGJiK0VfJTdCdyslNUNzaW0rJTVDdGlsZGUlN0JwJTdEJTI4dyU3Q2MlMjklN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEKyslNUNsb2clN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QrLSslNUNtYXRoYmIlN0JFJTdEXyU3QncrJTVDc2ltK3BfJTdCJTVDdGhldGElN0QlMjh3JTdDYyUyOSU3RCslNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0QrbG9ndV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5KyU1QyU1QyslMjYlM0QlNUNzdW1fdyU3QiU1Q3RpbGRlJTdCcCU3RCUyOHclN0NjJTI5KyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCsrJTVDbG9nJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTdEJTdEKy0rJTVDc3VtX3crJTdCcF8lN0IlNUN0aGV0YSU3RCUyOHclN0NjJTI5KyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCtsb2d1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QrJTVDJTVDKyUyNiUzRCU1Q3N1bV93JTdCJTVDbGVmdCU1QislNUN0aWxkZSU3QnAlN0QlMjh3JTdDYyUyOSslNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0QrKyU1Q2xvZyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCstK3BfJTdCJTVDdGhldGElN0QlMjh3JTdDYyUyOSslNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0QrbG9ndV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5KyU1Q3JpZ2h0JTVEJTdEKyU1QyU1QyslMjYlM0QlNUNzdW1fdyU3QiU1Q2xlZnQlNUIlNUNsZWZ0JTI4JTVDdGlsZGUlN0JwJTdEJTI4dyU3Q2MlMjktK3BfJTdCJTVDdGhldGElN0QlMjh3JTdDYyUyOSU1Q3JpZ2h0JTI5JTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK2xvZ3VfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU1Q3JpZ2h0JTVEJTdEKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKzk=.png)
最大似然好像很容易,但是實際上還是繞不開對“歸一化常數”的計算,所以就需要 NCE 登場了。
2 什么是 NCE
上一節中說明了計算
非常昂貴這個問題需要解決,一個簡單的思路是將
也看出模型的一個參數
來進行訓練,但是這種方法不適合於上面提到的最大似然估計,因為由
式可以看出來,它會直接將
趨於
來獲得最大似然。因此,有人提利用這個思想提出了一些不定義
,直接用
估計模型的方法,如 contrastive divergence (Hinton, 2002)和 score matching (Hyvarinen, 2005)。(見附錄2)
而 NCE 不同於上面兩種方法,它是通過最大化同一個目標函數來估計模型參數
和歸一化常數,NCE 的核心思想就是通過學習數據分布樣本和噪聲分布樣本之間的區別,從而發現數據中的一些特性,因為這個方法需要依靠與噪聲數據進行對比,所以稱為“噪聲對比估計(Noise Contrastive Estimation)”。更具體來說,NCE 將問題轉換成了一個二分類問題,分類器能夠對數據樣本和噪聲樣本進行二分類,而這個分類器的參數
就等價於1.4中我們想要得到
。(見附錄3)
現在假設一個特定上下文
的數據分布為
,我們稱從它里面取出的樣本為正樣本,令類別
;而另一個與
無關的噪聲分布為
,我們稱從里面取出的樣本為負樣本,令類別為
。遵循 Gutmann and Hyvrinen (2012) [3] 中的設置,假設現在取出了
個正樣本和
個負樣本,將這些正負樣本混合形成一個混合分布
。
我們得到下面這些概率:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrcCUyOEQlM0QxJTI5JTNEJTVDZnJhYyU3QmtfZCU3RCU3QmtfZCUyQmtfbiU3RCslNUMlNUMrcCUyOEQlM0QwJTI5JTNEJTVDZnJhYyU3QmtfbiU3RCU3QmtfZCUyQmtfbiU3RCslNUMlNUMrcCUyOHclN0NEJTNEMSUyQ2MlMjklM0QrJTVDdGlsZGUlN0JwJTdEJTI4dyU3Q2MlMjkrJTVDJTVDK3AlMjh3JTdDRCUzRDAlMkNjJTI5JTNEcSUyOHclMjkrJTVDZW5kJTdCYWxpZ25lZCU3RCslNUN0YWcrJTdCMTAlN0Q=.png)
所以可以計算后驗概率:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrcCUyOEQlM0QwJTdDdyUyQ2MlMjkrJTI2JTNEJTVDZnJhYyU3QnAlMjhEJTNEMCUyOXAlMjh3JTdDRCUzRDAlMkNjJTI5JTdEJTdCcCUyOEQlM0QwJTI5cCUyOHclN0NEJTNEMCUyQ2MlMjklMkJwJTI4RCUzRDElMjlwJTI4dyU3Q0QlM0QxJTJDYyUyOSU3RCslNUMlNUMrJTI2JTNEJTVDZnJhYyU3QiU1Q2ZyYWMlN0JrX24lN0QlN0JrX2QlMkJrX24lN0QrJTVDdGltZXMrcSUyOHclMjklN0QlN0IlNUNmcmFjJTdCa19kJTdEJTdCa19kJTJCa19uJTdEKyU1Q3RpbWVzKyU1Q3RpbGRlJTdCcCU3RCUyOHcrJTVDbWlkK2MlMjklMkIlNUNmcmFjJTdCa19uJTdEJTdCa19kJTJCa19uJTdEKyU1Q3RpbWVzK3ElMjh3JTI5JTdEKyU1QyU1QyslMjYlM0QlNUNmcmFjJTdCJTVDZnJhYyU3QmtfbiU3RCU3QmtfZCU3RCslNUN0aW1lcytxJTI4dyUyOSU3RCU3QiU1Q3RpbGRlJTdCcCU3RCUyOHcrJTVDbWlkK2MlMjklMkIlNUNmcmFjJTdCa19uJTdEJTdCa19kJTdEKyU1Q3RpbWVzK3ElMjh3JTI5JTdEKyU1QyU1QyslNUMlNUMrK3AlMjhEJTNEMSU3Q3clMkNjJTI5JTI2JTNEKyU1Q2ZyYWMlN0JwJTI4RCUzRDElMjlwJTI4dyU3Q0QlM0QxJTJDYyUyOSU3RCU3QnAlMjhEJTNEMCUyOXAlMjh3JTdDRCUzRDAlMkNjJTI5JTJCcCUyOEQlM0QxJTI5cCUyOHclN0NEJTNEMSUyQ2MlMjklN0QrJTVDJTVDKyUyNiUzRCU1Q2ZyYWMlN0IlNUNmcmFjJTdCa19kJTdEJTdCa19kJTJCa19uJTdEKyU1Q3RpbWVzKyU1Q3RpbGRlJTdCcCU3RCUyOHclN0NjJTI5JTdEJTdCJTVDZnJhYyU3QmtfZCU3RCU3QmtfZCUyQmtfbiU3RCslNUN0aW1lcyslNUN0aWxkZSU3QnAlN0QlMjh3KyU1Q21pZCtjJTI5JTJCJTVDZnJhYyU3QmtfbiU3RCU3QmtfZCUyQmtfbiU3RCslNUN0aW1lcytxJTI4dyUyOSU3RCslNUMlNUMrJTI2JTNEJTVDZnJhYyU3QiU1Q3RpbGRlJTdCcCU3RCUyOHcrJTVDbWlkK2MlMjklN0QlN0IlNUN0aWxkZSU3QnAlN0QlMjh3KyU1Q21pZCtjJTI5JTJCJTVDZnJhYyU3QmtfbiU3RCU3QmtfZCU3RCslNUN0aW1lcytxJTI4dyUyOSU3RCslNUNlbmQlN0JhbGlnbmVkJTdEKyU1Q3RhZyslN0IxMSU3RA==.png)
我們令負樣本和正樣本的比例為:
,則有:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrcCUyOEQlM0QwJTdDdyUyQ2MlMjkrJTI2JTNEJTVDZnJhYyU3QmsrJTVDdGltZXMrcSUyOHclMjklN0QlN0IlNUN0aWxkZSU3QnAlN0QlMjh3KyU1Q21pZCtjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCslNUMlNUMrJTVDJTVDKytwJTI4RCUzRDElN0N3JTJDYyUyOSslMjYlM0QlNUNmcmFjJTdCJTVDdGlsZGUlN0JwJTdEJTI4dyslNUNtaWQrYyUyOSU3RCU3QiU1Q3RpbGRlJTdCcCU3RCUyOHcrJTVDbWlkK2MlMjklMkJrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKyU3QjEyJTdE.png)
現在我們觀察
式,NCE 所做的事情就是將式中的經驗分布
替換成概率模型
,使后驗概率成為參數為
的函數。但問題是這樣現在這樣的形式還是需要計算
,我們只是將原來問題進行了一定的轉換從而引入了噪聲分布。為了解決這個問題,NCE 做了兩個設定:
- 一個就是前面提到的,將
作為一個參數
來進行估計,相當於引進了一個新的參數。 - 第二個是,事實證明(Mnih and Teh, 2012),對於參數很多的神經網絡來說,我們將
固定為 1 對每個
仍是有效的。
第二個設定,即減少了參數的數量,又使模型的輸出符合”歸一化“的性質(即
),是很合理的,如果
,由
式可以得到
, 那么
式可以寫成如下形式,即具有參數
的后驗概率:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFycmF5JTdEJTdCbCU3RCtwXyU3QiU1Q3RoZXRhJTdEJTI4RCUzRDAlN0N3JTJDYyUyOSUzRCU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QrJTVDJTVDK3BfJTdCJTVDdGhldGElN0QlMjhEJTNEMSU3Q3clMkNjJTI5JTNEJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCslNUNlbmQlN0JhcnJheSU3RCslNUN0YWcrJTdCMTMlN0Q=.png)
現在我們有了參數為
的二元分類問題,假設標簽
為伯努利分布,那么很容易寫出他的條件對數似然
如下,實際上在它前面加上負號后,
也就等價於 logistics 分類里的 log loss,或者說交叉熵損失函數:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDbWF0aGNhbCU3QkwlN0QlNUVjXyU3QiU1Q21hdGhybSU3Qk5DRSU3RCU3RCslMjYlM0QlNUNzdW1fJTdCdCUzRDElN0QlNUUlN0JrX2QlMkJrX24lN0QrJTVDbGVmdCU1QitEX3QrJTVDbG9nK1AlMjhEJTNEMSU3Q3dfdCUyQ2MlMjkrJTJCJTI4MS1EX3QlMjkrJTVDbG9nK1AlMjhEJTNEMCU3Q3dfdCUyQ2MlMjkrJTVDcmlnaHQlNUQrJTVDJTVDKyUyNiUzRCU1Q3N1bV8lN0J0JTNEMSU3RCU1RSU3QmtfZCU3RCU1Q2xvZytQJTI4RCUzRDElN0N3X3QlMkNjJTI5KyUyQislNUNzdW1fJTdCdCUzRDElN0QlNUUlN0JrX24lN0QrJTVDbG9nK1AlMjhEJTNEMCU3Q3dfdCUyQ2MlMjkrJTVDJTVDKyUyNiUzRCU1Q3N1bV8lN0J0JTNEMSU3RCU1RSU3QmtfZCU3RCU1Q2ZyYWMlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QrJTJCKyU1Q3N1bV8lN0J0JTNEMSU3RCU1RSU3QmtfbiU3RCslNUNmcmFjJTdCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklMkJrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEKyU1QyU1QyslNUNlbmQlN0JhbGlnbmVkJTdEKyU1Q3RhZyslN0IxNCU3RA==.png)
而 NCE 的目標函數還需要在
式的基礎上除以正樣本的數量
,即
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrSiU1RWNfJTdCTkNFJTdEKyUyNiUzRCU1Q2ZyYWMlN0IxJTdEJTdCa19kJTdEJTVDbGVmdCU1QiU1Q3N1bV8lN0J0JTNEMSU3RCU1RSU3QmtfZCU3RCU1Q2ZyYWMlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QrJTJCKyU1Q3N1bV8lN0J0JTNEMSU3RCU1RSU3QmtfbiU3RCslNUNmcmFjJTdCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklMkJrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTVDcmlnaHQlNUQrJTVDJTVDKyUyNiUzRCU1Q2ZyYWMlN0IxJTdEJTdCa19kJTdEJTVDc3VtXyU3QnQlM0QxJTdEJTVFJTdCa19kJTdEJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCslMkIrJTVDZnJhYyU3QjElN0QlN0JrX2QlN0QrJTVDc3VtXyU3QnQlM0QxJTdEJTVFJTdCa19uJTdEKyU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QrJTVDJTVDKyUyNiUzRCU1Q2ZyYWMlN0IxJTdEJTdCa19kJTdEJTVDc3VtXyU3QnQlM0QxJTdEJTVFJTdCa19kJTdEJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCslMkIrJTVDZnJhYyU3QmslN0QlN0JrX24lN0QrJTVDc3VtXyU3QnQlM0QxJTdEJTVFJTdCa19uJTdEKyU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QrJTVDZW5kJTdCYWxpZ25lZCU3RCslNUN0YWcrJTdCMTUlN0Q=.png)
當數據數量很大時,根據大數定律,上式也可以寫成:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrSiU1RWNfJTdCTkNFJTdEKyUyNiUzRCU1Q2ZyYWMlN0IxJTdEJTdCa19kJTdEJTVDc3VtXyU3QnQlM0QxJTdEJTVFJTdCa19kJTdEJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCslMkIrJTVDZnJhYyU3QmslN0QlN0JrX24lN0QrJTVDc3VtXyU3QnQlM0QxJTdEJTVFJTdCa19uJTdEKyU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QrJTVDJTVDKyUyNiUzRCU1Q21hdGhiYiU3QkUlN0RfJTdCdyslNUNzaW0rJTVDdGlsZGUlN0JwJTdEJTI4dyU3Q2MlMjklN0QrJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCslMkIrayslNUNtYXRoYmIlN0JFJTdEXyU3QncrJTVDc2ltK3ElMjh3JTI5JTdEKyU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QrJTVDZW5kJTdCYWxpZ25lZCU3RCslNUN0YWcrJTdCMTYlN0Q=.png)
要最大化上述對數似然函數,也就是最大化如下目標函數:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrSiU1RWNfJTdCTkNFJTdEJTI2JTNEKyslNUNtYXRoYmIlN0JFJTdEXyU3QncrJTVDc2ltKyU1Q3RpbGRlJTdCcCU3RCUyOHclN0NjJTI5JTdEJTdCJTVDbG9nJTdCJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3RCU3RCslMkIrayU1Q21hdGhiYiU3QkUlN0RfJTdCdyslNUNzaW0rcSUyOHclMjklN0QrJTdCJTVDbG9nJTdCJTVDZnJhYyU3QmsrJTVDdGltZXMrcSUyOHclMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3RCU3RCslNUMlNUMrJTVDZW5kJTdCYWxpZ25lZCU3RCslNUN0YWcrJTdCMTclN0Q=.png)
NCE 目標函數中的
實際上就是在設置“二分類問題”時,選取的負樣本與正樣本的比例,通常的做法會默認正樣本數量為 1 ,然后將負樣本的數量
作為一個手動輸入的參數,從而確定這個比例
。在 TensorFlow 的相關源碼 中,正樣本的數量 num_true 默認值為1,如果設置大於 1,那么會進行一個
的歸一化。
可以看到實際上這個比例
對我們的 NCE 優化是有影響的,所以 NCE 的作者也考慮了什么樣的比例
是最好的,我這里就直接說結論了,有興趣的可以看詳細看下這篇論文 Gutmann and Hyvrinen (2012) [3]。
結論是:對於設置的噪聲分布
,我們實際上是希望它盡量接近數據分布
,否則這個二分類任務就過於簡單了,也就無法很好的學到數據特性。而作者通過實驗和推導證明(我在第三節中也會簡單的證明),當負樣本和正樣本數量之比
越大,那么我們的 NCE 對於噪聲分布好壞的依賴程度也就越小。換句話說,作者建議我們在計算能力運行的條件下,盡可能的增大比值
。也許這也就是大家都默認將正樣本數量設置為 1 的原因:正樣本至少取要 1 個,所以最大化比值
,也就是盡可能取更多負樣本的同時,將正樣本數量取最小值 1。
另外,如果我們希望目標函數不是只針對一個特定的上下文
,而是使不同的上下文可以共享參數,也就是設置一批上下文的全局目標函數:
到這,NCE 的構建就完成了,總結一下就是:從上下文
中取出單詞作為正樣本,從噪聲分布中取出單詞作為負樣本,正負樣本數量比為
,然后訓練一個二分類器,通過一個類似於交叉熵損失函數的目標函數進行訓練(如果取正樣本數量為 1,那么
式與
式等價,NCE 目標函數就等價於交叉熵損失函數)。
3 NCE 的原理
上面雖然推導了那么多公式,但實際只是按照 NCE 的思想進行問題的轉換,那么這樣做究竟是否正確呢?根據附錄 3 的描述,直覺上看好像是沒有問題的。
我們再看回
式,我們對它關於
進行求導:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK0olNUVjXyU3Qk5DRSU3RCUyOCU1Q3RoZXRhJTI5JTI2JTNEKyslNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0QrKyU1Q2xlZnQlNUIlNUNtYXRoYmIlN0JFJTdEXyU3QncrJTVDc2ltKyU1Q3RpbGRlJTdCcCU3RCUyOHclN0NjJTI5JTdEJTdCJTVDbG9nJTdCJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3RCU3RCslMkIrayU1Q21hdGhiYiU3QkUlN0RfJTdCdyslNUNzaW0rcSUyOHclMjklN0QrJTdCJTVDbG9nJTdCJTVDZnJhYyU3QmsrJTVDdGltZXMrcSUyOHclMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3RCU3RCslNUNyaWdodCU1RCslNUMlNUMrJTI2JTNEJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEKyU1Q3N1bV8lN0J3JTdEKyU1Q3RpbGRlJTdCcCU3RCUyOHclN0NjJTI5KyU1Q2xvZyU3QiU1Q2ZyYWMlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QlN0QrJTJCKyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCtrJTVDc3VtXyU3QnclN0RxJTI4dyUyOSslNUNsb2clN0IlNUNmcmFjJTdCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklMkJrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdEKyU1QyU1QyslMjYlM0QlNUNzdW1fJTdCdyU3RCslNUN0aWxkZSU3QnAlN0QlMjh3JTdDYyUyOSU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCsrJTVDbG9nJTdCJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3RCslMkIrayU1Q3N1bV8lN0J3JTdEcSUyOHclMjkrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEKyslNUNsb2clN0IlNUNmcmFjJTdCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklMkJrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdEKyU1QyU1QyslNUNlbmQlN0JhbGlnbmVkJTdEKyU1Q3RhZyslN0IxOSU3RA==.png)
分布對上面的兩項進行求導:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK2xvZyU3QiU1Q2ZyYWMlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOCU3QnclN0QlMjklN0QlN0QrKyUyNiUzRCstJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEbG9nJTdCJTI4MSUyQiU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTdEJTI5JTdEKyU1QyU1QyslMjYlM0QtJTVDZnJhYyU3QjElN0QlN0IxJTJCJTVDZnJhYyU3QmsrJTVDdGltZXMrcSUyOHclMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QlN0QlNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0QlNUNmcmFjJTdCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCslNUMlNUMrJTI2JTNELSU1Q2ZyYWMlN0IxJTdEJTdCMSUyQiU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjglN0J3JTdEJTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTdEJTdEKyUyOGsrJTVDdGltZXMrcSUyOHclMjklMjkrJTVDZnJhYyU3Qi0xJTdEKyU3QiU1QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU1RCU1RTIlN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEKyU1Q2ZyYWMlN0IxJTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSU3RCslNUMlNUMrJTI2JTNEJTVDZnJhYyU3QmsrJTVDdGltZXMrcSUyOHclMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCslNUNmcmFjJTdCMSU3RCU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCslNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0QrJTVDZnJhYyU3QjElN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QrJTVDJTVDKyUyNiUzRCU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK2xvZyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCslNUNlbmQlN0JhbGlnbmVkJTdEKyU1Q3RhZyslN0IyMCU3RA==.png)
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK2xvZyU3QiU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QlN0QrKyUyNiUzRC0lNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0Rsb2clN0IlMjgxJTJCJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCU3QmsrJTVDdGltZXMrcSUyOHclMjklN0QlMjklN0QrJTVDJTVDKyUyNiUzRC0lNUNmcmFjJTdCMSU3RCU3QjElMkIlNUNmcmFjJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTdEJTdCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3RCU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCU1Q2ZyYWMlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEKyU1QyU1QyslMjYlM0QtJTVDZnJhYyU3QjElN0QlN0IxJTJCJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCU3QmsrJTVDdGltZXMrcSUyOHclMjklN0QlN0QrJTVDZnJhYyU3QjElN0QlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEKyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RHVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSslNUMlNUMrJTI2JTNELSU1Q2ZyYWMlN0IxJTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5KyUyQitrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEKyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RHVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSslNUMlNUMrJTI2JTNELSU1Q2ZyYWMlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjkrJTJCK2srJTVDdGltZXMrcSUyOHclMjklN0QrJTVDZnJhYyU3QjElN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5KyU1QyU1QyslMjYlM0QtJTVDZnJhYyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSslMkIrayslNUN0aW1lcytxJTI4dyUyOSU3RCslNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0Rsb2clN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QrJTVDJTVDKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKyU3QjIxJTdE.png)
將上面兩個結果再帶回
式中,並根據前面
的設定,也就是
:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK0olNUVjXyU3Qk5DRSU3RCUyOCU1Q3RoZXRhJTI5KyUyNiUzRCU1Q3N1bV8lN0J3JTdEKyU1Q3RpbGRlJTdCcCU3RCUyOHclN0NjJTI5JTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEKyslNUNsb2clN0IlNUNmcmFjJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSU3RCU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklMkJrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdEKyUyQitrJTVDc3VtXyU3QnclN0RxJTI4dyUyOSslNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0QrKyU1Q2xvZyU3QiU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QlN0QrJTVDJTVDKyUyNiUzRCU1Q3N1bV8lN0J3JTdEKyU1Q3RpbGRlJTdCcCU3RCUyOHclN0NjJTI5KyU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkMrYyUyOSUyQmsrJTVDdGltZXMrcSUyOHclMjklN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEKyU1Q2xvZyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCstK2slNUNzdW1fJTdCdyU3RHElMjh3JTI5KyU1Q2ZyYWMlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjkrJTJCK2srJTVDdGltZXMrcSUyOHclMjklN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEJTVDbG9nJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTdEKyU1QyU1QyslMjYlM0QlNUNzdW1fJTdCdyU3RCslNUN0aWxkZSU3QnAlN0QlMjh3JTdDYyUyOSslNUNmcmFjJTdCayslNUN0aW1lcytxJTI4dyUyOSU3RCU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDK2MlMjklMkJrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEKyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCslNUNsb2clN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjklN0QrLSslNUNzdW1fJTdCdyU3RCt1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQ2MlMjkrKyU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5KyUyQitrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEKyU1Q2ZyYWMlN0IlNUNwYXJ0aWFsJTdEJTdCJTVDcGFydGlhbCslNUN0aGV0YSU3RCU1Q2xvZyU3QnVfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU3RCslNUMlNUMrJTI2JTNEJTVDc3VtX3clN0IlNUNsZWZ0JTVCJTVDZnJhYyU3QmsrJTVDdGltZXMrcSUyOHclMjklN0QlN0J1XyU3QiU1Q3RoZXRhJTdEJTI4dyUyQytjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCslNUNsZWZ0JTI4JTVDdGlsZGUlN0JwJTdEJTI4dyU3Q2MlMjktK3VfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU1Q3JpZ2h0JTI5JTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEbG9nK3VfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU1Q3JpZ2h0JTVEJTdEKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKyU3QjIyJTdE.png)
上一節中我們設定了
,也就是
,因此:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK0olNUVjXyU3Qk5DRSU3RCUyOCU1Q3RoZXRhJTI5KyUyNiUzRCU1Q3N1bV93JTdCJTVDbGVmdCU1QiU1Q2ZyYWMlN0JrKyU1Q3RpbWVzK3ElMjh3JTI5JTdEJTdCcF8lN0IlNUN0aGV0YSU3RCUyOHclN0NjJTI5JTJCayslNUN0aW1lcytxJTI4dyUyOSU3RCslNUNsZWZ0JTI4JTVDdGlsZGUlN0JwJTdEJTI4dyU3Q2MlMjktK3BfJTdCJTVDdGhldGElN0QlMjh3JTdDYyUyOSU1Q3JpZ2h0JTI5JTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEbG9nK3VfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU1Q3JpZ2h0JTVEJTdEKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKyU3QjIzJTdE.png)
這里的參數
依然指的是負樣本與正樣本數量的比例,如果我們令
的話,那么:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDbGltXyU3QmsrJTVDdG8rJTVDaW5mdHklN0QrJTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEK0olNUVjXyU3Qk5DRSU3RCUyOCU1Q3RoZXRhJTI5KyUyNiUzRCU1Q2xpbV8lN0JrKyU1Q3RvKyU1Q2luZnR5JTdEKyU1Q3N1bV93JTdCJTVDbGVmdCU1QiU1Q2ZyYWMlN0JxJTI4dyUyOSU3RCU3QislNUNmcmFjJTdCcF8lN0IlNUN0aGV0YSU3RCUyOHclN0NjJTI5JTdEJTdCayU3RCUyQnElMjh3JTI5JTdEKyU1Q2xlZnQlMjglNUN0aWxkZSU3QnAlN0QlMjh3JTdDYyUyOS0rcF8lN0IlNUN0aGV0YSU3RCUyOHclN0NjJTI5JTVDcmlnaHQlMjklNUNmcmFjJTdCJTVDcGFydGlhbCU3RCU3QiU1Q3BhcnRpYWwrJTVDdGhldGElN0Rsb2crdV8lN0IlNUN0aGV0YSU3RCUyOHclMkNjJTI5JTVDcmlnaHQlNUQlN0QrJTVDJTVDKyUyNiUzRCslNUNzdW1fdyU3QiU1Q2xlZnQlNUIlNUNsZWZ0JTI4JTVDdGlsZGUlN0JwJTdEJTI4dyU3Q2MlMjktK3BfJTdCJTVDdGhldGElN0QlMjh3JTdDYyUyOSU1Q3JpZ2h0JTI5JTVDZnJhYyU3QiU1Q3BhcnRpYWwlN0QlN0IlNUNwYXJ0aWFsKyU1Q3RoZXRhJTdEbG9nK3VfJTdCJTVDdGhldGElN0QlMjh3JTJDYyUyOSU1Q3JpZ2h0JTVEJTdEKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKyU3QjI0JTdE.png)
可以看到,當
趨於無窮時,
式中 NCE 目標函數的梯度和
式中 MLE 對數似然函數梯度是等價的,也就是說我們通過 NCE 轉換后的優化目標,本質上就是對極大似然估計方法的一種近似,並且隨着負樣本和正樣本數量比
的增大,這種近似越精確,這也解釋了為什么作者建議我們將
設置的越大越好。
4 從 NCE 到 InfoNCE
到目前為止,應該對 NCE 的來龍去脈比較清楚了(公式太多,不知道多少人有耐心看到這里了...)。
InfoNCE 是在 Representation Learning with Contrastive Predictive Coding 這篇論文中提出的,這里不會具體介紹 CPC ,而是着重說明如何借鑒 NCE 的思想提出 InfoNCE 並用於 CPC 中的,如果還不太了解的可以看我的這篇文章 ”對 CPC (對比預測編碼) 的理解“。
簡單來說,CPC(對比預測編碼) 就是一種通過無監督任務來學習(編碼)高維數據的特征表示(representation),而通常采取的無監督策略就是根據上下文預測未來或者缺失的信息,NLP 中已經利用這種思想來學習 word 的 representation [1]。
要構建這樣的預測任務,一個方法是直接建模條件生成模型
根據當前上下文
預測
個時刻后的數據
(假設是像文本、語音中那樣的序列數據);但作者覺得這樣的方法過於針對細節進行重建,並不是很好,於是引入了互信息的思想,認為我們可以通過最大化當前上下文
和要未來的數據
之間的互信息來構建預測任務,互信息的表示如下:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrSSUyOHhfJTdCdCUyQmslN0QrJTNCK2NfdCUyOSUzRCU1Q3N1bV8lN0J4JTJDK2MlN0QrcCUyOHhfJTdCdCUyQmslN0QlMkMrY190JTI5KyU1Q2xvZyslNUNmcmFjJTdCcCUyOHhfJTdCdCUyQmslN0QrJTVDbWlkK2NfdCUyOSU3RCU3QnAlMjh4XyU3QnQlMkJrJTdEJTI5JTdEKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKyU3QjI1JTdE.png)
我們沒辦法知道
和
之間的聯合分布
,因此要最大化
,就需要從
入手,即最大化
。
那么如何訓練
呢?我們可以把這個比例定義為密度比,那么根據附錄 3中的思想,分子
就相當於
,是我們想得到的目標函數;分母
就相當於
,是用來進行對比的參考分布(噪聲)。因此,我們就可以根據 NCE 中提供的思路,將問題轉換為一個二分類的問題,更具體來解釋:
- 從條件
中取出數據稱為“正樣本”,它是根據上下文
所做出的預測數據,將它和這個上下文一起組成“正樣本對”,類別標簽設為 1。 - 將從
中取出的樣本稱為“負樣本”,它是與當前上下文
沒有必然關系的隨機數據,將它和這個上下文
一起組成“負樣本對”,類別標簽設為 0。 - 正樣本也就是與
間隔固定步長
的數據,根據 NCE 中說明的設定,正樣本選取 1 個;因為在 NCE 中證明了噪聲分布與數據分布越接近越好,所以負樣本就直接在當前序列中隨機選取(只要不是那一個正樣本就行),負樣本數量越多越好。
所以要做的就是訓練一個 logistics 分類模型,來區分這兩個正負樣本對。問題轉換后,訓練的模型能夠“成功分辨出每個正負樣本的能力”就等價於“根據
預測
的能力”。
根據 NCE 中的設置,現在假設給出一組大小為
的
,其中包含
個從
中取樣正樣本和
從一個指定分布(用於對比的噪聲分布)
,假設第
是正樣本,且
,上下文
表示
之前的數據,那么能夠正確的同時找到那一個正樣本
和
個負樣本的情況可以寫成如下形式:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrcCU1Q2xlZnQlMjhkJTNEaSslNUNtaWQrWCUyQytjXyU3QnQlN0QlNUNyaWdodCUyOSUyNiUzRHAlMjh4XyU3QnQlMkJrJTdEJTdDY190JTI5JTVDJTVDKyUyNiUzRCU1Q2ZyYWMlN0JwJTVDbGVmdCUyOHhfJTdCdCUyQmslN0QrJTVDbWlkK2NfJTdCdCU3RCU1Q3JpZ2h0JTI5KyU1Q3Byb2RfJTdCbCslNUNuZXErdCUyQmslN0QrcCU1Q2xlZnQlMjh4XyU3QmwlN0QlNUNyaWdodCUyOSU3RCU3QiU1Q3N1bV8lN0JqJTNEMSU3RCU1RSU3Qk4lN0QrcCU1Q2xlZnQlMjh4XyU3QmolN0QrJTVDbWlkK2NfJTdCdCU3RCU1Q3JpZ2h0JTI5KyU1Q3Byb2RfJTdCbCslNUNuZXEraiU3RCtwJTVDbGVmdCUyOHhfJTdCbCU3RCU1Q3JpZ2h0JTI5JTdEKyU1QyU1QyslMjYlM0QlNUNmcmFjJTdCJTVDZnJhYyU3QnAlNUNsZWZ0JTI4eF8lN0J0JTJCayU3RCslNUNtaWQrY18lN0J0JTdEJTVDcmlnaHQlMjklN0QlN0JwJTVDbGVmdCUyOHhfJTdCdCUyQmslN0QlNUNyaWdodCUyOSU3RCU3RCU3QiU1Q3N1bV8lN0JqJTNEMSU3RCU1RSU3Qk4lN0QrJTVDZnJhYyU3QnAlNUNsZWZ0JTI4eF8lN0JqJTdEKyU1Q21pZCtjXyU3QnQlN0QlNUNyaWdodCUyOSU3RCU3QnAlNUNsZWZ0JTI4eF8lN0JqJTdEJTVDcmlnaHQlMjklN0QlN0QrJTVDZW5kJTdCYWxpZ25lZCU3RCslNUN0YWcrJTdCMjYlN0Q=.png)
我們最大化上面這個式子,即最大化模型“成功分辨出每個正負樣本的能力”,也就是最大化我們定義的密度比,也就是最大化
與
的互信息。
參考
式,可以寫出根據
預測
的形式:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrcCUyOHhfJTdCdCUyQmslN0QlN0NjX3QlMjklMjYlM0QrJTVDZnJhYyU3QmV4cCUyOHNfJTdCJTVDdGhldGElN0QlMjh4XyU3QnQlMkJrJTdEJTJDY190JTI5JTI5JTdEJTdCJTVDc3VtXyU3QnhfaislNUNpbitYJTdEZXhwJTI4c18lN0IlNUN0aGV0YSU3RCUyOHhfJTdCaiU3RCUyQ2NfdCUyOSUyOSU3RCslNUMlNUMrJTVDZW5kJTdCYWxpZ25lZCU3RCslNUN0YWcrJTdCMjclN0Q=.png)
在上式中,我們知道
是一個 socring function ,輸出的分數用來量化
在上下文
中匹配性;放在這里
也就是量化對
預測的結果和真實結果的相似程度,CPC 文章中用余弦相似度來量化,並且將
定義為
,也就是:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrcCUyOHhfJTdCdCUyQmslN0QlN0NjX3QlMjklMjYlM0QrJTVDZnJhYyU3QmZfayUyOHhfJTdCdCUyQmslN0QlMkNjX3QlMjklN0QlN0IlNUNzdW1fJTdCeF9qKyU1Q2luK1glN0RmX2slMjh4XyU3QmolN0QlMkNjX3QlMjklN0QrJTVDJTVDKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKyU3QjI4JTdE.png)
現在對比
兩個式子,這兩個式子的目標是一致的,也就意味着
實際上就可以作為密度比
的一種表示形式,它們之間雖不直接等價,但是含義上是正相關的,即:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrZl9rJTI4eF8lN0J0JTJCayU3RCUyQ2NfdCUyOSU1Q3Byb3B0byU1Q2ZyYWMlN0JwJTI4eF8lN0J0JTJCayU3RCU3Q2NfdCUyOSU3RCU3QnAlMjh4XyU3QnQlMkJrJTdEJTI5JTdEKyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKyU3QjI4JTdE.png)
現在我們的優化目標就是使
或
式的結果最大,所以可以寫出對應形式的交叉熵損失如下:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDbWF0aGNhbCU3QkwlN0RfJTdCTiU3RCUyNiUzRC0lNUNzdW1fJTdCWCU3RCU1Q2xlZnQlNUJwJTI4eCUyQ2MlMjklNUNsb2crJTVDZnJhYyU3QmZfJTdCayU3RCU1Q2xlZnQlMjh4XyU3QnQlMkJrJTdEJTJDK2NfJTdCdCU3RCU1Q3JpZ2h0JTI5JTdEJTdCJTVDc3VtXyU3QnhfJTdCaiU3RCslNUNpbitYJTdEK2ZfJTdCayU3RCU1Q2xlZnQlMjh4XyU3QmolN0QlMkMrY18lN0J0JTdEJTVDcmlnaHQlMjklN0QlNUNyaWdodCU1RCslNUMlNUMrJTI2JTNELSU1Q21hdGhiYiU3QkUlN0RfWCU1Q2xlZnQlNUIlNUNsb2crJTVDZnJhYyU3QmZfJTdCayU3RCU1Q2xlZnQlMjh4XyU3QnQlMkJrJTdEJTJDK2NfJTdCdCU3RCU1Q3JpZ2h0JTI5JTdEJTdCJTVDc3VtXyU3QnhfJTdCaiU3RCslNUNpbitYJTdEK2ZfJTdCayU3RCU1Q2xlZnQlMjh4XyU3QmolN0QlMkMrY18lN0J0JTdEJTVDcmlnaHQlMjklN0QlNUNyaWdodCU1RCslNUMlNUMrJTVDZW5kJTdCYWxpZ25lZCU3RCslNUN0YWcrJTdCMjklN0Q=.png)
上式就是最終得到的 InfoNCE 損失函數了,並且最小化 InfoNCE,也就等價於最大化
和
之間互信息的下限,從而做到了我們所要求的最大化
,證明如下,
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDbWF0aGNhbCU3QkwlN0RfJTdCJTVDbWF0aHJtJTdCTiU3RCU3RCU1RSU3QiU1Q21hdGhybSU3Qm9wdCU3RCU3RCslMjYlM0QtJTVDdW5kZXJzZXQlN0JYJTdEJTdCJTVDbWF0aGJiJTdCRSU3RCU3RCslNUNsb2crJTVDbGVmdCU1QiU1Q2ZyYWMlN0IlNUNmcmFjJTdCcCU1Q2xlZnQlMjh4XyU3QnQlMkJrJTdEKyU1Q21pZCtjXyU3QnQlN0QlNUNyaWdodCUyOSU3RCU3QnAlNUNsZWZ0JTI4eF8lN0J0JTJCayU3RCU1Q3JpZ2h0JTI5JTdEJTdEJTdCJTVDZnJhYyU3QnAlNUNsZWZ0JTI4eF8lN0J0JTJCayU3RCslNUNtaWQrY18lN0J0JTdEJTVDcmlnaHQlMjklN0QlN0JwJTVDbGVmdCUyOHhfJTdCdCUyQmslN0QlNUNyaWdodCUyOSU3RCUyQiU1Q3N1bV8lN0J4XyU3QmolN0QrJTVDaW4rWF8lN0IlNUNtYXRocm0lN0JuZWclN0QlN0QlN0QrJTVDZnJhYyU3QnAlNUNsZWZ0JTI4eF8lN0JqJTdEKyU1Q21pZCtjXyU3QnQlN0QlNUNyaWdodCUyOSU3RCU3QnAlNUNsZWZ0JTI4eF8lN0JqJTdEJTVDcmlnaHQlMjklN0QlN0QlNUNyaWdodCU1RCslNUMlNUMrJTI2JTNEJTVDdW5kZXJzZXQlN0JYJTdEJTdCJTVDbWF0aGJiJTdCRSU3RCU3RCslNUNsb2crJTVDbGVmdCU1QjElMkIlNUNmcmFjJTdCcCU1Q2xlZnQlMjh4XyU3QnQlMkJrJTdEJTVDcmlnaHQlMjklN0QlN0JwJTVDbGVmdCUyOHhfJTdCdCUyQmslN0QrJTVDbWlkK2NfJTdCdCU3RCU1Q3JpZ2h0JTI5JTdEKyU1Q3N1bV8lN0J4XyU3QmolN0QrJTVDaW4rWF8lN0IlNUNtYXRocm0lN0JuZWclN0QlN0QlN0QrJTVDZnJhYyU3QnAlNUNsZWZ0JTI4eF8lN0JqJTdEKyU1Q21pZCtjXyU3QnQlN0QlNUNyaWdodCUyOSU3RCU3QnAlNUNsZWZ0JTI4eF8lN0JqJTdEJTVDcmlnaHQlMjklN0QlNUNyaWdodCU1RCslNUMlNUMrJTI2KyU1Q2FwcHJveCslNUN1bmRlcnNldCU3QlglN0QlN0IlNUNtYXRoYmIlN0JFJTdEJTdEKyU1Q2xvZyslNUNsZWZ0JTVCMSUyQiU1Q2ZyYWMlN0JwJTVDbGVmdCUyOHhfJTdCdCUyQmslN0QlNUNyaWdodCUyOSU3RCU3QnAlNUNsZWZ0JTI4eF8lN0J0JTJCayU3RCslNUNtaWQrY18lN0J0JTdEJTVDcmlnaHQlMjklN0QlMjhOLTElMjkrJTVDdW5kZXJzZXQlN0J4XyU3QmolN0QlN0QlN0IlNUNtYXRoYmIlN0JFJTdEJTdEKyU1Q2ZyYWMlN0JwJTVDbGVmdCUyOHhfJTdCaiU3RCslNUNtaWQrY18lN0J0JTdEJTVDcmlnaHQlMjklN0QlN0JwJTVDbGVmdCUyOHhfJTdCaiU3RCU1Q3JpZ2h0JTI5JTdEJTVDcmlnaHQlNUQrJTVDJTVDKyUyNiUzRCU1Q3VuZGVyc2V0JTdCWCU3RCU3QiU1Q21hdGhiYiU3QkUlN0QlN0QrJTVDbG9nKyU1Q2xlZnQlNUIxJTJCJTVDZnJhYyU3QnAlNUNsZWZ0JTI4eF8lN0J0JTJCayU3RCU1Q3JpZ2h0JTI5JTdEJTdCcCU1Q2xlZnQlMjh4XyU3QnQlMkJrJTdEKyU1Q21pZCtjXyU3QnQlN0QlNUNyaWdodCUyOSU3RCUyOE4tMSUyOSU1Q3JpZ2h0JTVEKyU1QyU1QyslMjYrJTVDZ2VxKyU1Q3VuZGVyc2V0JTdCWCU3RCU3QiU1Q21hdGhiYiU3QkUlN0QlN0QrJTVDbG9nKyU1Q2xlZnQlNUIlNUNmcmFjJTdCcCU1Q2xlZnQlMjh4XyU3QnQlMkJrJTdEJTVDcmlnaHQlMjklN0QlN0JwJTVDbGVmdCUyOHhfJTdCdCUyQmslN0QrJTVDbWlkK2NfJTdCdCU3RCU1Q3JpZ2h0JTI5JTdEK04lNUNyaWdodCU1RCslNUMlNUMrJTI2JTNELUklNUNsZWZ0JTI4eF8lN0J0JTJCayU3RCUyQytjXyU3QnQlN0QlNUNyaWdodCUyOSUyQiU1Q2xvZyslMjhOJTI5KyU1Q2VuZCU3QmFsaWduZWQlN0QrJTVDdGFnKyU3QjMwJTdE.png)
到底為止,如何從由 NCE 結合互信息的思想構建
式中的 InfoNCE 也清楚了,現在 InfoNCE 主要用在自監督學習中作為一個對比損失函數,實際上 InfoNCE 的這個思想也是可以作為互信息的一個估計器,在論文中也有證明它和另一個互信息估計器 MINE 之間的關系,這里就不再詳細說明了。
在使用 InfoNCE 時把它當作一個對比損失,那么分子上的
表示正樣本對, 分母上的
表示負樣本對,我們只要構建好正負樣本對,然后利用 InfoNCE 的優化過程,就可以做到使正樣本對之間的互信息最大,使負樣本對之間的互信息最小這件事情了:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDbWF0aGNhbCU3QkwlN0RfJTdCTiU3RCU1RSU3QkluZm9OQ0UlN0QrJTI2JTNELSU1Q21hdGhiYiU3QkUlN0RfWCU1Q2xlZnQlNUIlNUNsb2crJTVDZnJhYyU3QmZfJTdCayU3RCU1Q2xlZnQlMjh4XyU3QnQlMkJrJTdEJTJDK2NfJTdCdCU3RCU1Q3JpZ2h0JTI5JTdEJTdCJTVDc3VtXyU3QnhfJTdCaiU3RCslNUNpbitYJTdEK2ZfJTdCayU3RCU1Q2xlZnQlMjh4XyU3QmolN0QlMkMrY18lN0J0JTdEJTVDcmlnaHQlMjklN0QlNUNyaWdodCU1RCslNUMlNUMrJTVDZW5kJTdCYWxpZ25lZCU3RCslNUN0YWcrJTdCMzElN0Q=.png)
后記
最初目的只是因為看到很多地方直接使用了 InfoNCE(實際上就是 CPC),但沒有說明詳細的原理,網上除了磊爺的文章[6]之外,很多都是浮於表面的解釋,遠不能解答我的疑惑 ,所以作為一個剛入門的小白,我還是想親自推導一下 InfoNCE 的以及它的來源 NCE 的原理,沒想到這個坑越挖越深,最后花的時間遠遠超出我的預期,導致一堆其他事情沒有做....好在最終還是按照我的理解基本弄清楚了(如果有哪里理解錯的地方,請告訴我),也不知道這樣做有沒有意義。
附錄 1——NCE 要解決的問題
實際上NCE 要解決的是歸一化參數密度估計問題。
假設現在有一組觀測樣本
,它遵循一個未知的參數化概率密度函數
,參數密度估計問題就是根據觀測樣本
找到一組最優參數
,通常使用極大似然估計的方法。對於這個密度函數
的估計還需要滿足下面兩個約束條件:
如果同時滿足上面兩個約束條件,那么稱建模的密度函數是歸一化的;如果只滿足第 2 個正約束條件,那么稱其未歸一化。
在語言模型中說的
在 NCE 實際上就是指,指的是 partition function,這里用
表示,假設
為估計的未歸一化模型,則
,而將模型歸一化的方式就是:
。而對於
,除非
的形式特別簡單,否則是沒辦法寫出積分的解析解形式的,只能通過數值積分的方法來近似。這種數值積分對於低維問題是有較高的精度的,但是對於實際應用中的很多高維問題,在計算上就是非常昂貴甚至不可接受的。
附錄 2——將歸一化常數作為參數
這里解釋一下為什么可以將歸一化常數作為一個附加的參數呢。
附錄1中提到可以通過
來對
進行歸一化,實際上可以看作對
進行了一定的縮放,假設歸一化后的密度函數為
,則:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDbG9nK3BfbSUyOC4lM0IlNUN0aGV0YSUyOSslMjYlM0QrJTVDbG9nKyU1Q2ZyYWMlN0JwX20lNUUwJTI4LiUzQiU1Q3RoZXRhJTI5JTdEJTdCWiUyOCU1Q3RoZXRhJTI5JTdEJTVDJTVDKyUyNiUzRCU1Q2xvZytwX20lNUUwJTI4LiUzQiU1Q3RoZXRhJTI5LSU1Q2xvZytaJTI4YyUyOSslNUNlbmQlN0JhbGlnbmVkJTdE.png)
因此我們可以把
當成一個參數
,也就是:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduZWQlN0QrJTVDbG9nK3BfbSUyOC4lM0IlNUN0aGV0YSUyOSslMjYlM0QlNUNsb2crcF9tJTVFMCUyOC4lM0IlNUN0aGV0YSUyOS1jKyU1Q2VuZCU3QmFsaWduZWQlN0Q=.png)
也就是學習一個參數
,來對未歸一化的
進行大小為
的縮放,最終達到歸一化的效果。
附錄 3——用噪聲進行對比的直覺
這里解釋一下用噪聲的分布進行對比的直覺。
按照 Gutmann and Hyvrinen(2012) [3] 中的解釋(如果真的先弄懂 NCE,強烈推薦閱讀一下這篇論文),估計數據的密度函數
實際上是確定觀測數據
的屬性,而這種屬性一般需要相對於另一些參考數據(噪聲)
的屬性來體現(描述)出來的。如果我們參考(噪聲)數據
是從概率密度函數為
的分布中獨立同分布采樣出來的 ,
相對於
的屬性用它們的密度比
來描述。那么如果相對數據
的分布
已知,也就能通過
來獲得
的密度函數
。話句話說,如果我們知道
的屬性,也知道了
和
之間的差異,那么我們也就知道了 $X$ 的屬性。
所以 NCE 中通過訓練一個二分類器來對
和
中的數據進行比較,為了區分出這兩個數據,分類器就會比較它們屬性的不同,換句話說,這個二分類也就學到了
和
之間的差異,而這個差異根據
式的推導,也確實符合
的形式的,實際上也就是訓練了 logistic 分類器。
參考文獻
[1] Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781, 2013.
[2] Michael Gutmann and Aapo Hyvärinen. 2010. Noise-contrastive estimation: A new estimation principle for unnormalized statistical models. In Proc. AISTATS.
[3] Gutmann, M.U. and Hyv¨ arinen, A. Noise-contrastive estimation of unnormalized statistical models, with applications to natural image statistics. Journal of Machine Learning Research, 13:307–361, 2012.
[4] Andriy Mnih and Y ee Whye Teh. 2012. A fast and simple algorithm for training neural probabilistic language models. In Proc. ICML.
[5] Aaron van den Oord, Yazhe Li, and Oriol Vinyals. Representation learning with contrastive predictive coding. arXiv preprint arXiv:1807.03748, 2018.
[6] Leo Mao. 2019. "Noise-Contrastive-Estimation". [online]. https://leimao.github.io/article/Noise-Contrastive-Estimation/
[7] Dyer, C. (2014). Notes on Noise Contrastive Estimation and Negative Sampling. arXiv:1410.8251 [cs].
[8] Y. Bengio, R. Ducharme, P. Vincent, and C. Jauvin, “A Neural Probabilistic Language Model,” p. 19.

![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNpbnQrcCUyOHglM0IlNUN0aGV0YSUyOWR4JTNEMQ==.png)
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1wX20lMjguJTNCJTVDdGhldGElMjkrJUUyJTg5JUE1KzA=.png)