機器透過互相砥礪來學會如何創造──對抗式學習(下)
近年來,隨著人工智慧的發展,機器的能力越來越強,相關技術已經進入我們的生活中,例如當我們上傳一張照片到臉書時,臉書可以精確地找出照片中的人臉,而iPhone甚至可以知道一張臉是不是他的主人。然而,今日機器較擅長的是從資料中歸納找出通則,例如臉書知道人臉有那些共同的特徵,所以可以偵測出人臉,但是在能夠歸納後,機器能不能進一步創造呢?例如機器既然知道人臉的特徵,能不能進一步畫出人臉來呢?讓機器具備創作的能力是近年備受重視的研究領域,今天我們要來談一談其中備受矚目的技術── 對抗式學習(adversarial learning)。
撰文/李宏毅(國立臺灣大學電機工程系副教授)
轉載自《科學月刊》2018年4月第580期
(續前文)
●可以接收指令的生成者
在前文中我們僅要生成者畫一些二次元人物頭像,畫什麼都好,但事實上我們還可以讓生成者根據輸入的指令產生對應的創作。假設我們希望可以輸入文字(例如「藍髮紅眼」),機器根據輸入的文字畫出擁有對應髮色和瞳色的角色,此時生成者的工作是讀入文字,產生對應圖片,而鑑別者要做兩件事,一方面鑑別者要跟前文一樣看生成者產生的圖片和漫畫的差異,同時,人類還要提供給鑑別者人物頭像和其對應的特徵文字敘述(紅髮、藍眼等),讓鑑別者能夠看生成者輸入的文字和其繪出的圖片是否匹配,避免輸入「藍眼睛」生成者卻畫出綠眼睛的角色。圖二是訓練過後實際上生成者按照指令產生的人物頭像,生成者幾乎可以完全正確按照指示,創造出對應的人物頭像,不過機器還是有失誤的時候,例如輸入指令「藍髮紅眼」時,圖二右上角的人物一隻眼睛是紅的另一隻眼睛卻是藍的,顯然生成者誤以為只要有一隻眼睛是紅的就算是滿足要求,這是機器才會犯的錯誤。
除了根據輸入文字繪製二次元人物外,上述按照指令進行創作的技術還有很多應用,例如:輸入手繪漫畫草稿,生成者可以自動上色; 我們已經看到了智能修圖軟體的雛形,你可以在網路上找到相關的展示;輸入一張照片,生成者產生影片,讓照片中的人事物動起來(就像是哈利波特的魔法世界中,相片中的人物是會動的)。
以上都是影像相關的應用,對抗式學習的應用不只如此,輸入文字,讓生成者產生回應的語句, 我們就有了聊天機器人;輸入一段有雜訊的語音,生成者還原回乾淨的語音,就可以增進語音助理的語音辨識正確率。
●再加入還原者
我們現在設想另外一個任務,我們希望給生成者一張風景照,生成者把風景照以梵谷畫風重新繪製,人類可以輕易蒐集到一堆梵谷的圖給鑑別者看,由鑑別者找出梵谷圖畫的特徵,再把學到的特徵教給生成者,讓生成者學到產生有梵谷風格的圖,但生成者產生的圖可能會跟輸入沒有任何關連性,例如輸入是一張風景畫,但輸出可能是人物自畫像(雖然這張自畫像可能很像梵谷畫的),這種狀況不是我們所期待的。如果今天我們可以給鑑別者一些一般風景照和對應的梵谷作品,鑑別者就可以去看生成者輸入的風景照和輸出的梵谷風格作品是否有正確對應關係,進而教導生成者,但問題是在一般情況下,給一張風景畫(例如:日月潭),世界上根本找不到一張對應的梵谷作品(梵谷當然沒畫過日月潭),怎麼辦呢?
這時我們就需要新的技術,這個技術叫做循環生成式對抗網路(Cycle GAN),循環生成式對抗網路的基本原理請見圖三。在循環生成式對抗網路中我們需要引入第三個角色──還原者(reconstructor),還原者的工作是把生成者的輸出還原回輸入的原圖,生成者和還原者是合作的關係,生成者必須要產生還原者可以還原的圖片,如果生成者的輸入是海景、輸出很無厘頭地是自畫像,還原者只看到自畫像,根本不可能猜出原來輸入的是海景,就會無法還原,生成者要幫助還原者還原,那就不會輸出和輸入完全無關的東西。
用上述技術我們可以把筆者的人臉作各種轉換,結果如圖四所示,讓鑑別者看女性照片,鑑別者會找出女性共同特徵,使得生成者的輸出會把照片中的人物女性化(但又因為還原者的存在,生成者並不會輸出完全不相干的女性,而是修改照片中的人物),根據圖四的結果,顯然鑑別者學到一些對女性的刻板印象,它認為化妝和長髮是女性的特徵,所以圖四第二列上面的兩張圖被加上腮紅、下面的兩張圖變成長髮。用同樣的技術,給鑑別者看老人的照片,就可以讓生成者學會把輸入的照片中的人物加上皺紋;給鑑別者看一堆金髮人物的照片,就可以把人物變金髮。
以上講的是影像相關的技術,類似技術也被用在文字上,例如給鑑別者一堆正面的句子,我們就可以自動學出一個生成者,可以將輸入語句轉為正面語句,圖五是生成者實際學出來的成果,這個技術有什麼用呢?如果你的主管講話刻薄,你就可以在耳機中裝這個系統,你的人生就會過得比較愉快。這個技術也被用在翻譯上,傳統的翻譯系統,需要人教機器說「Good morning」的中文翻譯是「早安」、「Good afternoon」的中文翻譯是「午安」等,但是現在有機會只要一堆A語言的語句、一堆B語言的語句,不需要人去標註兩種語言間的對應關係,用類似循環式對抗的技術,翻譯居然也可以達成。相關的技術也可以用在語音上,只要蒐集一堆男聲,鑑別者就可以找出男聲的特徵,讓生成者輸入一段女聲後輸出一段內容一樣的男聲(因為還原者的存在,會讓輸入和輸出所講的內容相同,只是聲音改變),同理,只要蒐集一堆女聲,透過鑑別者和還原者,就可以讓生成者學會輸入一段男聲轉成內容一樣的女聲,這樣就可以做出變聲器了。
●增強式學習與對抗式學習
自從有了AlphaGo 以後,街頭巷尾都在討論增強式學習(reinforcement learning),其實增強式學習和對抗式學習是非常有關係的。在增強式學習中,機器要和環境互動,互動過程會得到回饋(reward),機器會自行學習如何得到最大回饋,以圍棋為例,環境就是機器的對手(可能是真人也可能是另一台機器),透過和對手不斷地對弈,機器會自行學習如何獲勝。增強式學習和對抗式學習在演算法上其實有很多類似之處,增強式學習是機器和環境互動,而對抗式學習是生成者和鑑別者互動,不同之處在於在增強式學習的演算法中,一般假設環境不會隨時間改變,但對抗式學習更複雜,生成者和鑑別者兩者皆會持續進步。雖然現今在研究上增強式學習和對抗式學習仍然是兩個社群,但是因為有很多概念是共通的,所以未來這兩個領域的各種訓練技巧可以互通有無。
●結語
對抗式學習發展迅速,新技術不斷推陳出新,有興趣深入研究的讀者可以在網路上找到「生成對抗網路動物園」(GAN Zoo),在筆者寫本篇文章的期間(2018 年1 月),動物園中已經蒐錄了至少250 種以上不同的生成對抗網路變型,對抗式學習顯然是下一個人工智慧研究的熱點,為人工智慧帶來新的想像。(完)
(本文由教育部補助「AI報報─AI科普推廣計畫」取得網路轉載授權)