OpenAI 首個研究成果 生成式模型系列

Neil Zhu,簡書ID Not_GOD,University AI 創(chuàng)始人 & Chief Scientist,致力于推進(jìn)世界人工智能化進(jìn)程。制定并實(shí)施 UAI 中長期增長戰(zhàn)略和目標(biāo),帶領(lǐng)團(tuán)隊(duì)快速成長為人工智能領(lǐng)域最專業(yè)的力量。
作為行業(yè)領(lǐng)導(dǎo)者,他和UAI一起在2014年創(chuàng)建了TASA(中國最早的人工智能社團(tuán)), DL Center(深度學(xué)習(xí)知識中心全球價值網(wǎng)絡(luò)),AI growth(行業(yè)智庫培訓(xùn))等,為中國的人工智能人才建設(shè)輸送了大量的血液和養(yǎng)分。此外,他還參與或者舉辦過各類國際性的人工智能峰會和活動,產(chǎn)生了巨大的影響力,書寫了60萬字的人工智能精品技術(shù)內(nèi)容,生產(chǎn)翻譯了全球第一本深度學(xué)習(xí)入門書《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》,生產(chǎn)的內(nèi)容被大量的專業(yè)垂直公眾號和媒體轉(zhuǎn)載與連載。曾經(jīng)受邀為國內(nèi)頂尖大學(xué)制定人工智能學(xué)習(xí)規(guī)劃和教授人工智能前沿課程,均受學(xué)生和老師好評。

OpenAI 現(xiàn)在第一個研究成果已經(jīng)公開:這四個項(xiàng)目 有著同樣的主題——那就是加強(qiáng)或者使用了生成式模型. 生成式模型是無監(jiān)督學(xué)習(xí) 的一個分支. 除了介紹我們的工作,本文將會教你關(guān)于生成式模型更多的內(nèi)容:這種模型是什么,為何重要,往哪里發(fā)展.

**我們 OpenAI 的核心志向是開發(fā)出算法和技術(shù)可以賦予計算機(jī)理解世界的能力. **

其實(shí)我們常會忽視自己對世界的認(rèn)知和理解:世界是一個 3D 的環(huán)境,對象可以移動,碰撞和交互;行走,對話和思考的人類;放牧、飛翔、奔跑或者咆哮;播放天氣,籃球賽或者 1970 年發(fā)生的事情的用語言表示的信息的顯示器.

這些海量信息就在我們的身邊,某種程度上觸手可及 —— 或者是在原子物理世界中,或者是比特的數(shù)字世界里. 而最為棘手的部分就是發(fā)展出可以分析和理解數(shù)據(jù)中潛藏的珍寶的模型和算法.

生成式模型是達(dá)到這個目標(biāo)的最為可能的方式之一. 要訓(xùn)練一個生成式模型,我們首先收集某個領(lǐng)域中的大量數(shù)據(jù)(如,數(shù)以百萬計的圖像、句子或者聲音等),然后訓(xùn)練一個可以生成像這些數(shù)據(jù)模型. 這個觀點(diǎn)的直覺其實(shí)是 Richard Feynman 名言的含義:

``What I cannot create, I do not understand.''

而完成這個任務(wù)的關(guān)鍵就是我們用神經(jīng)網(wǎng)絡(luò)作為生成式模型,這樣的模型參數(shù)的數(shù)量遠(yuǎn)小于我們用來訓(xùn)練的數(shù)據(jù)的量,迫使模型能夠發(fā)現(xiàn)和有效地內(nèi)化(internalize)數(shù)據(jù)的本質(zhì),從而才可以生成這些數(shù)據(jù).

生成式模型有很多短期(short-term)應(yīng)用. 但是從長遠(yuǎn)角度來看,他們有著自動學(xué)習(xí)數(shù)據(jù)集的自然特征的潛力,包含類型、維度或者其他特征.


生成圖像

讓我們看看一個具體的例子. 假設(shè)我們有某個大量圖像的集合,比如說 ImageNet 數(shù)據(jù)集中 120 萬幅圖像(但是需要記住這也可以是互聯(lián)網(wǎng)或者機(jī)器人中獲得的大量的圖像或者視頻的集合). 如果我們將每幅圖重置為 256 的寬高的圖像(典型的處理方式),我們的數(shù)據(jù)集就是一個 1200000*256*256*3(約 200 GB)的像素塊. 這里是該數(shù)據(jù)集的一些樣例圖像:

