谷歌大腦教機器畫簡筆劃,神經網路的大作都長啥樣?
雷鋒網AI科技評論按:雖然簡筆劃與實物的逼真程度相去甚遠,但即便是一個小孩也能輕易理解圖案中的內容。原因其實很簡單,因為人類懂得通過判斷圖案中的關鍵特徵,與現實物體進行匹配。那麼,如果是用 RNN 教機器學會畫畫,它是否能抽象出畫中的概念,並用同樣的方式作畫呢?穀歌大腦的 David Ha 近日撰文指出了他與 Douglas Eck 在研究 sketch-rnn 時的一些想法和觀點。
人們在傳遞思想、進行交流時有一個非常關鍵的要素,那就是懂得如何用抽象的視覺內容進行溝通。我們從小就培養孩子用畫筆描述事物的能力,畫出一個物體甚至表達自己的情緒。這些簡筆劃並不一定像照片一樣逼真,但誠然,它們傳遞出了人們如何重現與重構身邊事物的方法。
一些 sketch-rnn 創作的畫
在 David Ha 與 Douglas Eck 合作的論文《A Neural Representation of Sketch Drawings》中,研究者設計了一個名為「sketch-rnn」的生成式 RNN,它能夠用簡單的筆觸描繪出日常物體,系統旨在訓練機器如何像人類一樣提煉事物的抽象概念。
研究者在一個手繪 sketches 資料集中進行訓練,控制提筆落筆的時間及方向,進而創造一個具有可觀前景的應用:不僅能幫助藝術家迸發藝術靈感,還能教授學生繪畫的基本技巧。
鑒於採用神經網路之時,生成模型用於訓練的圖像過多,圖像以 2D 圖元的點陣圖來構建。而由於它所具有的高解析度,這些模型很容易會生成一些連續的圖像結構,比如會畫出三隻眼睛的貓,或是幾個頭的狗。
採用 128*128 ImageNet 資料集訓練的 GANs 模型,可能會產生像上圖這樣的詭異情況。
上圖為 Ian Goodfellow 在 NIPS 2016 Tutorial 展示 GANs 時所採用的圖片
而在谷歌大腦研究者的工作中,他們受人類繪畫的啟發,採用了更低維的、基於向量的方式。Sketch-rnn 基於 seq2seq(雷鋒網注:前段時間雷鋒網做過覆蓋和報導)的自動編碼框架,結合變分推斷並採用了超網路作為 RNN 的核心。
seq2seq 的作用在於訓練潛在向量(latent vector),即一個能夠將輸入序列編碼為浮點數向量的網路,以此在盡可能逼真地類比輸入序列的情況下,利用解碼器重構輸出序列。
實驗過程
在模型中,研究者故意往 latent vector 中加入了一些雜訊,而實驗結果呈現,模型在雜訊的干擾下不能非常準確地重現輸入的內容,但依然捕捉到了連同雜訊在內的關鍵資訊。解碼器將潛在向量進行處理,並產生了一個能構建簡筆劃的動態序列。研究者們輸入了幾個小貓的簡筆劃內容,而機器進行後重構產生的圖畫又是怎樣的呢?答案就是像下面這樣:
模型通過訓練人類所畫的小貓簡筆劃而重構的圖畫
值得強調的是,模型並不是簡單地照貓畫虎,面是學習了輸入特徵後,重新按照理解再畫圖的。也就是說,模型是學會了「畫貓的方式」後,根據自己的理解再作圖的。
比如,當研究者故意畫了一個三隻眼睛的貓作為輸入,模型基於對常識的認知,生成的依然是兩隻眼的貓。而為了拓寬系統認識物體的多樣性,研究者加入了迥然不同的內容,比如一把牙刷。從圖中可以發現,系統依然將牙刷抽象成了一隻貓的樣子(比如尖耳朵和觸鬚)。這一結果表明,神經網路已經學會了從輸入中抽象出貓的概念,也能根據潛在向量重構新的簡筆劃。
如果你還是將信將疑的話,下面這個小豬的例子或許可以說服你。八條腿的小豬和卡車「亂入」了訓練資料中,但在神經網路的理解中,小豬只有四條腿,而卡車看起來也具有小豬的樣子(比如有條小尾巴)。
為了瞭解為何潛在向量是如何抽象出動物的體征概念,研究者首先採用了兩幅不同的小豬畫(一幅只有頭,一幅是全身)作為不同的潛在向量。可以看到,潛在向量掌握了鼻子與頭的相對位置,並且在逐步的嘗試後形成了身體和腿的概念。
那麼,如果是不同的動物進行融合,如何整合它們的特徵?研究者分別輸入了一個貓頭和一個全身小豬的圖像,從左往右看可以發現,小貓開始長出尾巴和身子,最後貓的頭逐步被抽象化,最後變成一隻小豬。當然,反過來試驗的結果也是一樣的。
這個實驗意味著潛在向量確實對抽象的概念特徵進行了解碼,但我們是否能採用這些特徵擴大繪畫的靈活性,比如給小貓的頭加上身子?
在學習中,系統懂得了一些「公式」
研究者發現可將身體的部分進行分類,採用一些公式性的編碼讓系統理解內容,比如將不同的潛在向量加在「貓頭」上,就能得到想要的結果(貓頭+身子=全身貓)。這一舉措得以讓研究者更好地探究模型是如何組織它的潛在空間(latent space),以表達不同的概念的。
創造性應用
研究者不僅為實驗結果而振奮,也同時為 sketch-rnn 未來可能的應用方向而高興。比如圖案設計者們能夠用該網路生成非常多看起來相似,但實際上又有各自特色、能用於不同場景的設計圖案。
從框內圖案生成的相似但各具風格的小貓
而就像我們先前看到的一樣,畫小豬的模型如果加入了卡車的圖畫,也能夠畫出有著小豬特徵的卡車。研究者將這一結果拓展開來,認為這能夠給目標客戶提供抽象設計的靈感。
在向小貓模型中輸入了四把姿態各異的椅子圖案之後,模型學習了椅子的特徵,進而生成了各種具有椅子特徵的小貓,並產生了多種設計方案。研究者相信,將不同種類的事物交給神經網路,可能產生意想不到的交互和想像。
此外,研究者們還將 sketch-rnn 的模組解碼成單獨模型,讓系統嘗試在不完整圖畫的基礎上「腦補」內容。下圖是系統腦補出的一些靈感閃現的圖案。
甚至,同一個模型也能充分發揮機器的想像力。研究者用圓形和正方形的圖案讓系統自由作畫,進而有了火烈鳥、螞蟻、貓頭鷹、直升機等等結果。設計者在研究這些機器產生的圖案時在,也能夠設計出富有創造力的作品。
Sketch-rnn 能夠讓機器作為人類靈感的來源,也可以有非常多的應用。而機器與人類的交互與溝通,在未來的想像空間是無窮的。