閱讀957 返回首頁    go 技術社區[雲棲]


怎樣教機器學會畫畫和抽象“算術”?穀歌大腦深度詳解(附論文)

還記得去年Google Brain推出的小遊戲“Quick, Draw!”嗎?機器給出一個名詞,你需要在20秒內畫好,還得讓機器猜出來。

8971104fc75f18346a4f0758156d10129b26fafc

量子位編輯部全體同事都表示玩過這個小遊戲,我們打算在自己簡曆裏加一條:參與了穀歌大腦的Sketch-RNN項目。

說正事。

穀歌大腦團隊研究員David Ha和Douglas Eck今天在博客中宣布,他們用“Quick, Draw!”遊戲的玩家塗鴉作品教會了人工智能像人類一樣畫畫,並發表了論文《A Neural Representation of Sketch Drawings》來詳細解釋這個名為Sketch-RNN的項目。

為訓練Sketch-RNN網絡,研究員們收集了人類在“Quick, Draw!”中畫的75類、70000幅塗鴉,還記錄了人類畫畫的整個過程:畫筆的運動軌跡、何時落筆何時停止等等。

在訓練過程中,AI還對自己所畫的東西產生了抽象概念,比如說,它知道貓應該有兩隻眼睛,不會畫出這樣的驚悚作品:

0817f4539187f232dda32d9d8d3fcaec4ec3a0f3

兩位研究員的博客全文

抽象的可視通信是人們相互之間表達思想的重要部分。從兒童時代開始,人類就開始形成用畫筆描繪對象、甚至情緒的能力。這種簡單的塗鴉可能與真實照片有很大差異,但卻能告訴我們,人類如何對周圍世界的畫麵進行展現和重建。

a1bf820fbeea5d2c8b9b5a46b45f2d510a122ff2

 Sketch-RNN生成的繪畫

在我們近期的論文《A Neural Representation of Sketch Drawings》中,展示了一種生成性的循環神經網絡(RNN),可以繪製普通物體的塗鴉,其目標是訓練機器以類似人類的方式來畫畫,並概括抽象的概念。我們使用由手繪塗鴉構成的數據集去訓練我們的模型,而這些塗鴉的繪製由一係列控製畫筆的肢體運動組成:畫筆運動的方向,何時提筆,何時停止繪畫。通過這樣的訓練,我們創造了一種可能有多種用途的模型,例如協助藝術家的創意過程,以及指導學生學習繪畫。

盡管基於神經網絡的圖像生成模型已獲得了大量研究,但大部分這類工作都專注於由二維像素網格構成的圖像建模。目前,這些模型被用於生成具有真實感的圖像,但這樣做的關鍵挑戰在於,如何生成結構協調的圖像。例如,這些模型生成的寵物貓有時會出現三隻眼睛,而生成寵物狗可能有好幾個腦袋。

ed614df91b524b413507ab416e5addf5ab0d3687

 Ian Goodfellow, NIPS 2016 Tutorial

在這項工作中,我們基於人類的繪畫方式研究了較低維度、基於向量的表現方式。我們的模型Sketch-RNN基於seq2seq自動編碼框架,利用了變分推斷,並使用超網絡(hypernetworks)作為可重複的神經網絡單元。使用seq2seq自動編碼器的目的是訓練神經網絡將輸入語句編碼為一個浮點數向量,即隱藏向量,並利用這一隱藏向量和解碼器去生成輸出序列,以盡可能接近的方式重建輸入序列。

a1bf820fbeea5d2c8b9b5a46b45f2d510a122ff2

 Sketch-RNN原理圖解

在我們的模型中,我們有意向隱藏向量加入了噪聲信號。在論文中,我們展示了,通過在編碼器和解碼器之間的通信信道中引入噪聲,這一模型無法再準確重建輸入塗鴉,而是必須學會捕捉輸入塗鴉的本質。我們的解碼器獲取這一隱藏向量,生成動作序列,用於繪製新塗鴉。在以下圖片中,我們將多幅貓塗鴉輸入至編碼器,並利用解碼器生成了重建的塗鴉。