這些圖像是我們視覺世界呈現(xiàn)的樣子,我們將它們成為“從真實(shí)數(shù)據(jù)分布中采樣的樣本”. 現(xiàn)在我們構(gòu)造生成式模型,將他們訓(xùn)練成可以生成如同這些樣本圖的模型. 這里的生成式模型可以是一個大的神經(jīng)網(wǎng)絡(luò)可以輸出圖像,這些圖像稱為“來自模型的樣本”.


DCGAN

最近的一個模型是來自 Radford 等人的 DCGAN network (下圖所示). 這個網(wǎng)絡(luò)以 100 個從一個高斯分布中采樣的隨機(jī)數(shù)為輸入(這些數(shù)字我們稱為代碼(code),或者隱含變量,紅色文字所示),輸出了一個圖像(在這里是 64*64*3 的右部的圖像,綠色文字所示). 當(dāng)代碼增量式變化時,生成出的圖像也隨之變化——這說明模型已經(jīng)學(xué)到了可以描述世界是什么樣的特征,而不是僅僅是記住了一些樣本.

網(wǎng)絡(luò)(黃色部分)由標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò)如去卷積層(卷積層的的逆)全連接層 等:

DCGAN 使用隨機(jī)權(quán)重進(jìn)行初始化,所以隨機(jī)代碼輸入到網(wǎng)絡(luò)中會生成一個完全隨機(jī)的圖像. 但是,你可以想象,這個網(wǎng)絡(luò)有數(shù)百萬的參數(shù)可以調(diào)整,目標(biāo)就是找到一個參數(shù)的設(shè)置,可以使得從隨機(jī)代碼中生成出的樣本看起來像訓(xùn)練數(shù)據(jù). 或者換言之,我們想要模型分布匹配在圖像空間中的真實(shí)的數(shù)據(jù)分布.


訓(xùn)練一個生成式模型

假設(shè)我們使用新初始化網(wǎng)絡(luò)生成 200 幅圖,每次從一個不同的隨機(jī)代碼開始. 問題是:我們?nèi)绾握{(diào)整網(wǎng)絡(luò)的參數(shù)來鼓勵他產(chǎn)生更加可信的新的圖像?注意到我們不是在一個簡單的監(jiān)督學(xué)習(xí)場景下,也沒有對產(chǎn)生的 200 幅圖像設(shè)定任何顯式的預(yù)計目標(biāo);我們僅僅希望他們看起來真實(shí).

處理這個問題的巧妙的方式是根據(jù)生成式對抗網(wǎng)絡(luò) Adversarial Network (GAN)方法. 這里我們引入第二個判別器網(wǎng)絡(luò)(通常是一個標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò)). 例如,我們可以將 200 生成出的圖像和 200 幅真實(shí)圖像作為判別器的輸入,訓(xùn)練成為一個標(biāo)準(zhǔn)的分類器來區(qū)分這兩個來源的圖像. 除此之外——我們同樣可以反向傳播通過判別器和生成器來找出如何改變生成器的參數(shù)來讓判別器對其 200 樣本微小地困惑. 這兩個網(wǎng)絡(luò)就產(chǎn)生了一種對抗:判別器試著從偽造圖像中區(qū)分出真實(shí)圖像而產(chǎn)生器則嘗試創(chuàng)造可以讓判別器覺得它們真實(shí)的圖像. 最后,生成器網(wǎng)絡(luò)輸出讓判別器無法區(qū)分的圖像.

現(xiàn)在有幾種其他的匹配這些分布的方式. 但在我們討論這些分布前,下圖給出兩個動畫展示了從生成式模型采樣的過程,以給于你們一個視覺上的關(guān)于訓(xùn)練過程感受. 在兩個例子中,采樣出的樣本開始時有噪聲和混亂的,經(jīng)過了一段時間收斂到產(chǎn)生可信的圖像統(tǒng)計:

[圖片上傳失敗...(image-1d06d0-1532486507673)] learning to generate images (log time)](http://upload-images.jianshu.io/upload_images/42741-984427184946878b.gif?imageMogr2/auto-orient/strip)

[圖片上傳失敗...(image-e735ab-1532486507673)] learning to generate images (linear time)](http://upload-images.jianshu.io/upload_images/42741-dbdce2760a51a40e.gif?imageMogr2/auto-orient/strip)

這令人興奮——這些神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)視覺世界樣子!這些模型通常有僅僅 10 億參數(shù),所以一個在 ImageNet 上訓(xùn)練的網(wǎng)絡(luò)(粗略地)將 200GB 的像素數(shù)據(jù)壓縮到 100MB 的權(quán)重上. 這種需求讓模型發(fā)現(xiàn)數(shù)據(jù)最主要的特征:例如,模型很可能學(xué)習(xí)靠近的像素更可能擁有相同的顏色,或者世界是由水平和豎直邊構(gòu)成,或者不同顏色的色團(tuán)等等. 最終,模型可能會發(fā)現(xiàn)很多更加復(fù)雜的規(guī)律:圖像存在某個類型的背景、對象、紋理,會出現(xiàn)在某種可能的排列,或者他們按照某種方式在視頻中隨著時間變換,等等.


