來學偉 三門峽職業技術學院 信息傳媒學院
深度學習啟發了研究者的建模和算法設計的思路。在這許多思路中有一種是結構化概率模型。結構化概率模型作為深度學習的一種重要的研究方向,它主要用來說明和描述概率分布中隨機的變量和變量之間的直接或者間接的互相作用,進而描述一個概率分布[1]。因為模型的結構是由圖來定義和描述的,因此我們使用圖論中圖的概念,正是因為這個原因,我們通常把這類模型叫為圖模型(graphical model)。
圖模型可供研究的方向非常多,研究人員曾經提出了非常多的推斷算法、訓練算法及模型。在這篇論文中,我們著重研究圖模型在深度學習領域里被公認為是有效的。和普通的圖模型的研究者不同的是,深度學習領域中的研究者經常會使用完全不一樣的模型結構、推斷過程和學習算法。我們分析了這種區別而且還對其中的原因進行了解釋。最然后分析了構建大尺度概率模型所面臨的挑戰。最后我們研究了如何利用一個圖來描述概率分布的構造,即使這個辦法能夠幫助我們解決許多問題和挑戰。盡管它本身也有很多缺陷。
深度學習的目的就是使得機器可以自主學習解決很多人工智能中需要解決的問題和挑戰。這就意味著必須讓機器可以理解具備豐富數據結構的多維數據。我們以圖片為例,研究者希望人工智能的算法可以理解自然圖像、語音的聲音信號級得到許多詞及標點的文檔。
我們可以把來自多維分布的數據作為輸入的數據,接下來用一個標志來描述它,這個標志既可以是圖片中的某一種物品,也可以是一段聲音中的某個單詞,甚至可以是一段文檔中說明的某一個話題。在分類時,丟棄了輸入數據的大多數數據。接下來給出了一個單個值的輸出或者是一個輸出值的概率分布,這個分類一般可以忽略輸入數據的大部分內容。也就是說,當我們識別圖片中某個物品的時候,通常可以忽略圖片中的背景及與該物品無關的東西。
我們也可以利用概率模型實現其他許多的任務。這些任務和分類任務不同,其中一些任務需要很多個輸出。還有一些任務需要對整個數據結構進行完整的理解,因此并不能舍棄數據。包含以下幾個部分:
(1)估計密度函數:給一個輸入數據x,機器自主學習系統則返回了一個對數據生成分布的真實密度函數 p(x) 的估計。這種情況僅僅需要一個輸出,不過它需要徹底完全理解整個輸入。那怕向量中僅僅一個元素不太正常,系統也可能會給它賦予很低的概率值。
(2)去噪:給定一個有損耗的或者觀察有誤差的輸入數據 ,機器自主學習系統則會返回一個對原始的真實x 進行的估計。例如,有時候我們需要機器自主學習系統能夠從一幅老相片中清除抓痕或者污漬。這個系統肯定會產生出多個輸出(照應著估計的干凈樣本x 的每一個元素),而且需要我們對輸入有一個整體的理解(即使一個比較嚴重損害的區域也必需要在最后的輸出中恢復)。
(3)缺失值的填補:給一個x 的某些元素作為觀察值,該模型被要求返回一個x 或者一些或者全部未觀察值的概率分布。此模型返回的同樣是多個輸出。因為這個模型需要恢復x 的每一個元素,因此它必須理解整個輸入。
(4)采樣:應用模型從分布為 p(x)的概率中抽取新的樣本。語音合成為該應用的一部分,也就是說生成了一個聽起來很像人說話的聲音。該模型同樣需要多個輸出以及就輸入整體而言的良好建模。哪怕樣本只有一個從錯誤分布中得到的元素,采樣的過程也是錯誤的。
就隨機變量的數量來說,超過上千甚至是上百萬規模,不管是從計算上還是從統計的意義上來說,都是一個幾乎無法完成的有挑戰的任務。如果假設我們只想對兩個值的隨機變量建立模型,這就是一個最簡單的例子[2],但是依然無法實現,就一個小的32 × 32 像素的彩色(RGB)圖片而言,就有23072 種可能性的二值圖片。這個數值比10800 還多,也就是說比宇宙中存在的原子總數還要多。
一般來講,如果我們想對某個包含n 個離散的隨機變量進行分布建模時,需要能對每個隨機變量都取k 個值得x 分布,這樣一來最容易的表示為 P(x) 的方法就需要存儲一個可以用來進行查詢的表格。該表格表示了每一種可能的值得概率,這樣就必須記錄kn 個參數。
這種方式幾乎是不可行的,主要有以下幾個原因:
(1) 內存:用來存儲變量的開銷。剔除極小的k 和 n 的值的極端情況,其余的情況用表格的形式來描述這樣一個分布必須一個非常大的存儲空間。
(2)統計的高效性:當一個模型中的參數的數量增加的時候,利用隨機估計時用來訓練數據的數量也會需要相對應的增加。由于基于查表的模型一般會擁有天文數字級別的參數,為了精確地模擬,相對應的訓練集合的大小也是相同的天文數字級別的。不管哪種類似這樣的模型都會引起嚴重的過擬合,只有我們向其添加許多額外的假設來關聯表格中的不同元素。
(3)運行時間:推斷的開銷。假如我們需要實現有關推斷的一個任務,其中我們必須需要利用聯合分布的P(x)來進行運算某些其它的分布,例如邊緣分布P (x1)或許是條件分布P (X2)Xl)。運算如此的分布就必須對整個表格中的某些項進行完整的求和操作,所以如此的操作就運行時間而言,和上面所描述的高昂的內存的開銷是一個級別的。
(4)運行時間:采樣的開銷。和推斷的開銷相類似,假如我們想要從如此的模型中采樣。最基本的方法就是從均勻分布中進行采樣,接下來對表格中的元素進行累加,一直到和超過該元素u,最終返回最后一個加上的元素。在最不理想的情況下,這個如此的操作需要讀取全部表格,因此和其他操作相比,它需要的時間是指數級別的。
就對表格進行操作的方法而言,其最根本的問題是,我們必須顯式的對每一種有可能的變量的子集上可能產生的所有可能的類型之間的互相作用進行建立模型。但是在實際問題中,我們碰見的概率分布也許遠遠比這個容易的多。一般情況下,這些變量之間的相互作用是間接的。
我們舉個簡單的例子來說明,我們想要計算在接力賽中某個隊伍完成比賽所需要的時間。我們需要對其進行建立模型,假如這個隊伍由三名隊員組成。在剛開始比賽的時候,由A 跑第一棒,當A 跑了一段距離后直至跑完他的路程后。這時他需要把接力棒傳遞給B,接接下來B 開始跑,同樣跑完子集的路程后,把接力棒給 C,C 跑完最后一棒。這樣一來,根據我們的分析,我們可以使用連續的變量來分別建模每個人完成比賽所需要的時間。
由于A跑第一棒,因此她并不依賴于其他人而獨立完成。B則不同,B 跑完所需要的時間必須和A 的完成時間相關,原因是B 只能在A跑完后才能開始比賽,假如A 跑的更快,則B 也會完成的更早。以此類推,C 的完成時間也同樣一來A 和B,同樣的道理,假如A 跑的非常慢,B 的完成時間則會更晚,C 的起步也會更晚,所以它的完成時間只能更晚。但是,如果給定了B 得完成時間,則C 的完成時間就只受A 的完成時間的影響了,假如我們已經得到了B 的完成時間,了解了A 得完成時間對C 并無任何實質性的幫助。也就是說,我們可以通過兩個互相作用來對這個接力賽建立模型,其中兩個互相作用分別是A 的完成時間對B 的完成時間的影響以及B 的完成時間對C 的完成時間的影響。也就是時候,我們可以忽略A 的完成時間對C 的完成時間的影響。
結構化概率模型為隨機變量之間的直接作用提供了一個正式的建模框架。這種方式大大減少了模型的參數個數以致于模型只需要更少的數據來進行有效的估計。這些更輕便的模型在模型存儲,模型推斷以及采樣的時候有著更小的計算開銷。
就隨機變量之間的直接作用建立模型框架來說,結構化概率模型提供一個非常好的解決方案,使用這種模型,可以減少模型中參數的個數,進而需要更少的數據可以做到有效的估計,使用這種更輕便的模型,在模型推斷、采樣及存儲就會有更小的計算開銷,從而大大提高了效率。