天天看點

Human-level concept learning through probabilistic program induction

論文:《Human-level concept learning through probabilistic program induction》 

背景:

  近年來,深度學習表現出接近人類水準的認知效果。但我們發現,深度學習仍然需要大量的訓練資料才可以讓機器進行“學習”,在這一點上,人類可以僅僅通過一個或幾個簡單的例子就可以學習新的概念,識别并派生新的概念,并且學習更豐富的特征,例如舉一反三,分解等。

  那麼人類是怎樣從稀疏的資料中進行學習概念并且進行類比的呢?

  這篇文章在手寫字元實驗中也參考人類學習的能力,創造性的提出使用樸素貝葉斯分類器來進行一次分類學習,即可以識别僅見過一次的字元,并可以根據該字元進行新的類型的“創造”。該方法通過了圖靈測試,僅有25%的人可以成功分辨給定字元是由計算機生成還是由人類手寫得到。

Human-level concept learning through probabilistic program induction

  如上圖所示,在A或B圖中,i)中我們可以通過僅有的一個例子進行分類;ii)中可以産生新的例子;iii)中對例子進行分析parse;iv)中派生出新的類型。

  通過圖i)我們可以隻通過一張新型雙輪機器得到該新概念與其他的界限區分,在ii)中可以生成其他形式變形的雙輪車,iii)中可以解析該雙輪車的部件,并且在iv)中與其他類型結合生成新類型的車

  我們在模型中加入組合性、因果性和自主學習的能力,可以從極少的例子中進行學習。

    組合性:豐富的概念可以從簡單的概念組合得到。

    因果性:将噪聲加入模型中,利用噪聲生成更真實、自然的字元。

    自主學習:通過生成階層化學習,可以通過之前的學習生成新的概念。

  是以我們希冀于仿照人類的學習方式建立貝葉斯機率學習模型:僅通過少數的例子仿照人類組合性、因果性和自主學習,去實作分類、解析和舉一反三。

Bayesian Program Learning:

  BPL模型将concept表示成機率program,通過重組parts、subparts來得到低層的type,進而生成raw data。本文進行了one-shot分類、生成新例和生成新概念的實驗。簡而言之,BPL可以通過現有的碎片資訊來重新加工,捕捉真實世界中的因果關系,重生成多層面的結果。

資料集:

  文章以手寫字元為例比較了人類,BPL和其他一些算法在學習概念(concept learning task)上的差别,這一任務用到的視覺概念來自于Omniglot,這是一個我們從50個書寫系統中收集到的1623個手寫字元(Fig 2),包含每個字元的圖檔和筆畫。(這裡所說的視覺概念可以了解成一個字元,比如說中文裡一個“高”字,不同的人可能寫出不同版本的高,但這些都是“高”這個concept的examples)

  關于Omniglot資料集:首先從www.omniglot.com網站上擷取這麼多字元的圖檔(printed form),再在Amazon Mechanical Turk (AMT)上雇傭志願者來看圖手寫這些字元,手寫過程會被記錄,包括何時提筆,何時落筆,字元筆畫的書寫順序等,這樣就相當于進行了筆畫的拆分。 

Human-level concept learning through probabilistic program induction

  概念類Ψ和M個該類的token

Human-level concept learning through probabilistic program induction

 θ以及對應的二值圖像I之間的聯合機率分布為: 

Human-level concept learning through probabilistic program induction

  一個字元類Ψ={κ,S,R}Ψ={κ,S,R}是由κκ段筆畫S={S1,...,Sκ}S={S1,...,Sκ}以及他們之間的位置關系R={R1,...,Rκ}R={R1,...,Rκ}組成的,如“二”這個字元類,是由2段筆畫,并且互相獨立的位置關系構成的。聯合機率為

Human-level concept learning through probabilistic program induction

  其中筆畫數目κκ是由經驗頻率(empirical frequencies)估計的多項式P(κκ)采樣得到的。如下圖我們看出所有的字元中,1筆2筆的字元最多,3,4,5筆的稍少,筆畫更多的則更少。根據統計結果我們可以估計出筆畫數目k為不同值得一個機率P(k). 

Human-level concept learning through probabilistic program induction

  得到筆畫數目以後再來考慮各個筆畫是什麼。一段筆畫是落筆-提筆的一個階段(Fig. 3A, iii),其中每次暫停分割開了許多的子筆畫(Fig. 3A, ii),即Si={si1,....sini}Si={si1,....sini},子筆畫的數目nini是由經驗頻率采樣得到,如下圖,可以得到的一個結論是一個字元的筆畫越多,筆畫越簡單(子筆畫少)。