更加一般的形式

數(shù)學(xué)上看,我們考慮數(shù)據(jù)集 x_1,…,x_n 是從一個真實(shí)數(shù)據(jù)分布 p(x). 在下面的圖像,藍(lán)色區(qū)域展示了一部分圖像空間,以高概率(超過某閾值)包含真實(shí)圖像,而黑色點(diǎn)表示我們的數(shù)據(jù)點(diǎn)(每個是數(shù)據(jù)集中圖像). 現(xiàn)在我們的模型同樣刻畫了一個分布 \hat{p}_\theta(x) (綠色的),由一個單位 Gaussian 分布(紅色)獲得的點(diǎn),將他們通過一個(確定型)神經(jīng)網(wǎng)絡(luò)映射進(jìn)行定義——得到了生成式模型(黃色).

我們的網(wǎng)絡(luò)是參數(shù)為 \theta 的函數(shù),調(diào)整這些參數(shù)就能改變生成出的圖像分布. 我們的目標(biāo)是找到參數(shù) \theta 可以產(chǎn)生一個較好匹配真實(shí)數(shù)據(jù)分布的分布(例如,兩個分布 KL 散度很小). 因此,你可以想象綠色分布從隨機(jī)開始,然后訓(xùn)練過程迭代式改變參數(shù) \theta 來拉長和壓縮自己使得更匹配藍(lán)色分布.


生成式模型三個方法

大多數(shù)生成式模型有這個基礎(chǔ)的設(shè)置,但是細(xì)節(jié)不同. 這里有三個流行的生成式模型方法的例子可以讓你看看差異:

  • Generative Adversarial Networks (GANs) 這個我們在上面討論過了,給出一個訓(xùn)練過程作為兩個不同的網(wǎng)絡(luò)的博弈:一個生成器網(wǎng)絡(luò)(如上)和一個判別器網(wǎng)絡(luò)嘗試分類樣本為來自真實(shí)分布 p(x) 和模型分布 \hat{p}(x). 每次判別器注意到兩個分布之間的差異生成器微微調(diào)整了自己的參數(shù),直到最后(理論上)生成器準(zhǔn)確地重新制造真實(shí)數(shù)據(jù)分布,判別器隨機(jī)猜測并不能找到差異.
  • Variational Autoencoders (VAEs) 讓我們可以在概率圖模型框架下形式化這個問題,我們會最大化數(shù)據(jù)的對數(shù)似然的下界.
  • PixelRNNAutoregressive 模型訓(xùn)練一個建模了給定前面像素下每個獨(dú)立像素條件分布的網(wǎng)絡(luò)(從左到右,從上到下). 這類似于將圖像的像素輸入到一個 char-rnn,但是 RNN 水平和垂直遍歷圖像,而不是 1D 的字符序列.

所有這些方法有各自的優(yōu)缺點(diǎn). 例如,變分自編碼器可以執(zhí)行學(xué)習(xí)和在復(fù)雜的包含隱含變量的概率圖模型上進(jìn)行高效地貝葉斯推斷(如 DRAW 或者 Attend Infer Repeat 近期相對復(fù)雜的模型). 但是,他們生成的樣本會有些模糊不清. GANs 目前生成了清楚的圖像,但是因?yàn)椴环€(wěn)定的訓(xùn)練動態(tài)性很難優(yōu)化. PixelRNNs 有一個非常簡單和穩(wěn)定的訓(xùn)練過程(softmax loss)并且當(dāng)前給出了最優(yōu)的對數(shù)似然(即,產(chǎn)生出數(shù)據(jù)的可信程度). 然而,他們在采樣時相對低效而且沒有給圖像以簡單的低維代碼. 所有這些模型是研究的活躍的領(lǐng)域,我們迫切想要知道他們未來的發(fā)展!


近期貢獻(xiàn)

我們對 OpenAI 做出的生成式模型非常興奮,剛剛發(fā)布了四個對近期工作項(xiàng)目改進(jìn)工作. 對每個貢獻(xiàn),我們同樣發(fā)布了技術(shù)報告和源代碼.