8316aec69b4d436c07ae9bf8b6182ef6e5811ccc

需要強調的一點在於,重建的貓塗鴉並不是輸入塗鴉的直接模仿,而是與輸入對象類似的新塗鴉。為了證明,這一模型並非簡單地模仿輸入序列,而是學會了人類塗鴉的方式,我們可以向編碼器輸入非標準的塗鴉。

f5e1c435d7444f3f2411b1531ffb92de9f83e325

當我們向編碼器輸入三隻眼睛的貓塗鴉時,模型生成了外形類似,但隻有兩隻眼睛的貓塗鴉。這表明,模型已經知道,貓隻有兩隻眼睛。

為了證明,我們的模型並不是從大量已記憶的貓塗鴉中選擇了最接近的一個,我們可以輸入完全不同的內容,例如一把牙刷的塗鴉。我們看到,這一神經網絡生成了類似貓的塗鴉,但胡須很長,像是這把牙刷。這表明,神經網絡學會將輸入塗鴉編碼為一係列抽象的貓概念,並嵌入至隱藏向量中,隨後基於隱藏向量重建全新的塗鴉。

我們重複了試驗,讓這一模型學習豬的塗鴉,並取得了類似結果。在輸入8條腿的豬塗鴉時,這一模型生成了外形類似,但隻有4條腿的豬塗鴉。如果我們向其中輸入卡車塗鴉,那麼模型會生成看起來像是卡車的豬塗鴉。

262716c2a4fa1b82dfde5fb439b7e97882601888

為了研究這些隱藏向量如何編碼動物的概念特征,在下圖中,我們首次獲得了來自兩個明顯不同的豬塗鴉的隱藏向量,包括一個豬頭(綠色框)和一隻完整的豬(橙色框)。我們希望了解,模型如何重建豬塗鴉,而方式之一是在兩個不同的隱藏向量之間進行插值,隨後從每個插值的隱藏向量去生成塗鴉。在下圖中,我們展示了豬頭塗鴉如何逐漸演化成了整隻豬的塗鴉,並在這一過程中演示了,我們的模型如何組織豬塗鴉的概念。我們看到,隱藏向量控製了鼻子與頭部的相對位置和大小,以及塗鴉中身體和腿部是否存在。

7629eb64bce5967b7f4b15edf1ac5181744ed52b

我們還想知道,如果模型能學會多種動物塗鴉的重建,那麼在這樣的情況下,最終塗鴉看起來會是什麼樣?在下圖中,我們利用基於貓頭和整隻豬之間的插值隱藏向量去生成塗鴉。我們看到,最終塗鴉逐漸從一隻貓頭變成了有尾巴的貓,再變成軀體肥胖的貓,最終變成一隻豬。與兒童學習畫動物的方式類似,我們的模型在畫動物時也是將頭、腿和尾巴連接到身體上。我們還看到,這一模型繪製的貓頭與豬頭有明顯不同。

668f6e5342fc8220f9146d19ef48c4d673dfb3d0

這些插值的例子表明,隱藏向量確實編碼了輸入塗鴉的概念特征。那麼,我們是否可以使用這些特征去增強不具備這類特征的其他塗鴉,例如在貓頭上加一個身子?

083470e89552651261d113baf939d98dabe89ec8

 通過這樣的隱藏向量算術,係統學會了抽象概念之間的關係

實際上,在我們用貓塗鴉和豬塗鴉訓練模型的過程中,我們發現,塗鴉的類推是可能的。例如,我們可以從整隻豬塗鴉的隱藏向量中刪除屬於豬頭的隱藏向量,從而得到屬於身子的向量。將這樣的差異添加到貓頭的隱藏向量中,我們就可以得到一隻完整的貓。這樣的塗鴉類推使我們可以探索,模型如何組織其隱藏空間,在重建塗鴉的過程中呈現不同的概念。

創意應用