Human-level concept learning through probabilistic program induction

  每段子筆畫sijsij表示成3次B樣條曲線,包含3個參數sij={zij,xij,yij}sij={zij,xij,yij},zijzij是目前子筆畫在library of primitives中的index,xijxij是樣條的5個控制點,yijyij是尺度因子,如Fig S1所示。則聯合分布。

Human-level concept learning through probabilistic program induction
Human-level concept learning through probabilistic program induction

  其中是一個從經驗bigrams中學到的一階馬爾科夫過程。大概的意思就是說我們通過事先準備好的子筆畫資料庫進行采樣,得到不同的子筆畫,進而構造出不同的筆畫,當然子筆畫與子筆畫之間是否會連續出現是受經驗制約的,表示成一階馬爾科夫過程。(bigram是指給定seed primitive後,我們可以得到5個最可能的接下來的動作,即second primitive,這可以用一階馬爾科夫表示。) 

Human-level concept learning through probabilistic program induction

  得到P(SiSi)以後,他們之間的空間關系RiRi表示的是筆畫SiSi的起點與之前的筆畫{S1S1,…,Si−1Si−1}的關系,共定義了4種關系:ξi=ξi={Independent, start, end, along},他們的可能性為θRθR(34% independent, 5% start, 11% end, and 50% along)。 

筆畫和關系都确定以後,一個字元類就建立好了,如下圖所示。 

Human-level concept learning through probabilistic program induction

 生成模型:

  BPL通過簡單的機率模型來表示concept,通過parts (Fig. 3A, iii)/ subparts (Fig.3A, ii)/ relation (Fig. 3A, iv)組合來生成概念,BPL定義了一個生成模型,可以通過對現有parts/subparts的重新組合得到新的concept type。然後新的概念類同樣可以表示成一個生成模型,這個低層次的生成模型可以生成該概念的新的例子-token(Fig. 3A, v),這樣BPL就是生成模型的生成模型了。

Human-level concept learning through probabilistic program induction

 (A)通過選擇資料庫中的原始運作資料(顔色編碼)生成新類型,結合這些子部分(II)形成主要部分(III),并利用主要部分和關系定義簡單的程式(IV)。通過運作這些程式,新的規則生成(v),然後又将其作為原始資料呈現(VI)。(B)繼而産生新的規則。

Human-level concept learning through probabilistic program induction

  将BPL生成模型分為兩個部分:type level和token level。Type level主要是建構字元的解析結構,token level是根據解析結構産生手寫字元的過程。 

       type level: 

       (1)從背景資料集中得到的經驗分布(就是前期的一些統計規律)中取樣k個part,每個part中取樣n個subpart 

       (2)從背景資料集中學習得到離散筆畫集,構造一個part的模版

       (3)通過采樣每個subpart的一些控制點和尺度參數,将part表示成參數化的曲線(到這一步已經得到了筆畫的輪廓,軌迹);

       (4)根據relation(attached along,attached at start)得到筆畫間粗略的位置關系(獨立放置、開始、結束、還是沿着之前的subpart) 

       token level: 

       (1)引入适當的噪聲來生成筆畫曲線S(m)

       (2)筆畫開始位置L的精确標明,從背景集中能夠得到筆畫的空間位置關系,結合上一筆,取樣即可得到part的開始位置

       (3)進行放射變換A(m)以及加入适當的噪聲

       (4)通過随機補償函數即可得到二值圖像,用灰色墨水畫出軌迹

One-shot Classification:

  給定1張字元圖檔,要求人類測試者和BPL機器從20張圖檔中選出和他同類的圖檔(如Fig 1B i所示)。人類作為skilled one-shot learners,錯誤率為4.5%,而BPL的錯誤率更好一些,3.3%。而Deep learning相關的model如convnet:13.5%error,HDmodel,34.8%error,這些模型都是在一系列計算機視覺任務上表現良好的模型,deep siamese convnet在one-shot learning任務上做了優化,其結果是8% error,誤差還是比我們的結果高了2倍多。是以BPL的優勢是可以在概念的學習中對隐含的因果關系進行模組化。這裡其實還需要考慮深度學習等學習方法其實并不是适用于one-shot實驗這一事實。

  BPL的另一個關鍵點在于,如果沒有learning to learn的機制,或者compositionality的機制,會産生較高的error(11%和14%)。no learning to learn的意思是破壞之前設計好的type level和token level生成模型的超參數,比如以token level為例,原來設計好的參數可能是讓along這種位置關系的兩個筆畫在一定範圍内進行連接配接,破壞後則是完全随機的一種連接配接方式。no compositionality的意思是說把字元看成一個整體,通過一條樣條曲線進行拟合,而不是像之前一樣做筆畫和子筆畫的拆分。 