Improving GANs(code). 首先,正如上面所說 GANs 是一個非常有前景的生成式模型,因?yàn)椴幌衿渌椒ǎ麄儺a(chǎn)生了非常干凈和清晰圖像,并學(xué)習(xí)可以包含關(guān)于這些紋理有價值的信息的代碼. 然而,GANs 被建模成兩個網(wǎng)絡(luò)之間的博弈,保持他們的平衡很重要(且有技巧):例如,他們可能在解之間震蕩或者生成器有奔潰的傾向. 在個工作中,Tim Salimans, Ian Goodfellow, Wojciech Zaremba 和其他同事已經(jīng)引進(jìn)了一些新的技術(shù)讓 GAN 訓(xùn)練更加穩(wěn)定. 這些技術(shù)讓我們能夠規(guī)模化 GANs 并獲得很好的 128*128 ImageNet 樣本:

Generated from DRAW model
Generated from a VAE trained with IAF

我們CIFAR-10 的樣本看起來也是非常清晰的——Amazon Mechanical Turk workers可以從真實(shí)數(shù)據(jù)中以錯誤率 21.3% 區(qū)分這些樣本(50% 的錯誤率代表隨機(jī)猜測):

Real images (CIFAR-10)
Generated images

除了生成更好的圖像外,我們引入了一種半監(jiān)督學(xué)習(xí)的方法包括判別器產(chǎn)生額外輸出來表示輸入的標(biāo)記. 這個方法可以讓我們在 MNIST SVHN 和 CIFAR-10 上獲得當(dāng)前最佳結(jié)果,而不需要過多的標(biāo)記樣本. 在 MNIST 中,我們僅僅對每個類有 10 個標(biāo)記樣本并使用了一個全連接的神經(jīng)網(wǎng)絡(luò)就達(dá)到了 99.14% 的準(zhǔn)確率——這個結(jié)果接近已知最優(yōu)的使用了 6 萬幅標(biāo)記樣本的監(jiān)督學(xué)習(xí)方法的結(jié)果. 由于標(biāo)記樣本在應(yīng)用中很難輕易獲取,所以上述方法是很有前景的.

生成式對抗網(wǎng)絡(luò)是相對新的模型(兩年前提出來的)我們期望在未來出現(xiàn)更多的提升訓(xùn)練時模型的穩(wěn)定性的研究成果出現(xiàn).

Improving VAEs (code) 在這項(xiàng)工作中,Durk Kingma 和 Tim Salimans 引入了一個靈活并且計算規(guī)模化方法來提升變分推斷的準(zhǔn)確率. 尤其是,大多數(shù) VAE 目前訓(xùn)練采用的暴力的近似后驗(yàn)分布,其中每個隱含變量是獨(dú)立的. 最近的擴(kuò)展工作 已經(jīng)通過將每個隱含變量定義在其之前的變量的鏈上的條件分布解決了這個問題,但由于引入的序列依賴仍沒有達(dá)到計算高效. 而核心貢獻(xiàn)就是稱為 逆自回歸流 inverse autoregressive flow (IAF) 的方法,該方法允許我們并行化豐富的近似后驗(yàn)分布計算,讓這些后驗(yàn)可能任意的靈活計算.

我們在下面的圖中展示了一些 32*32 的圖像樣本. 前一幅是來自 DRAW 模型的早期樣本(初級 VAE 樣本看起來更差和模糊). DRAW 模型是一年前發(fā)表的,這里也可以感受到訓(xùn)練生成式模型的進(jìn)展迅猛.

Generated from DRAW model
Generated from a VAE trained with IAF

InfoGAN (code). Peter Chen 和同時給出了 InfoGAN —— 一個對 GAN 的擴(kuò)展,學(xué)習(xí)圖像的去糾纏的和可解釋的表示. 正常的 GAN 通過用模型重新產(chǎn)生數(shù)據(jù)分布達(dá)到這個目的,但是代碼空間的 layout 和組織是 underspecified —— 存在很多可能的解可以將單位 Gaussian 映射到圖像上,最終獲得的可能是非常復(fù)雜和高度糾纏的. InfoGAN 對該空間引入了額外的結(jié)構(gòu)通過增加一個新的包含最大化表示向量和觀測值的小的子集的互信息目標(biāo)函數(shù). 這個方法給出相當(dāng)出色的結(jié)果. 例如,在 3D 人臉圖像中,我們變動代碼的一個連續(xù)的維度,保持其他維度不變. 很明顯從 5 個提供的例子中(每一行),代碼的結(jié)果維度刻畫了可解釋的維度,并且模型在沒有告訴這些重要特征存在的情形下可能已經(jīng)理解到是存在攝像頭角度、面部變化等等:

我們同樣注意到良好的,去糾纏的表示之前已經(jīng)有了這樣的研究(如 Kulkarni 等人的DC-IGN),但這些方法依賴于額外的監(jiān)督信息,而現(xiàn)在的這個方法則是完全非監(jiān)督的.


下兩個近期項(xiàng)目是強(qiáng)化學(xué)習(xí)場景下(另一個 OpenAI 聚焦的領(lǐng)域),但是他們都有生成式模型的部分.

Curiosity-driven Exploration in Deep Reinforcement Learning via Bayesian Neural Networks (code). 在高維度連續(xù)空間中進(jìn)行高效的探索是當(dāng)前強(qiáng)化學(xué)習(xí)領(lǐng)域未解決挑戰(zhàn)之一. 沒有有效的探索方法,agent 只能到處亂闖直到碰巧遇到獎勵. 這在簡單的玩具例子中就夠了,但是若對高維度行動空間(如在機(jī)器人中)這些算法是完全不夠的. 這篇文章中,Rein Houthooft 和同事給出了 VIME,一個實(shí)用的實(shí)用生成式模型的不確定性進(jìn)行探索的方法. VIME 讓 agent 本身驅(qū)動;它主動地尋求意外的狀態(tài)-行動. 我們說明了 VIME 可以提高一系列 策略搜索 方法,并在更多稀疏獎勵的實(shí)際任務(wù)(比如agent 需要在無指導(dǎo)的情形下學(xué)習(xí)原始行動的場景)取得了顯著改進(jìn).

Policy trained with VIME
Policy trained with naive exploration

最后,我們介紹一下第五個項(xiàng)目:Generative Adversarial Imitation Learning(code),其中 Jonathan Ho 和同事們給出了一個新的模仿學(xué)習(xí)(imitation learning)的方法. Jonathan Ho 作為暑期實(shí)習(xí)生加入 OpenAI 的. 他在 Stanford 完成了這個工作的大部分,但是我們這里提出來,是因?yàn)閮?nèi)容的相關(guān)性和結(jié)合 GAN 到 RL 上的創(chuàng)造性. 標(biāo)準(zhǔn)的強(qiáng)化學(xué)習(xí)場景通常需要我們設(shè)計一個獎勵函數(shù)刻畫了預(yù)期的 agent 的行為. 但是,實(shí)際情況是,有時候這樣會引入昂貴的試錯過程以正確地獲得細(xì)節(jié). 相比較而言,模仿學(xué)習(xí)中,agent 從樣本展示中學(xué)習(xí)(例如機(jī)器人的遠(yuǎn)程控制),消除了對設(shè)計獎勵函數(shù)的依賴.

gail-humanoid.gif

gail-ant.gif

流行的模仿方法包含兩個階段的流程:首先學(xué)習(xí)獎勵函數(shù),然后依照獎勵函數(shù)執(zhí)行 RL. 這樣的過程非常緩慢,也由于這種間接性方法,對結(jié)果策略的質(zhì)量很難有保證. 這項(xiàng)工作展示了如何通過 GAN直接從數(shù)據(jù)中抽取策略. 所以,這個方法在 OpenAI Gym 環(huán)境(如 AntHumanoid)中可以用來從專家表現(xiàn)中進(jìn)行策略學(xué)習(xí).


邁向未來

生成式模型是快速發(fā)展的研究領(lǐng)域. 在我們持續(xù)提升這些模型,并規(guī)模化訓(xùn)練和數(shù)據(jù)集,我們可以期待最終產(chǎn)生的樣本已經(jīng)能夠完全描述可信的圖像或者視頻. 這個可能在很多應(yīng)用中有用,如 按需生成藝術(shù)、或者 Photoshop++ 命令如“讓我的笑容更寬”. 額外的應(yīng)有包含 圖像去噪, inpainting, 超分辨率,結(jié)構(gòu)預(yù)測, 在強(qiáng)化學(xué)習(xí)中的探索 和標(biāo)記數(shù)據(jù)昂貴的神經(jīng)網(wǎng)絡(luò)預(yù)訓(xùn)練

但是,這項(xiàng)工作更深的啟示是,在訓(xùn)練生成式模型的過程中,我們最終會賦予計算機(jī)對世界和世界構(gòu)成的理解.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容