最小熵原理:“物以类聚”之从图书馆到词向量
作者丨蘇劍林
單位丨廣州火焰信息科技有限公司
研究方向丨NLP,神經網絡
個人主頁丨kexue.fm
從第一篇看下來到這里,我們知道所謂“最小熵原理”就是致力于降低學習成本,試圖用最小的成本完成同樣的事情。所以整個系列就是一個“偷懶攻略”。那偷懶的秘訣是什么呢?答案是“套路”,所以本系列又稱為“套路寶典”。
“最小熵系列”前文回顧:?
從無監督構建詞庫看最小熵原理,套路是如何煉成的
再談最小熵原理:“飛象過河”之句模版和語言結構
本篇我們介紹圖書館里邊的套路。
先拋出一個問題:詞向量出現在什么時候?是 2013 年 Mikolov 的 Word2Vec?還是 2003 年 Bengio 大神的神經語言模型?都不是,其實詞向量可以追溯到千年以前,在那古老的圖書館中。
▲?圖書館一角(圖片來源于百度搜索)
走進圖書館
圖書館里有詞向量?還是千年以前?在哪本書?我去借來看看。?
放書的套路
其實不是哪本書,而是放書的套路。 很明顯,圖書館中書的擺放是有“套路”的:它們不是隨機擺放的,而是分門別類地放置的,比如數學類放一個區,文學類放一個區,計算機類也放一個區;同一個類也有很多子類,比如數學類中,數學分析放一個子區,代數放一個子區,幾何放一個子區,等等。讀者是否思考過,為什么要這么分類放置?分類放置有什么好處?跟最小熵又有什么關系??
有的讀者可能覺得很簡單:不就是為了便于查找嗎?這個答案其實不大準確。如果只是為了方便找書,那很簡單,只要在數據庫上記錄好每一本書的坐標,然后在地面上也注明當前坐標,這樣需要借哪本書,在數據庫一查坐標,然后就可以去找到那本書了,整個過程不需要用到“圖書分類”這一點。所以,如果單純考慮找書的難易程度,是無法很好的解釋這個現象。
省力地借書
其實原因的核心在于:我們通常不只是借一本書。?
前面說了,只要建好索引,在圖書館里找一本書是不難的,問題是:如果找兩本呢?一般情況下,每個人的興趣和研究是比較集中的,因此,如果我要到圖書館借兩本書,那么可以合理地假設你要借的這兩本書是相近的,比如借了一本《神經網絡》,那么再借一本《深度學習》的概率是挺大的,但再借一本《紅樓夢》的概率就很小了。
借助于數據庫,我可以很快找到《神經網絡》,那么《深度學習》呢?如果這本書在附近,那么我只需要再走幾步就可以找到它了,如果圖書是隨機打亂放置的,我可能要從東南角走到西北角,才找到我想要的另一本書《深度學習》,再多借幾本,我不是要在圖書館里跑幾圈我才能借齊我要的書??
這樣一來,圖書分類的作用就很明顯了。圖書分類就是把相近的書放在一起,而每個人同一次要借的書也會相近的,所以圖書分類會讓大多數人的找書、借書過程更加省力。這又是一個“偷懶攻略”。
也就是說,將我們要處理的東西分類放好,相近的放在一起,這也是滿足最小熵原理的。生活中我們會將常用的東西分類放在觸手可及的地方,也是基于同樣的原理。
圖書館規劃
下面我們再來從數學角度,更仔細地考察這個過程。?
簡化的借書模型
假如我們到圖書館去借兩本書,分別記為 i,j,假設借第一本書的成本是 d(i),兩本書之間的成本函數為 d(i,j),這也就是說,找到第一本書 i 后,我就要再花 d(i,j) 那么多力氣才能找到第二本書 j。我們可以考慮這個過程對所有人的平均,即:
其中 p(i) 是 i 這本書被借的概率,p(j|i) 就是借了 i 之后還會再借 j 的概率。圖書館的要把書放好,那么就要使得 S 最小化。
現在我們以圖書館入口為原點,在圖書館建立一個三維坐標系,那么每本書的位置都可以用一個向量 v 來表示,不失一般性,我們可以簡單考慮 d(i) 為這本書到圖書館原點的歐氏距離,d(i,j) 為兩本書的歐氏距離,那么 S 的表達式變為:
讓我們再來解釋一下各項的含義,其中 (i,j) 代表著一種借書習慣,即借了書 i 還借書 j,p(i,j) 代表著這種借書習慣出現的概率,實際生活中可以通過圖書館的借書記錄去估算它;‖vi‖+‖vi?vj‖ 則代表著先借 i 再借 j 的總成本。其中 ‖vi‖ 這一項要盡量小,意味著我們要將熱門的書放在靠近出口(原點)的地方;而 ‖vi?vj‖ 要盡量小,則告訴我們要把相近的書放在一起。
約束優化規劃
假如我們拿到了圖書館的借書記錄,也就是說已知 p(i,j) 了,那么是不是可以通過最小化 (2) 來得到圖書館的“最佳排書方案”了呢?思想對了,但還不完整,因為很顯然式 (2) 的最小值是 0,只需要讓所有的 v 都等于 0,也就是說,所有的書都擠在出口的位置。?
顯然這是不可能的,因為實際上書不是無窮小的,兩本書之間有一個最小間距 dmin>0,所以完整的提法應該是:
也就是說,這是一個帶約束的極值問題,解決了這個問題,我們就可以得到圖書館對圖書的最合理安排了(理論上)。當然,如果真的去給圖書館做規劃,我們還要根據圖書館的實際情況引入更多的約束,比如圖書館的形狀、過道的設置等,但 (3) 已經不妨礙我們理解其中的根本思想了。
一般成本最小化
現在我們再將問題一般化,從更抽象的視角來觀察問題,能得到更深刻的認識。
均勻化與去約束
我們先將成本函數 ‖vi‖+‖vi?vj‖ 代換為一般的 f(vi,vj),即考慮:
同時 v 可以不再局限為 3 維向量,可以是一般的 n 維向量。我們依舊是希望成本最低,但是我們不喜歡諸如 ‖vi?vj‖≥dmin 的約束條件,因為帶約束的優化問題往往不容易求解,所以如果能把這個約束直接體現在 f 的選擇中,那么就是一個漂亮的“去約束”方案了。
怎么實現這個目的呢?回到圖書館的問題上,如果沒有約束的話,理論最優解就是把所有圖書都擠在出口的位置,為了防止這個不合理的解的出現,我們加了個約束“兩本書之間有一個最小間距 dmin>0”,防止了解的坍縮。其實有很多其他約束可以考慮,比如可以要求所有圖書必須盡量均勻地放滿圖書館,在這個希望之下,也能夠得到合理的解。
“盡量均勻”其實可以理解為某種歸一化約束,因為歸一,所以不能全部集中在一點,因為只有一點就不歸一了。“歸一”啟發我們可以往概率的方向想,也就是說,先構造概率分布,然后作為成本函數的度量。在這里就不做太多牽強的引導了,直接給出其中一個選擇:
最小熵=最大似然
讓我們來分步理解一下這個式子。首先如果不看分母 Zi,那么結果就是:
也就是說,這個 f 相當于成本函數為。然后,由于分母的存在,我們知道:
所以實際上定義了一個待定的條件概率分布 q(j|i),說白了,這實際上就是對的一個 softmax 操作,而此時 (4) 實際上就是:
對于固定的 i 而言,最小化上式這不就是相當于最大對數似然了嗎?所以結果就是 q(j|i) 會盡量接近 p(j|i),從而全部取 0 不一定就是最優解的,因為全部取 0 對應著均勻分布,而真實的 p(j|i) 卻不一定是均勻分布。
現在再來想想,我們從最小成本的思想出發,設計了一個具有概率的負對數形式的 f(vi,vj),然后發現最后的結果是最大似然。這個結果可以說是意料之外、情理之中,因為 ?logq(j|i) 的含義就是熵,我們說要最大似然,就是要最小化式 (8),其含義就是最小熵了。最大似然跟最小熵其實具有相同的含義。
Word2Vec
只要稍微將對象一轉變,Word2Vec 就出來了,甚至 everything2vec。
多樣的度量
純粹形式地看,式 (5) 的選擇雖然很直觀,但并不是唯一的,可取的選擇還有:
這以內積為距離度量,希望相近的對象內積越小越好。?
Skip Gram
事實上,如果 i,j 分別代表句子窗口里邊的一個詞,那么式 (9) 就對應了著名的詞向量模型——Word2Vec 的 Skip Gram 模型了,也就是說,最小化:
這正好是 Word2Vec 的 Skip Gram 模型的優化目標。?
注:Word2Vec 實際上對上下文向量和中心詞向量做了區分,也就是用了兩套詞向量,但這里為了直觀理解其中的思想,我們就不區別這一點。
原理類比分析
等等,怎么突然就出來詞向量了?
我們再重新捋一下思路:是這樣的,我們把每個詞當作一本書,每個句子都可以看成每個人的“借書記錄”,這樣我們就能知道哪兩本“書”經常被一起借了是吧?
按照我們前面討論了一大通的圖書館最佳放書方案,我們就可以把“書”的最佳位置找出來,理論上用 (3),(5) 或 (9) 都可以,這就是詞向量了。如果用式 (9),就是 Word2Vec 了。?
反過來,找出一個最佳放書方案也就簡單了,把圖書館的每個人的借書記錄都當成一個句子,每本書當成一個詞,設置詞向量維度為 3,送入 Word2Vec 訓練一下,出來的詞向量,就是最佳放書方案了。那些 doc2vec、node2vec、everything2vec,基本上都是這樣做的。?
所以,開始的問題就很清晰了:將圖書館的每本書的三維坐標記錄下來,這不就是一個實實在在的“book embedding”?相近的書的向量也相近呀,跟詞向量的特性完美對應。所以,自從有了圖書館,就有了 embedding,盡管那時候還沒有坐標系,當然也沒有計算機。
再來看看t-SNE
有了“借書記錄”,也就是 p(j|i),p(i),我們就可以照搬上述過程,得到一個“最佳位置規劃”,這就是向量化的過程。
如果沒有呢?
SNE
那就造一個出來呀!比如我們已經有了一堆高維樣本 x1,x2,…,xN,它們可以是一堆圖像數據集,我們想要得到一個低維表示 z1,z2,…,zN。我們構造一個:
然后還是用式 (5) 作為成本函數(假設 p(i) 是常數,即均勻分布,同時求和不對自身進行),去優化 (4),即:
這便是稱為 SNE 的降維方法了。一般來說它還有一些變種,我們就不細摳了,這也不是本文的重點,我們只需要理解基本思想。
SNE 本質上就是盡量保持相對距離的一種降維方案。因為它保持的是相對距離,保持了基本的形狀不變,所以降維效果比 PCA 等方法要好。原因是 PCA 等方法僅僅保留主成分,只適用于比較規則的數據(比如具有中心聚攏特性、各向同性的),SNE 的思想可以適用于任意連通形狀。
t-SNE
前面說得 SNE 已經體現出降維思想了。但是它會有一些問題,主要的就是“Crowding 問題”。
這個“Crowding 問題”,簡單來看,就是因為低維分布 (5) 也是距離的負指數形式,負指數的問題就是在遠處迅速衰減到 0,而 (5) 中的 v 是我們要求解的目標,這樣一來優化結果是所有的點幾乎都擁擠(Crowding)在某處附近(因為指數衰減,距離較遠的點幾乎不會出現),效果就不夠好了。?
為了解決這個問題,我們可以把式 (5) 換成衰減沒那么快的函數,比如說簡單的分式:
這稱為 t 分布。
式 (13)、式 (11) 和式 (4) 結合,就是稱為 t-SNE 的降維方法,相比 SNE,它改善了 Crowding 問題。
當然,t-SNE 與 SNE 的差別,其實已經不是本文的重點了,本文的重點是揭示 SNE 這類降維算法與 Word2Vec 的異曲同工之處。
雖然在深度學習中,我們直接用 t-SNE 這類降維手段的場景并不多,哪怕降維、聚類都有很多更漂亮的方案了,比如降維可以看這篇深度學習中的互信息:無監督提取特征、聚類可以看這個變分自編碼器VAE:一步到位的聚類方案。但是 t-SNE 的本質思想在很多場景都有體現,所以挖掘并體味其中的原理,并與其它知識點聯系起來,融匯成自己的知識體系,是一件值得去做的事情。
本文總結
本文基于最小成本的思想,構建了一個比較理想化的模型來分析圖書館的圖書安排原理,進而聯系到了最小熵原理,并且思考了它跟 Word2Vec、t-SNE 之間的聯系。
就這樣,又構成了最小熵原理的一個個鮮活例子:物以類聚、分門別類,都能降低成本。比如我們現在可以理解為什么預訓練詞向量能夠加快 NLP 任務的收斂、有時還能提升最終效果了,因為詞向量事先將詞擺在了適合的位置,它的構造原理本身就是為了降低成本。
同時,將很多看似沒有關聯的東西聯系在一起,能夠相互促進各自的理解,達到盡可能融會貫通的效果,其妙不言而喻。
點擊以下標題查看作者其他文章:?
變分自編碼器VAE:原來是這么一回事 | 附開源代碼
再談變分自編碼器VAE:從貝葉斯觀點出發
變分自編碼器VAE:這樣做為什么能成?
從變分編碼、信息瓶頸到正態分布:論遺忘的重要性
深度學習中的互信息:無監督提取特征
全新視角:用變分推斷統一理解生成模型
細水長flow之NICE:流模型的基本概念與實現
細水長flow之f-VAEs:Glow與VAEs的聯姻
深度學習中的Lipschitz約束:泛化與生成模型
#投 稿 通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢??答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
??來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
? 投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
?
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點擊 |?閱讀原文?| 查看作者博客
總結
以上是生活随笔為你收集整理的最小熵原理:“物以类聚”之从图书馆到词向量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典论文复现 | 基于深度卷积网络的图像
- 下一篇: AAAI 2019 | 基于不同颗粒度语