Human-level concept learning through probabilistic program induction

Generating New Examples:

  人類對于one-shot learning的能力并不僅僅用來做classification。他還可以生成同一概念的新例子。研究者向BPL系統展示它從未見過的書寫系統(例如,藏文)中的一個字元例子,并讓它寫出同樣的字元。并不是讓它複制出完全相同的字元,而是讓它寫出9個不同的變體,就像人每次手寫的筆迹都不相同一樣。例如,在看了一個藏文字元之後,算法能挑選出該字元用不同的筆迹寫出來的例子,識别出組成字元的筆畫,并重畫出來。與此同時,人類測試者也被要求做同樣的事情。最後,通過視覺圖靈測試來比較人類的creative outputs和機器産生的例子——研究者要求一組人類裁判(來自亞馬遜土耳其機器人,Amazon Mechanical Turk)分辨出哪些字元是機器寫的,哪些是人類寫的。 

  如圖5所示,給定人類産生的9個新樣例和機器産生的樣例,人類裁判挑選出人類的作品,我們稱為identification(ID)level。理想情況是50% ID level,即裁判不能區分哪些是機器産生的,哪些是人産生的,最差的performance是100%,就是說人類裁判完全能夠正确區分人類和機器。從Fig 6B 中看出,147個人類裁判隻實作了52%的ID level,這個結果隻稍稍比50%的随機機率要好一點。而對于BPL lesion來說,沒有了learning to learn和compositionality,圖靈測試就簡單多了(80% ID level和65% ID level),是以這兩條principle對于BPL具有human-like 生成模型起到了關鍵作用。 

Human-level concept learning through probabilistic program induction

Generating New Concepts:

  人類的能力不僅僅能從一個給定的concept中産生新樣例,同時我們可以産生新的concept。我們通過給測試者展示10個foreign alphabet中的1個的幾個例子,讓他産生新的屬于該alphabet的字元。如圖7A所示。BPL可以通過加一個nonparametric prior在type level上得到新的類,同時複用所給的例子的stroke來保證書寫風格上的一緻。人類裁判(N=117)比較了人類測試者和BPL在這一任務上的結果,如圖7A所示,先給裁判看i再看iii,讓他判斷human or machine,最終裁判隻得到了49%的ID level,這和随便猜沒啥差別。另外,BPL lesion(沒有type-level的learning to learn)則達到了69%ID level。 

  最後,124 個裁判比較了在完全unconstrained的情況下生成new concept(不受限于某個特定的alphabet,即Fig 7B),達到51%的ID level。BPL lesion的結果分别是68%和64%,說明compositionality和learning to learn都是通過視覺圖靈測試的關鍵。

Human-level concept learning through probabilistic program induction

