天天看點

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

本文來自AI新媒體量子位(QbitAI)

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

說正事。

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

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

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

△ Sketch-RNN生成的繪畫

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

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

△ Ian Goodfellow, NIPS 2016 Tutorial

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

△ Sketch-RNN原理圖解

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

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

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

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

創意應用

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

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

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

怎樣教機器學會畫畫和抽象“算術”?谷歌大腦深度詳解(附論文)兩位研究員的部落格全文論文各方評價

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

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.

谷歌大腦的負責人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-14

繼續閱讀