深度學習之父Hinton:下一代神經網絡
7月27日,2018年圖靈獎得主Geoffrey Hinton帶來了主題為《The Next Generation of Neural Networks》的講座。講座由約克大學信息技術學院正教授Jimmy Huang主持,ACM杰出科學家、 吉林大學人工智能學院常毅教授擔任嘉賓。在講座中,Hinton指出:人工神經網絡最重要的未解難題之一,是如何像大腦一樣有效地進行無監督學習。
作者 | 青暮、陳大鑫
編輯 | 叢 末
SIGIR是一個展示信息檢索領域中各種新技術和新成果的重要國際論壇,若非疫情影響,今年本定于中國西安市舉行。7月25日-7月30日,第43屆SIGIR2020在線上舉行。
7月27日,2018年圖靈獎得主Geoffrey Hinton帶來了主題為《The Next Generation of Neural Networks》的講座。講座由約克大學信息技術學院正教授Jimmy Huang主持,ACM杰出科學家、 吉林大學人工智能學院常毅教授擔任嘉賓。
在講座中,Hinton指出:人工神經網絡最重要的未解難題之一,是如何像大腦一樣有效地進行無監督學習。
當前有兩種主要的無監督學習方法:
第一種方法,以BERT和變分自編碼器為例,使用了深度神經網絡來重建其輸入。這種方法對于圖像來說是有問題的,因為網絡的最深層需要對圖像的精細細節進行編碼。
第二種方法是Becker和Hinton在1992年提出的:當給定相同圖像的兩個不同片段作為輸入時,訓練深度神經網絡的兩個副本以產生具有高互信息的輸出向量。設計此方法的目的是使表征形式不受輸入無關細節的束縛。
Becker和Hinton使用的優化互信息的方法存在缺陷(出于一個微妙的原因,講座中會解釋),因此Pacannaro和Hinton將其替換為判別性目標函數,在該目標函數中,一個向量表征必須從許多替代方案中選擇相應的向量表征。
表征的對比學習(contrastive learning of representations)被證明非常有效,但是它存在一個主要缺陷:要學習具有N位互信息的成對的表征向量,我們需要將正確的對應向量和大約2^N個錯誤的替代方案進行對比。Hinton將描述解決這種局限性的新穎有效方法,并且表明這將導致在皮質中實現感知學習的簡單方法。
Geoffrey Hinton現在是多倫多大學的計算機科學系榮譽退休教授,Google的副總裁兼工程研究員,以及Vector Institute的首席科學顧問。他最早使用反向傳播學習單詞嵌入,對神經網絡研究的其他貢獻包括玻爾茲曼機、分布式表示、時延神經網絡、專家混合、變分學習和深度學習。2018年,Geoffrey Hinton因在深度學習方面的貢獻與Yoshua Bengio、Yann LeCun一同被授予了圖靈獎。
以下是演講全文,AI科技評論進行了不改變愿意的整理。
1
無監督學習的歷史
1、自編碼器
在這次演講中,我將討論神經網絡的未來發展方向。不過在這之前,我會先談談神經網絡的發展歷史,特別是無監督學習。
在機器學習中,有三種不同類型的學習模式:首先是監督學習,即給定輸入向量學習預測輸出。然后是強化學習,通過學習選擇動作以獲得最大獎勵。最后是無監督學習,其目的是學習輸入的內部表征,但是從數學上定義什么是好的表征形式很困難。
首先解釋我們需要無監督學習的原因。人類擁有10^14個突觸,但只能活10^9秒。這意味著如果要學習大多數突觸,顯式標簽或獎勵可能無法提供足夠的信息,因為我們必須每秒學習10^5個突觸。
有人反對人類需要學習所有突觸的觀點。一種說法是,可能大多數突觸都不會被學習,而且進化的效率很低,進化算法的效率就比反向傳播算法低得多。突觸可能是高度冗余的。
但是,我認為大腦浪費容量的可能性很小。人類的學習模型非常龐大,卻不需要大量的數據,這與常規的統計方法非常不同。對人類而言來說,經驗是昂貴的,而突觸是廉價的。
因此,我們需要研究不使用大量經驗和擁有很多參數的學習算法。用于無監督學習的目標函數,即最大似然,就是個很明顯的例子。
優化最大似然意味著調整生成模型的參數,以最大程度地提高模型生成觀測數據的概率。例如,將數據分布擬合為高斯混合分布。
另外一個例子是自編碼器。自編碼器試圖找到一種經濟的表征形式,來重建數據。
我將在本演講的后半部分以空間或時間一致性的角度來談論這個話題,其思想是提取在空間或時間上一致的屬性,這和最大似然非常不同。
自編碼器是一種使用監督學習算法來實現無監督學習的方法。我們將數據輸入網絡,網絡輸出重建的數據,網絡學習的目的是使重建數據與原始數據相同。網絡將數據轉換為編碼向量,我們通常希望編碼向量的維度很小,或能高效地表征數據。解碼器以編碼向量為輸入嘗試重建數據,因此解碼器是條件生成模型。
在大約20年的時間里,人們一直認為訓練深度自編碼器非常困難。自編碼器的想法從1980年代中期反向傳播開始流行就有了,但是深度學習無法應用到自編碼器中。原因是我們使用了錯誤的激活函數,當時使用的是Sigmoid或Tanh,而不是ReLU,而后者更容易在深度學習中訓練。此外,我們的初始化方法也很糟糕。在初始化權重時需要縮放權重,從而反向傳播的梯度不會爆炸或消失。最后,當時的計算機速度也很慢。
2、堆疊淺層自編碼器
在2006年,Salakhutdinov和我提出了一種訓練深度自編碼器的新方法,即堆疊多個淺層自編碼器。
首先訓練一個淺層自編碼器,其接受輸入的數據。它的隱藏層有特征檢測器,并且嘗試學習可以重建數據的特征檢測器。然后,將特征檢測器的激活值視為數據,重復以上操作,你可以根據需要確定層數。因此,在不使用任何標簽的情況下,我們可以預訓練多個層的特征向量,稱之為無監督預訓練。
每個新的自編碼器都將已學習的特征檢測器的激活值視為其數據,并且學習進一步的編碼。該算法的有趣之處在于,它成功地應用了深度學習來學習自編碼器。
對于淺層自編碼器(例如受限玻爾茲曼機),數學表明每當新的淺層自編碼器添加到堆疊的網絡中,模型生成數據的對數概率將獲得新的變分界(variational bound),并且該變分界比先前的變分界更好。
層來說有用的特征,為了解決這個問題,我們可以訓練深度端到端自編碼器。有了更快的計算機和更好的激活函數,深度自編碼器的效果變得很好。
3、變分自編碼器
在2013年,Welling和Kingma提出了變分自編碼器,其思想是,編碼器采集數據并將其轉換為實數值編碼向量,解碼器利用實數值編碼向量重建數據。
編碼器的目的有兩個:第一,它希望找到一種編碼,可以在先驗分布下最大化該編碼的概率。在實數值編碼空間中,存在先驗分布,通常為高斯分布,編碼器嘗試查找接近該高斯均值的編碼。第二,它也在尋找可以重建數據的編碼。
解碼器獲取編碼并嘗試準確地重建數據,使用的是變分近似方法。通過使用巧妙的數學,Welling和Kingma能夠獲得訓練變分自動編碼器所需的所有導數,從而既能最大化編碼處于高斯先驗分布的概率,又能利用變分后驗最大化數據的近似概率。以下不會再談論變分自編碼器,但它目前是無監督學習的最佳方法之一。
4、BERT
接下來討論BERT。BERT是一種深度自編碼器,經過訓練可以補充句子中遺漏的單詞。BERT實際上與信息檢索非常相關,因為它可以提取非常好的單詞表征。這對于理解文檔非常有用。BERT有很多個層,并且在每一層中,都有每個輸入單詞的嵌入向量。第一個隱藏層中有單詞的向量表征,第二個隱藏層中有相同單詞的更好的向量表征。
隨著深入網絡,給定單詞的表征將變得越來越好。實際上,L + 1層中的某個單詞的表征,是通過比較L層中該單詞的嵌入與其它單詞的嵌入生成的。這種比較是通過稱為Transformer的注意力機制實現的。這種嵌入是很好的單詞表征,可用于各種自然語言任務。
如果用標準的一維卷積神經網絡來表示單詞字符串,我們將通過這些向量來表示句子中的單詞。通過組合信息,激活單詞的權重矩陣,我們可以獲得下一層向量來表征單詞。因此,和之前的方法類似,只需查看前一級中所有附近單詞的表征,即可將這些表征組合成下一層中更好的單詞表征,但這里使用了注意力機制。
BERT的機制實際上看起來像信息檢索。每個單詞都通過學習的權重矩陣生成查詢向量、鍵向量和值向量。然后,對于L層的每個單詞,我們將獲取其查詢向量,并將其與所有其它單詞的鍵向量進行比較。如果查詢向量和鍵向量之間可以很好地匹配時,也就是說,當查詢向量和鍵向量的標量積很大時,附近位置的值向量影響下一層的單詞表征。
例如,假設我的名字是June。我將生成一個查詢向量,該查詢向量可以很好地匹配月份,也可以很好地匹配女性名字。我們將在句子的其余部分中選擇相關的詞,并使用這些相關的詞來修改June的表征。如果句子中還有其他幾個女性的名字,則June的表征將變得更接近女性人名的表征,如果句子中出現了月份相關的單詞,June的表征將變得更接近“六月”的表征。也就是說,它們將根據上下文進行優化,所以這很像信息檢索,不過所有查詢、值和鍵都是學習得到的。
因此,我們可以使用這種神經網絡進行語言建模。首先使用Transformers預訓練單詞片段嵌入。如果采用句子或更長的文本片段,則需要成千上萬個片段,將它們輸入Transformers的多個層,以學習所有的鍵、值和查詢。
因此,單詞表征會在輸出之前得到完善,可以很好地利用上下文信息。然后,我們在另一個神經網絡中使用這些單詞片段的表征,神經網絡可以從先前的單詞片段中預測下一個單詞片段,因此這是一個自動回歸模型。但是,它考慮的不是那些單詞片段,而是BERT生成的單詞片段的表征。
它的效果比規則模型更好。通過給它一個初始的單詞序列,然后讓它預測下一個片段的概率分布。這樣一來,我們就可以生成長長的單詞串,直到獲得完整的故事為止,效果令人驚訝。
BERT需要用數十億個文字數據來訓練,然后我們使用其產生的嵌入,訓練具有1,750億個參數的語言模型,耗時超過一千petaflop天。一旦完成訓練,我們就可以生成新聞文章,如上圖所示。這是GPT-3的例子,有趣的是,大多數人無法確定這篇新聞文章是由BERT撰寫的,它通過了圖靈測試。
現在,我們回到有關如何進行監督學習的基礎思想。變分自編碼器BERT比堆疊自編碼器的效果更好,這是因為端到端學習可以確保前面層中的隱藏單元學習提取后面層所需的特征,這是反向傳播所擅長的事情。
2
無監督學習的未來
1、自上而下與自下而上
在過去的幾年中,我一直非常渴望找到一種新的實現監督學習和深層網絡的方法,這種方法不需要多層反向傳播,因為我不相信大腦的工作機制是這樣的。
接下來,我們大部分時間都將探討新的修復方法,它如何不起作用以及如何改進以使其起作用。解決方法是學習每個層的特征,從而可以重建前一層的內容。而且,它們對于后一層也能很容易進行重構。這意味著我們將必須同時學習所有的層。
我們將嘗試學習足夠好的特征并重建前面的層,這是堆疊自編碼器的目標函數,但也很容易對后面的層進行重建。也就是說,它們與后面層預測的內容相符。
這里有一個非常令人有趣但饒舌的解釋,即后面的層將進行自上而下的預測,自上而下的預測將監督自下而上的連接的學習,自下而上的連接將產生表征,該表征將作為自上而下的預測的目標,自上而下的預測實際上也是自下而上學習的目標,自下而上和自上而下的學習過程是相互監督的。
也就是說,好的特征可以局部地、自下而上地提取,同時也可以從更大的上下文中自上而下地預測。
我們來展示一個使用上下文協議的例子??紤]一個句子,“she scromed him with the frying pan”,希望你以前從未聽過scrom這個單詞。我們懷疑它是動詞,基于它在句子中的位置以及單詞末尾的“ed”。
我們不知道它最初的含義,但是在剛看到這句話時,大多數人對其含義已經有了一個很好的了解,認為這大致表示“她用平底鍋打了他的頭”。
人類不需要成千上萬的例子也能從一句話中很好地理解一個詞的意思。這就是自上而下預測的,魅力所在。
在視覺識別上也相似,全局的背景幫助你自上而下地預測應該在圖像的局部看到什么,例如在草地背景中猜測黑白斑塊皮膚的四腳獸是奶牛。
2、以新方法訓練堆疊淺層的自編碼器,會發生什么?
我們的目標是在自下而上和自上而下對某個特征的預測之間取得一致。這很容易通過縮小所有隱藏激活向量來實現。這被稱為所謂的“塌縮問題”(collapse problem)。不過,我們可以通過使用更好的協議定義來避免這個問題:兩個變量在每個訓練樣例中的值是否一致,以及它們在不同訓練樣例中是否遵循同樣的變化。
我們先討論一種完全不同的無監督學習方法,之后我再回到這種方法。
之前,我和我的學生想出了一個方法,用一個更好的定義來解釋兩者的一致性。與其說它們應該相等,不如說它們應該是相似的,即它們在不同的訓練案例上有什么樣的變化趨勢。
所以在一個特定的訓練案例中,我們希望神經網絡的一部分中的自下而上的預測與自上而下的預測相一致。
不要嘗試解釋輸入的每一個細節,只需關注于提取在空間或時間上一致的屬性。和自動編碼器不同,這里允許我們忽略噪聲。
3、提取空間一致性屬性
Becker 和我在1992年引入了一種提取空間一致屬性的方法:最大化兩個輸入非重疊圖像塊的表征的互信息。
如果a 和b是標量,則通過最小化
來最大化互信息。如果a和b是向量,則通過最小化
來最大化互信息。相關論文:Maximizing the Mutual Infomation between two Gaussian distributed variables(Becker 和Hinton,1992)
接下來看一個提取空間一致性屬性的簡單樣例:
首先用隨機點填充一張圖片使它沒有明顯的結構。然后再取另一張圖片,這張圖片是第一張圖片經過水平移動后的版本。所以圖像對中唯一的結構就是它們之間的相對平移。很久以前我們用的是非常小的電腦。所以我們只從左邊的圖像中取了一個一維的條帶,從右邊的圖像中取了一個一維的條帶。
我們在左圖上散落了一些隨機點。然后我們看了右圖,這是左圖的翻譯版。你可以看到,如果你看兩個相鄰的圖像塊,那么它們的視差是一樣的。左右條帶之間的偏移相同。所以,如果你訓練一個神經網絡,看看左手邊的patch塊來提取一個屬性, 訓練一個神經網絡的副本來觀察右手邊的patch塊,吸引一個屬性。可以看出僅有的一致性屬性分離了,這就是我們想要提取的,它也確實起到了作用。
4、對比學習
但是,Becker和我提出的的最大化互信息方法也存在著很大的問題:一旦開始優化非線性映射,變量是高斯分布的假設就會造成可怕的問題。而如果只學習線性映射,或者在優化一個線性函數,這個假設并沒有引起太大的問題。但是一旦優化了一個非線性函數,它就會導致糟糕的事發生。
這些問題容易通過一種嵌入的方法來可視化,首先是局部線性嵌入 ,它具有以下特點:
局部線性嵌入可以在二維圖中展示出高維數據點局部線性嵌入會使高度相似的數據點變得彼此接近局部線性嵌入通過對所有數據點的二維表示施加全局協方差來防止整個映射崩潰: 協方差(映射點)=單位矩陣但是局部線性嵌入會導致可怕的事情發生,比如維度坍縮。
如下圖所示,可以看到MNIST數據的局部線性嵌入產生的特征,顏色表示分類。
可以發現它沒有對數字進行很自然的分類:它們幾乎是一維的,這些數字長串幾乎互相正交。
而下圖則是MNIST數據的t-SNE嵌入,顏色對應于不同的數字,可以看到它找到了非常好的簇。
那么t-SNE是怎么做到避免維度坍縮的呢?這很大程度上就要歸功于它的目標損失函數:
在這個函數中引進了對比損失來建模相關數據,在上面式子的第二項中,對于所有的目標,k都要遠離Mj,而不僅僅只是一個目標需要遠離。
這種對比損失的思想是從線性嵌入引進的,而當只有一個“similar-to”關系時,線性關系及其代價函數可以轉化為隨機相鄰嵌入層。這個工作是來克服線性潛在局部線性嵌入的問題。線性關系嵌入的方法只有一種關系。只有一個矩陣是單位矩陣。但我們要做的就是讓一個向量和另一個向量相似。
應用線性相關嵌入目標函數使緯度下降:
計算一個包含每個高維數據點大概率表,數據點i將挑選另一個數據點j作為它的近鄰。這個概率將會等比例放縮為
。學習把每個高維數據點Xi轉換為一個二維映射點yi。因此,當我使用相同的函數,可以模擬在高維數據中發現的相似性。
在高維空間中,可能有一個數據點i,我們要計算它選擇每個可能的相鄰點的概率。
然后我們把所有的數據都扔掉。每一個點選擇其它點作為其鄰居的概率包含了我們用于尋找低維圖的點的所有信息。
一旦我們獲得了概率p_j|i,我們不需要在高維空間做任何計算。輸入可以是數據點對之間的“不相似性”,而不是單個數據點在高維空間的位置。
我們的代價函數如上圖所示。對于p_ij很大而q_ij很小的點,成本很高。對于q_ij很大而p_ij很小的點,成本很低,因為我們在Q_i分布上耗費了一些概率質量(probability mass)。
上圖是隨機相鄰嵌入(SNE)方法生成的結果,基于數字1-4圖像之間的歐幾里德距離,它可以產生相當好的嵌入。
t-SNE是SNE的一個變體,我們把在二維空間中確定選擇一個鄰近點的相對概率的高斯分布替換為student-t分布。這為二維平面創造了更多的空間,補償了低維空間的缺陷,并且使得不同的集群之間存在間隙。
為什么協方差約束對于優化非線性或非參數化映射效果不佳?因為線性映射無法改變分布的熵和方差之間的比率。所以如果我們想優化一個線性映射來最大化分布的熵,我們可以簡單地最大化方差。但這對于非線性映射來說不可行。一個非線性映射可以生成一個分布,它有兩個相距很遠但非常緊密的簇。
為什么非線性版本的典型相關分析或線性判別式分析不可行?因為這些方法最大化了方差,以獲得兩個變量之間的高互信息,或者一個變量和一個類之間的高互信息。一個分布的方差可以作為替代它的熵,但僅當被優化的映射是線性的才成立。當然,你也可以通過應用一個固定的到數據的非線性映射,然后優化通常的線性映射。
使用對比損失函數來提取空間或時間一致的向量表征。在2004年,Ruslan Salakhutdinov和我將對比損失用于我和Becker的工作。但是由于算力不夠所以沒發表任何東西。Li和Vinyals在2018年重新提出了對比損失的idea,并將其用于發現時間一致的表征,取得了不錯的結果。現在,使用對比損失進行無監督學習已經很流行了。
3
SimCLR:一種無監督對比學習的新方法
最后講一種新方法SimCLR,這是Ting Chen開發的一種新的利用對比損失來提取表征的方法,當展示同一張圖像的不同片段時,表征取得一致,但是該方法需要大量算力。
1、SimCLR如何工作?
很簡單,取圖像x,然后對圖像進行兩次不同的裁剪。應用深度網絡得到一個特征表示,到目前為止所有過程都是無監督的。h_i和h_j代表不同的向量。嵌入向量試圖在對比中保持一致。也就是說,來自同一張圖像的大量片段生成的嵌入向量要取得一致。
Ting發現他可以得到很好的表征,先用這種方式進行無監督學習,然后在表征的基礎上訓練線性分類器。
2、SimCLR性能如何?
下圖是各種無監督模型在ImageNet Top-1準確率上的對比,可以看到,通過無監督學習在線性層上做表征提取,這種方法既簡單又高效,實現的準確率超過其它模型。
在ImageNet數據集上,SimCLR能得到與2012年AlexNet相同的性能,但是僅僅使用了1%的標簽,這歸功于兩點:
1、首先在具有殘差連接的深度卷積網絡上做無監督表征學習。
2、之后在具有標簽的少量數據集上微調。