解讀人類水平的概念學(xué)習(xí)和一次性泛化
近日,在 Yuanjun Gao 的帶領(lǐng)下,我們討論了 Lake 等人的《Human-level concept learning through probabilistic program induction》[1] 和 Danilo J. Rezende 等人的《One-Shot Generalization in Deep Generative Models》[2] 這兩篇論文。這些論文旨在模仿人類從少數(shù)樣本中學(xué)習(xí)的能力。第一篇論文介紹了貝葉斯程序?qū)W習(xí)(BPL/Bayesian Program Learning)框架——一種允許這種學(xué)習(xí)能力的概率模型,而第二篇文章在深度生成模型中實現(xiàn)了這一想法。
一、人類水平的概念學(xué)習(xí)(Human Level Concept Learning)
從 Lake 的論文 [1] 的介紹來看,一次性學(xué)習(xí)(one shot learning)的動機(jī)是很清晰的:「人們可以從僅僅一個或一小撮樣本中學(xué)習(xí)一個新的概念,而機(jī)器學(xué)習(xí)的標(biāo)準(zhǔn)算法需要幾十或幾百個表現(xiàn)類似的樣本?!拐撐耐ㄟ^三種能力表述了這種學(xué)習(xí)。給定一個單一的對象,人類可以:
1. 分類新樣本,
2. 生成類似類型的新樣本,
3. 把它解析成部分,并理解它們的關(guān)系。
論文 [1](上圖)的圖 1 中的示例很好的描述了它。當(dāng)給定(i)的紅色框中的單個對象時,可以對下面的對象進(jìn)行分類,無論它是否是類似類型。此外,人類可以創(chuàng)建類似于(ii)中的樣本。人類也可以如(iii)中所示把它解析成三個較小的部分并且幻想如(iv)中所示的新樣本。
1. 貝葉斯程序?qū)W習(xí)
論文介紹了貝葉斯程序?qū)W習(xí)(BPL)框架,該框架能使一個算法獲得上面描述的那些能力。BPL 框架基于三個基本思想:
- 組合性(Compositionality)
- 因果關(guān)系(Causality)
- 學(xué)會學(xué)習(xí)(Learning to learn)
BPL 方法學(xué)習(xí)簡單的隨機(jī)程序以表示概念,通過各部分、子部分和空間關(guān)系 [1] 來組合式地構(gòu)建它們。關(guān)于類型 Ψ、該類型的 M 個 toke θ(1),...,θ(M) 和對應(yīng)圖像 I(1),...,I(M) 的聯(lián)合分布可以被表示為:
2. 關(guān)于手寫字符的例子
提供一個示例可以讓人更容易理解 BPL 及其基本思想。假設(shè)我們正在通過不多的幾個樣本來學(xué)習(xí)一組新的手寫字符。字符可以基于通過按下筆開始和提起筆(在下面的圖中定義為「部分(part)」)終止的一下筆劃來解析。然后,每個筆劃可以通過筆的短暫停頓(下面的「子部分(subpart)」)進(jìn)一步分隔。如果給出字符「B」,則「B」可以被解析為兩部分:一個是直的部分和另一個有兩個曲線的部分。此外,第二部分可以進(jìn)一步分成一組兩個半圓。
在該模型中,手寫字符的生成可以使用生成過程來描述。該過程可以分為類型生成(type generation)和令牌生成(token generation),如論文 [1] 的圖 3 所示。
總結(jié)來說,類型生成過程是:
- 確定部分的數(shù)量。
- 對于每個部分,確定子部分的數(shù)量(以部分的數(shù)量為條件)。
- 對于每個子部分,從基元(primitives)「順序」地采樣實際符號(以前一個子部分為條件)。它完成每個部分。
- 對于每個部分,采樣每個部分的關(guān)系(以當(dāng)前部分和之前的部分為條件)。舉個例子,一個關(guān)系可以是「當(dāng)前部分應(yīng)當(dāng)與先前部分的哪一點銜接上」。
- 關(guān)系和部分定義了一類字符
給定一種類型,手寫字符的實際圖像(令牌和圖像生成過程)通過以下方式生成(對人寫一個字時筆是如何動的進(jìn)行建模)
- 對于每個部分,增加一個運(yùn)動變化(因為手寫字符每次看起來稍有不同)。
- 對于每個部分,依次對開始位置進(jìn)行采樣,以它與先前部分的關(guān)系與軌跡為條件。
- 對于每個部分,對軌跡進(jìn)行采樣,以其形狀和開始位置為條件。
- 添加全局變換。
- 通過隨機(jī)渲染函數(shù)創(chuàng)建圖像,使用灰度墨水對筆畫軌跡進(jìn)行排序并解釋像素值。
上面的例子很好地解釋了 BPL 的三個基本思想。字符可以被認(rèn)為是從簡單原語(「B」由一個直棒和半圓構(gòu)造而成)構(gòu)成?;诠P劃和停頓進(jìn)行解析的事實抓住了真實世界過程的自然因果結(jié)構(gòu)。此外,通過「開發(fā)能讓以前的經(jīng)驗來助于學(xué)習(xí)新概念的分層先驗」,來讓模型學(xué)會學(xué)習(xí) [1]。(分析「B」學(xué)習(xí)了新的,原語和關(guān)系,其稍后可以很容易地用于學(xué)習(xí)其它字符)。
文章 [1] 的圖 4(下圖)顯示了 BPL 如何通過解析來學(xué)習(xí)一個新的圖形。左側(cè)面板顯示了給定一個示例的最好的五個學(xué)習(xí)解析,以及如何用它來重新適配一個新的樣本。右面板將機(jī)器解析與實際情況,即人是如何解析它們的,進(jìn)行比較。
二、與人類能力相比
1. 新樣本的分類
給定新字符的單個圖像,分類任務(wù)是從 20 個不同字符中選擇相同類型的圖像。結(jié)果如文章 [1] 的圖 6A 所示(下圖)。BPL 和人類顯示出了相似的錯誤率(3.3%和 4.5%)。
論文還在「損害(lesioning)」算法的某些部分之后嘗試了相同的任務(wù)。例如,在「學(xué)習(xí)去學(xué)習(xí)(Learning-to-learn)」步驟中的損害移除無類型生成過程并導(dǎo)致了 11%的錯誤率。損害「組合性」步驟要求每個字符只使用單個筆劃學(xué)習(xí),并導(dǎo)致了 14%的錯誤。這些結(jié)果表明這兩個想法在 BPL 中是有多么基礎(chǔ)性。
2. 新樣本/概念的產(chǎn)生
對其進(jìn)行了「視覺圖靈測試(Visual Turing Test)」以檢查這種能力。給定一個示例字符,人類和 BPL 創(chuàng)建了一組新的樣本。然后,參與者判斷哪個集合是由人(或機(jī)器)創(chuàng)建的。新創(chuàng)建的樣本如文章 [1] 的圖 5 所示。如圖所示,很難區(qū)分它們。您可以在圖標(biāo)題的結(jié)尾處查看答案。實驗結(jié)果示于文章 [1] 的圖 6B 中(上圖)。由于它是圖靈測試,50%的辨識(ID)水平表明兩種情況很難區(qū)分。評判者平均只有 52%的辨識水平。
為了更直接地檢驗解析方法,所繪制字符以電影幻燈片的形式展示給評判者。結(jié)果是 59%的辨識率水平。此外,對產(chǎn)生新的概念,而不是新的樣本的同樣的實驗也做了測試。BPL 也達(dá)到了接近 50%的辨識水平。
3. 將對象解析成部分并理解它們的關(guān)系
如文章 [1] 的圖 4(從頂部開始的第三個圖)所示,BPL 的解析能力是相當(dāng)合理的,并且可以與人類解析相比。
4. 討論
BPL 理解視覺概念中結(jié)構(gòu)的能力仍然非常有限。它缺乏平行線、對稱性、可選元素(如交叉筆畫)等許多知識。它也缺乏人類使用學(xué)習(xí)到的概念用于其他任務(wù),如規(guī)劃、通信和概念組合 [1] 的能力。然而,對于人類,這些是從多年的教育中學(xué)到的。一次性學(xué)習(xí)和歸納這些東西似乎不是一個容易的任務(wù)。論文還提到了對概念的神經(jīng)表達(dá)和更多神經(jīng)基礎(chǔ)的學(xué)習(xí)模型發(fā)展的希望,這就帶來了下一篇文章。
三、深度生成模型中的一次性泛化(One-Shot Generalization in Deep Generative Models)
這篇文章使用了深度生成模型來進(jìn)行圖像的一次性泛化學(xué)習(xí)。它建立在反饋(feedback)和注意(attention)的原理上。
1. 模型
(1)注意(attention)
該模型結(jié)合了注意機(jī)制來學(xué)習(xí)圖像。在這篇文章中,實現(xiàn)了空間變換(ST)的注意過程 [3],其對形狀和大小是不變的。它使用參數(shù) λ 處理輸入圖像 x 以生成輸出:
其中 κh 和κw 是一維核,⨂是兩個核的張量外積,*表示卷積。
(2)順序生成模型
下面的數(shù)學(xué)表達(dá)式和文章 [2] 的圖 2(如下所示)簡潔地描述了模型:
在每個步驟 t = 1...T,K 維隱含變量 zt 都是獨立進(jìn)行采樣的??梢允褂米⒁鈾C(jī)制來合并外部上下文或側(cè)面信息片段 x'。
該模型是現(xiàn)有模型(如 DRAW [4]、復(fù)合 VAE [5] 和 AIR [6])的泛化。然而,它引入了隱藏的 canvas 步驟,其允許在隱藏空間中構(gòu)造預(yù)圖像。另一個需要注意的是,它允許對模型進(jìn)行采樣,而不將畫布 ct 的結(jié)果反饋到隱藏狀態(tài) tht,這會使其更高效。
其生成樣本的能力在不同的數(shù)據(jù)集中都有所體現(xiàn)。作為一個例子,來自二值化 MNIST 數(shù)據(jù)集的樣本生成的結(jié)果如下所示。
3. 一次性泛化的使用
生成新樣本或新類型。這篇文章使用上述生成模型對給定小樣本進(jìn)行了演示。它類似于上面論文中描述的能力。然而,模型不是通過學(xué)習(xí)單個圖像(或少量圖像)來產(chǎn)生樣本,而是生成單個類型的新樣本,該單個類型并不是訓(xùn)練集的一部分。為了做到這點,它使用一個條件生成模型,如文章 [2] 的圖 2b 或生成過程的「上下文」部分所示。
(1)生成新樣本
論文測試了兩種不同情況下的能力。
- 使用所有可用的字母對模型進(jìn)行訓(xùn)練。但是刪除每個字母表中的三個字符以形成測試集。
- 在 50 個字母中,30 個用于訓(xùn)練,20 個用于測試。換成 40-10 和 45-5 的訓(xùn)練測試數(shù)據(jù)拆分方式也同樣進(jìn)行了測試。
結(jié)果如下所示(文章 [2] 的圖 9 和 10),并且在不同的訓(xùn)練測試數(shù)據(jù)拆分的情況下也比較了訓(xùn)練和測試的對數(shù)似然。
文章 [2] 的圖 5 顯示在 45-5 拆分的訓(xùn)練和測試對數(shù)似然中存在一點差異,但是其在其它情況下表現(xiàn)了出來。這表明過度擬合與小訓(xùn)練數(shù)據(jù)集一起出現(xiàn)。然而,由此產(chǎn)生的字符表明,即使在過擬合的情況下,它還是生成了合理的新樣本。
(2)新類型的生成
論文還測試了該過程是否可以通過顯示一個字符圖像來生成新類型。結(jié)果如文章 [2] 的圖 11 所示。(結(jié)果是主觀的。)
4. 討論
此論文使用深度生成過程來模仿人類的一次性泛化能力。它表明,當(dāng)提供未見過的樣本時,該過程可以產(chǎn)生新樣本或新類型。相比于使用對象自然發(fā)生的因果結(jié)構(gòu)的 Lake [1] 的 BPL 模型,這種方法適用于許多場景。然而,還是有一些的限制,這還需要未來進(jìn)一步研究。它仍然需要合理的數(shù)據(jù)量來避免過度擬合。雖然它適用于任何圖像(通過不使用專用結(jié)構(gòu)的方式),但它不能將結(jié)構(gòu)解析為更小的部分。
原文地址:https://casmls.github.io/general/2017/02/08/oneshot.html
【本文是51CTO專欄機(jī)構(gòu)機(jī)器之心的原創(chuàng)譯文,微信公眾號“機(jī)器之心( id: almosthuman2014)”】