結論:

  總結一下,這篇文章的大緻流程是:首先使用了一個background set來模拟人的經驗,将background set中的字元拆分成筆畫(連貫的一筆),每個筆畫再拆分成若幹個子筆畫(筆根據筆畫中的停頓),并且記錄各個子筆畫之間的連接配接關系,由此得到了一堆子筆畫及其之間連接配接關系的分布。以上是在background set上完成的,相當于人的先驗知識,産生式模型是子筆畫、筆畫以及互相之間關系的聯合機率分布。用機率分布可以生成新的圖像,也可以計算生成某個圖像的機率。 

  這種機制采取了和人類思維相近的步驟。人有大量先驗知識(background set),這些知識首先會被分析并提取出各個層次的feature(part、subpart),之後大腦會嘗試對這些feature進行不同的組合,包括完全不同領域的知識,并且從中篩選出有意義的組合(絕大多數都是完全沒有意義的),當接收到一個全新的知識時,會與某些已經嘗試過的組合非常契合,經過進一步适應,就能非常快的接受這樣一個新的知識。當然人不僅可以利用先驗知識準備一堆組合為新的知識服務,還可以通過内部的篩選機制,将有用的組合直接呈現給意識,也就是靈感迸發的時候。這篇工作将大腦的這種舉一反三的能力運用了出來,可以說是非常有意義的,當然這篇工作中,feature的提取群組合用的是簡單的拆分和條件機率的計算,對組合的篩選也是用的最簡單的評分和排序,都是淺層的模型。用淺層的模型來完成複雜資訊的組合和篩選是不現實的,以後如果能與深度網絡結合起來,相信能有更大的突破,具有更強的舉一反三地能力。

  盡管人工智能的前景正在改變,在學習新概念上人類仍遠優于機器:人類隻需要更少的例子,卻能以多種形式運用概念。我們的工作表明,語義合成性、因果關系和學會學習将幫助機器彌補這種差距。機器學習和計算機視覺的研究者正開始探索建立在簡單程式歸納上的方法,我們的結果表明這種方法可以使人工智能在分類任務中達到人類的水準,并能在視覺圖靈測試中騙過大多數裁判。在每項測試中,隻有不到25%的裁判的表現顯著好過随機猜測。

  雖然能夠成功完成這些任務,在識别視覺概念中的結構上BPL仍無法與人類相比。它缺乏平行、對稱、可選要素(如“7”的小角)等外顯知識,也不知道一個筆畫的收尾與其他筆畫的聯系。而且,人類還運用了對其他能力的概念:繪畫、說明、溝通以及概念組合。機率程式可以掌握概念學習與運用的多個方面,但這隻會發生在它們擁有更抽象和複雜結構時。更複雜的程式還能适合學習超出簡單知覺範疇的複雜概念及其因果關系。例子包括實體構件(如工具、車輛和家具)、分形結構(如河流和樹木)甚至抽象知識(如自然數、自然語言語義和實體理論)。

  知曉人類如何學會所有這些概念是一個長期目标。在近期,将我們的方法應用到其他類型的符号化概念可能非常具有前景。人類文化提供了許多符号系統,如手勢、舞蹈、口語和手語。和字母一樣,這些概念可以從一個或幾個示例中學到,即便其象征性還不明顯。人們通常可以根據有限的經驗認出甚至給出新的例子。BPL的語義合成性、因果關系和學會學習等原則或許有助于解釋這是如何發生的。

  為了說明BPLBPL如何應用于語音領域,口語程式可以被指導将構成音素系統性地彙成音節,再進一步彙成詞素和整個詞語。給出一個詞語抽象的音節和音素分析,因果模型就可以生成現實語音标記。我們已經發現了一個利用語義合成性和學會學習原則的原型模型,它可以模仿人學習新口頭詞彙的某些方面。

  我們的工作側重于成年學習者,這引出了自然發展問題。如果兒童和BPI一樣,在學習寫字時有歸納性偏向,那麼這一模型就有助于發現為什麼兒童覺得有些字母難寫,以及哪種教學過程最為有效。比較兒童和BPL在不同階段的分析和泛化行為,這有助于評估模型學會學習的機制并給出改善意見。将我們的測試拿給嬰兒做,據此可以知道孩子在學習感覺字母時,是否更依賴建立在他們原始寫作經驗之上的語義合成性和因果關系。因果關系的再呈現已經被納入到現在的BPL模型中,但它們很可能是通過更深的層次結構模型嵌入到“學會學習”這一過程中。

  最後,我們希望上述工作有助于揭示概念的神經表征,并推動更多基礎神經學習模型的發展。此前的行為研究和我們的結果共同表明,人們部分地通過推斷抽象程式學習新的手寫字母。我們可以像分析BPL那樣解碼人類學習新知時的大腦運動前區皮質(或者其他行動導向區域)的活動嗎?最近,大型腦模型和深度遞歸神經網絡也将重點放在了字母識别和生産任務上,但通常是從每一概念的大樣本示例中學習。我們将此文介紹的新模型視作這些神經模型的一個挑戰。我們希望它能融合BPL已經給出執行個體的語義合成性、因果關系和學會學習三原則。

學習:

“Human-level concept learning through probabilistic program induction”閱讀筆記

Human-level concept learning through probabilistic program induction 中文翻譯

《Human-level concept learning through probabilistic program induction》閱讀筆記

類人概念學習:機器學習下一個飛躍?  

别擔心,目前來看,人類還是比機器聰明的

繼續閱讀