在這項工作中,除了研究目的以外,我們也非常關注Sketch-RNN的潛在創意應用。例如,在最簡單的應用場景中,圖案設計師可以使用Sketch-RNN為布藝和牆紙圖案生成大量類似,但各有不同的設計。

a0e60cfb5cf07786d7f80958f99235cbbc72c20d

 綠色和黃色方框中的是輸入塗鴉,其他是係統生成的類似卻不同的設計

正如我們此前所見的,經過訓練,能繪製豬塗鴉的模型也可以繪製出類似豬的卡車,隻要提供卡車塗鴉的輸入即可。我們可以將這樣的成果投入應用,幫助創意設計師得出抽象設計,滿足目標人群的喜好。

例如在下圖中,我們將4把不同椅子的塗鴉輸入至能夠畫貓的模型中,生成了與椅子有相似之處的貓塗鴉。我們可以更進一步,利用插值方法去探索看起來類似椅子的貓的隱藏空間,生成一係列設計供選擇。

ee50369a4d0e7f9b366e37c9f14723324d889634

探索不同對象之間的隱藏空間或許可以幫助創意設計師找到有趣的交匯點,以及不同圖案之間的關係。

5e23f7bcd7fbb585f838f82f10b7ee04227a44bf

我們還可以將Sketch-RNN的解碼模塊視為獨立模型,訓練其預測未完成塗鴉的可能結果。這種技術可以協助藝術家完成創意流程,推薦更多方式去完成尚未完成的作品。在下圖中,我們繪製了多個不同的未完成塗鴉(用紅色表示),並讓這一模型以多種可能的方式去完成繪畫。

b94097e5aa498d8e08098e9c728af3808a0976e6

我們甚至可以將這一概念更進一步,讓不同模型去處理同一幅未完成塗鴉。在下圖中,我們看到,同樣的圓形和方形圖案如何演變成了螞蟻、火烈鳥、直升機、貓頭鷹、沙發,甚至畫刷的一部分。通過使用多樣化的模型去繪製不同對象,設計師可以探索具有創新性的方式,向受眾傳達有意義的可視化信息。

ba1385408e07808265fe6d917f36aba0398dd7b4

對於生成性向量圖像建模未來的各種可能性,我們感到非常興奮。這些模型將在多個方向上,賦能許許多多有趣的創新應用。它們也可以被作為工具,協助我們加強對自身創新性思維流程的理解。

論文

A Neural Representation of Sketch Drawings

摘要:

We present sketch-rnn, a recurrent neural network (RNN) able to construct stroke-based drawings of common objects. The model is trained on thousands of crude human-drawn images representing hundreds of classes. We outline a framework for conditional and unconditional sketch generation, and describe new robust training methods for generating coherent sketch drawings in a vector format.

地址:https://arxiv.org/abs/1704.03477

各方評價

穀歌大腦的負責人Jeff Dean第一時間在Google+(是的,這個網站還活著)上發文這篇博客文章和團隊的論文,還評價說,Sketch-RNN是對機器學習在未來能夠提供何種創意工具的試水。

最讓眾網友感興趣的大概有兩點。

一是算術問題,貓頭的圖片+(整隻豬的圖片-豬頭的圖片)=?係統能知道是一隻貓,讓網友們很驚訝。

二是PASCUAL JUAN NUÑEZ提出的,這一研究的關鍵不是畫畫,而是概念化,可以應用到二維圖像、一維的壓力波動、三維建模等各種領域。

至於那些fun、nice、awesome、interesting,我們就不提啦。

還沒玩過“Quick, Draw!”,以及前兩天推出的Auto Draw的胖友,可以去玩一下:

Quick, Draw!傳送門:quickdraw.withgoogle.com

Auto Draw傳送門:autodraw.com

本文來源於"中國人工智能學會",原文發表時間" 2017-04-15 "

最後更新:2017-05-22 13:32:06

  上一篇:go  從主機到深度學習集群:IBM的語音之路
  下一篇:go  ThreadLocal使用