GAN之父NIPS 2016演讲现场直击:全方位解读生成对抗网络的原理及未来(附PPT)
機器之心原創
作者:機器之心分析師加號、吳攀
當地時間 12 月 5 日,機器學習和計算神經科學的國際頂級會議第 30 屆神經信息處理系統大會(NIPS 2016)在西班牙巴塞羅那開幕。OpenAI 研究科學家 Ian Goodfellow 在會上作為主題為《生成對抗網絡(Generative Adversarial Networks)》的演講,機器之心分析師「加號」也到達了現場,并將演講內容進行一番整理和解讀之后在此進行了分享。(注:為了讓復雜的概念更加「新手友好」,本篇所有備注皆為機器之心分析師「加號」自行補全,不代表 Ian Goodfellow 本人的立場與觀點。)點擊閱讀原文可下載 PPT。
GAN
Ian Goodfellow 在 NIPS 2016 上的 tutorial 演講依舊是聊他的代表作生成對抗網絡(GAN/Generative Adversarial Networks),畢竟 Ian 就是「對抗生成網絡之父」。這兩年,他每到大會就會講 GAN,并且每次都會有一些新的干貨,當然這次也不例外。
可以說,這幾年在機器學習領域最亮最火最耀眼的新思想就是生成對抗網絡了。這一思想不光催生了很多篇理論論文,也帶來了層出不窮的實際應用。Yann LeCun 本人也曾毫不吝嗇地稱贊過:這是這幾年最棒的想法!
大家都知道,LeCun 是無監督學習的頭號號召者。生成對抗網絡這種靠數據和模型自己的內部對抗來實現無監督學習的模型正好給人工智能的自我學習能力帶來了一線曙光!
大神 Ian Goodfellow(這姓本身就很學術)是神經網絡奠基人 Yoshua Bengio 的學生(跟相聲一樣,學術界也講究個師承和門派。收不收學費就因人而異了。學校的發票應該還是有的)。繼承了 Bengio 的步伐,Ian 在 2014 年的一篇 GAN 論文也是震驚世界,被認為是帶領人類走向機器學習下一個紀元的開創性方法。Ian 在谷歌帶完這一波節奏之后,便加入了「硅谷鋼鐵俠」Elon Musk 的 OpenAI。
OpenAI 這家酷炫的研究所是非營利的,主要目標就是做深度的人工智能研究來為人類造福,或防止人工智能失控而滅絕人類。當然,這只是個口號,本質上其實就是有錢人撒錢養一幫學界大神來提升自己在圈內的逼格。當然,他們也不計利潤和 IP 地開源了大量代碼和框架,這也是造福工業界和學術界的好事。GAN 作為 OpenAI 的首個高逼格成果,也在這兩年得到了長足的優化和拓展。
生成模型的概念大家應該都很熟悉,大概有兩種玩法:
-
密度(概率)估計:就是說在不了解事件概率分布的情況下,先假設隨機分布,然后通過數據觀測來確定真正的概率密度是怎樣的。
-
樣本生成:這個就更好理解了,就是手上有一把訓練樣本數據,通過訓練后的模型來生成類似的「樣本」。
這堂 tutorial 主要就是講生成對抗網絡以及一些技巧與前沿觀點。
為什么要學習生成模型?
我們為什么需要生成模型?
-
這是一種對我們處理高維數據和復雜概率分布的能力很好的檢測;
-
也可以為了未來的規劃或模擬型強化學習做好理論準備(所謂的 model-free RL);
-
當然,更多的情況是,我們會面臨缺乏數據的情況,我們可以通過生成模型來補足。比如,用在半監督學習中;
-
可以輸出多模(multimodal)結果;
-
以及很多的一些現實的需要生成模型的問題(比如,看到一個美女的背影,猜她正面是否會讓你失望……)
接下來的幾頁幻燈片給出了一些實際的應用,比如預測影片的下一幀、去除馬賽克、神筆馬良等等……
生成模型是如何工作的?GAN 跟其它模型比較有哪些優勢?
該怎么創造生成模型呢?這涉及到概率領域一個方法:最大似然估計。
大家都知道,一組相互獨立事件的同時發生概率是:
而現實生活中,我們可能并不知道每個 P(概率分布模型)到底是什么,我們已知的是我們可以觀測到的源數據。所以,最大似然估計就是這種給定了觀察數據以評估模型參數(也就是估計出分布模型應該是怎樣的)的方法。
比如,如果校長想調查全校同學的成績,假如這個校長很懶但是統計學得很好的話,他會選擇通過采樣來估計一個靠譜的成績分布。
首先,假設我們獨立采樣 X1,X2,......Xn 共 n 個同學的成績,并且是我們使用的是 f 模型,只是它的參數θ未知,那么這個方程可表示為:
此刻,我們已知的是 X1......Xn,未知的是θ,那么我們的似然就可以定義為:
兩邊取對數,得到:
設
log L(θ|x1...xn) 稱為對數似然,稱為平均對數似然。那么最大的平均對數似然就是:
這就是幻燈片中那個公式的含義。
接下來幾頁幻燈片介紹了整個生成模型的大家族。
大家都同根于最大似然玩法,但是有著顯隱密度的區分。大多數你們聽過的強大的生成模型都需要用到馬爾可夫鏈,而 GAN 是目前唯一一種直接從數據觀測的一步到位的生成模型。(后面會講具體原因。)
比如 Fully Visible Belief Nets 就用到了典型的顯性密度鏈:
P(X1) 類似于一個先驗概率,然后每往后一個數據的概率都是基于前面的已知數據的條件概率。最終得到整個模型的分布。但它的缺點也很明顯:對于 N 個數據點,你得跑 N 次。也就是,這是個 O(n) 的算法。
同理,還有其它各種算法,但那些不是本篇重點,在此不做贅述。
與它們不同的是,GAN 的特點是:
-
使用了 latent code(用以表達 latent dimension、控制數據隱含關系等等);
-
數據會逐漸統一;
-
不需要馬爾可夫鏈;
-
被認為可以生成最好的樣本(當然,ian 本人也說,這事兒沒法衡量什么是「好」或「不好」)。
GAN是如何工作的?
要理解生成對抗模型(GAN),首先要知道生成對抗模型拆開來是兩個東西:一個是判別模型,一個是生成模型。
簡單打個比方就是:兩個人比賽,看是 A 的矛厲害,還是 B 的盾厲害。比如,我們有一些真實數據,同時也有一把亂七八糟的假數據。A 拼命地把隨手拿過來的假數據模仿成真實數據,并揉進真實數據里。B 則拼命地想把真實數據和假數據區分開。
這里,A 就是一個生成模型,類似于賣假貨的,一個勁兒地學習如何騙過 B。而 B 則是一個判別模型,類似于警察叔叔,一個勁兒地學習如何分辨出 A 的騙人技巧。
如此這般,隨著 B 的鑒別技巧的越來越牛,A 的騙人技巧也是越來越純熟。
一個造假一流的 A,就是我們想要的生成模型!
這里就是我們的生成模型了。如圖所示,它把噪聲數據 z(也就是我們說的假數據)通過生成模型 G,偽裝成了真實數據 x。(當然,因為 GAN 依舊是一個神經網絡,你的生成模型需要是可微的(differentiable))
訓練的過程也非常直觀,你可以選擇任何類 SGD 的方法(因為 A 和 B 兩個競爭者都是可微的網絡)。并且你要同時訓練兩組數據:一組真實的訓練數據和一組由騙子 A 生成的數據。當然,你也可以一組訓練每跑一次時,另一組則跑 K 次,這樣可以防止其中一個跟不上節奏。
同樣,既然要用類 SGD 優化,我們就需要一個目標函數(objective function)來判斷和監視學習的成果。在這里,J(D) 代表判別網絡(也就是警察 B)的目標函數——一個交叉熵(cross entropy)函數。其中左邊部分表示 D 判斷出 x 是真 x 的情況,右邊部分則表示 D 判別出的由生成網絡 G(也就是騙子)把噪音數據 z 給偽造出來的情況。
這樣,同理,J(G) 就是代表生成網絡的目標函數,它的目的是跟 D 反著干,所以前面加了個負號(類似于一個 Jensen-Shannon(JS)距離的表達式)。
這其實就是我們熟悉的最小最大博弈(minimax game):兩個人的零和博弈,一個想最大,另一個想最小。那么,我們要找的均衡點(也就是納什均衡)就是 J(D) 的鞍點(saddle point)。
對這個過程的更直觀解釋是這樣的:
如圖所示,我們手上有真實數據(黑色點,data)和模型生成的偽數據(綠色線,model distribution,是由我們的 z 映射過去的)(畫成波峰的形式是因為它們都代表著各自的分布,其中縱軸是分布,橫軸是我們的 x)。而我們要學習的 D 就是那條藍色的點線,這條線的目的是把融在一起的 data 和 model 分布給區分開。寫成公式就是 data 和 model 分布相加做分母,分子則是真實的 data 分布。
我們最終要達到的效果是:D 無限接近于常數 1/2。換句話說就是要 Pmodel 和 Pdata 無限相似。這個時候,我們的 D 分布再也沒法分辨出真偽數據的區別了。這時候,我們就可以說我們訓練出了一個爐火純青的造假者(生成模型)。
于是,最終我們得到的應該是如下圖的結果:
藍色斷點線是一條常數線(1/2),黑色與綠色完美重合了。
但是,這也是有問題的:我們的生成模型跟源數據擬合之后就沒法再繼續學習了(因為常數線 y = 1/2 求導永遠為 0)。
為了解決這個問題,除了把兩者對抗做成最小最大博弈,還可以把它寫成非飽和(Non-Saturating)博弈:
也就是說用 G 自己的偽裝成功率來表示自己的目標函數(不再是直接拿 J(D) 的負數)。這樣的話,我們的均衡就不再是由損失(loss)決定的了。J(D) 跟 J(G) 沒有簡單粗暴的相互綁定,就算在 D 完美了以后,G 還可以繼續被優化。
在應用上,這套 GAN 理論最火的構架是 DCGAN(深度卷積生成對抗網絡/Deep Convolutional Generative Adversarial Network)。熟悉卷積神經網絡(CNN)的同學對此應該不會陌生,這其實就是一個反向的 CNN。
卷積神經網絡的原理是用一個叫做 convolutinoal filter(卷積過濾器,類似于濾鏡)的東西把圖片過濾(轉化)成各種樣式(就好像美圖軟件里面的濾鏡效果)。很多這樣的濾鏡就可以把圖片變成很多種樣式。我們假設這些樣式是原圖片各種不同的特征表達(比如,黑白濾鏡可以把圖片變黑白,讓你可以看出更多彩色世界里關注不到的重點;邊緣虛化濾鏡是把圖片虛化,你也許又能看到不同的端倪。一層層這樣跑下去,你就會得到原圖片的各種非常詳盡的特征表達。注意:這個濾鏡也不是人選的,而是被慢慢學習到的,不用你操心)。
相反,DCGAN目的是創造圖片,其實就類似于把一組特征值慢慢恢復成一張圖片。
所以兩者的比較就是:在每一個濾鏡層,CNN是把大圖片的重要特征提取出來,一步一步地減小圖片尺寸。而DCGAN是把小圖片(小數組)的特征放大,并排列成新圖片。這里,作為DCGAN的輸入的最初的那組小數據就是我們剛剛講的噪聲數據。
下面幾頁幻燈片給出了一些案例效果。
因為圖片本身就是個 RGB 的矩陣,所以我們甚至可以通過向量加減來得到一些有趣的運算結果:
戴墨鏡的男人 - 不戴墨鏡的男人 + 不戴墨鏡的女人 = 戴墨鏡的女人
熟悉 NLP 的同學可能發現了,這就很像 word2vec 里面的:king - man + woman = queen。做個向量/矩陣加減并不難,難的是把加減后得到的向量/矩陣還原成「圖義」上代表的圖片。在 NLP 中,word2vec 是把向量對應到有意義的詞;在這里,DCGAN 是把矩陣對應到有意義的圖片。
剛剛我們講了 J(G) 的兩種方法,它們給 GAN 帶來了兩種不同的求解方式。
除了以上提到的兩種書寫 J(G) 的方法,最近的幾篇論文又提出了一些新觀點。熟悉統計學科的同學應該都知道,說到 JS 距離(也就是剛剛在 minimax 處提到的),就會想到 KL 距離;它們都是統計學科中常用的散度(divergence)方程。
散度方程是我們用來創造目標函數的基礎。
GAN 作為一個全由神經網絡構造并通過類 SGD 方法優化的模型,目標函數的選擇是至關重要的。Ian 給我們展示了一下選擇好的散度方程(并轉化成 GAN 所需的目標函數)的重要性:
這里,Q 指的是我們手頭噪音數據的分布,P 指的是需要找尋的目標分布。
首先,我們要知道的是,求最大似然(Maximum Likelihood)可以被看作是使 KL 距離最小化的方法。怎么解釋?你自己化簡一下 KL 公式就能知道:
其中 P、Q 都以 x 為變量;并且 P 是真實數據分類,
因此是個常數,
之中也只有(logQ)部分是變量,于是我們把公式化簡成:
即正比于-logQ。
在嚴肅的表示中,Q 應該寫為 P(x|θ);其中 P 是模型,θ是參數,那么,原式也就是一個負的最大似然(詳見前面的相應部分)。
不管是 KL(Q || P) 還是 KL(P || Q),它們寫出來都是一種類 Maximal Likelihood(最大似然)的表達形式。我們會把這類 G 的目標函數的書寫方法算作一類。其實,在最近的各種論文中也提出,其實我們可以用類 GAN 的算法來最小化任何 f-divergence 方程。
但是,在之后的幾篇論文中,很多學者(包括 Ian 本人)都提到,使用 KL(Q || P) 更能模擬出我們所面臨的情景。而本質上講,標準的 Maximum Likelihood 思維寫出來就應該是 KL(P || Q) 的形式。
這是什么意思呢?這個過程與解釋比較復雜,高階玩家可以閱讀 GoodFellow 2016 年的新論文,我這里給大家用簡單的語言來說明一下:
首先,不管是 Q 在前還是 P 在前,面對無限多的數據的時候,我們都可以最終學到完美符合我們心聲的真實數據分布 P。但是問題就在于,現實生活中,我們拿到的數據是有限的。我們的學習過程可能不能持續到最后模型完美的時刻。所以這里,區別就出現了:根據 KL 公式的理論意義,KL(P || Q) 里的 Q 是用來擬合真實數據 P 的,它會極大地想要解釋全部 P 的內涵(overgeneralization)。這時候,遇到多模態(multimodal)的情況(比如一張圖中的雙峰,羞羞),KL(P || Q) 會想要最大地覆蓋兩座峰。如果此時數據并不夠多,它會在覆蓋到一半的路上就停了下來。
相反,KL(Q || P) 是一種 undergeneralization 的情況。一個被優化的 Q 一般會先想著去覆蓋一個比較大的峰,有空了再去看另一個峰。
再換句話說,它們倆一個是激進派一個是保守派。而因為我們數據是有限的,在復雜的社會環境下,保守派能確保至少算出來的那一部分是靠譜的,而激進派卻容易犯錯。
先不管 Q 和 P 誰前誰后,我們都把我們 G 的目標函數改造成解最大似然的形式:
此時對 J(G) 求導,得到的就是一個最大似然表達形式。(為什么要求導?請自行搜索 SGD(隨機梯度下降))
以上我們講到的三種生成模型目標函數的方法,效果比較如下:
其中,還是 Maximal Likelihood 最像香港記者,跑得最快。
GAN 不光可以用來生成(復刻)樣本,還可以被轉型成強化學習模型(Reinforcement Learning)
關于這方面,上海交大的 SeqGAN [Yu et al. 2016] 也是一片很有趣的論文,有興趣的同學可以閱讀。
以上便是這篇教程的前半部分內容,主要是講解了生成模型和 GAN 的一些理論知識。而后半部分則從實際運用中的技巧開始,延伸到了這個門類發展的前沿,并探索了 GAN 與其它算法結合的可能。
Tips and Tricks 實戰技巧
第一個技巧是把數據標簽給 GAN
雖然 GAN 是一種無監督算法。但是,如果要想提高訓練學習的效果,有點標簽還是會有很大的幫助的。也就是說,學習一個條件概率 p(y|x) 遠比一個單獨的 p(x) 容易得多。
實際運用中,我們可以只需要一部分有標簽數據(如果有的話)就能大幅提升 GAN 的訓練效果;我們稱之為半監督(semi-supervising)。當然,要注意的是,如果我們用了半監督學習,我們的數據就有三類了:真實無標簽數據、有標簽數據和由噪音數據生成的數據。它們互相之間是不能混的。同時,我們的目標函數也成了監督方法和無監督方法的結合。
跟其它機器學習算法一樣,如果我們給了 GAN 一些有標簽的數據,這些標簽最好是平滑(smooth)過的,也就是說把要么是 0 要么是 1 的離散標簽變成更加平滑的 0.1 和 0.9 等等。
然而,這樣又會造成一些數學問題。因為,如果我們的真實數據被標注為 0.9(alpha),假數據被標注為 0.1(beta),那么我們最優的判別函數就會被寫成如下圖所示的樣式。大家發現問題了嗎?這個式子的分子不純潔了,混進了以 beta 為系數的假數據分布。所以,對于假數據,我們還是建議保留標簽為 0。一個平滑,另一個不平滑,也就稱為 one-sided label smoothing(單邊標簽平滑)。
標簽平滑化有很多好處,特別對于 GAN 而言,這能讓判別函數不會給出太大的梯度信號(gradient signal),也能防止算法走向極端樣本的陷阱。
第二個技巧是 Batch Norm
Batch Norm 的意思就是說,取「一批」數據,把它們給規范化(normalise)一下(減平均值,除以標準差)。它的作用就不用說了:讓數據更集中,不用擔心太大或者太小的數據,也讓學習效率更高。
不過直接用 batch norm 也有問題的。同一批(batch)里面的數據太過相似,對一個無監督的 GAN 而言,很容易被帶偏而誤認為它們這些數據都是一樣的。也就是說,最終的生成模型的結果會混著同一個 batch 里好多其它特征。這不是我們想要的形式。
所以,我們可以使用 Reference Batch Norm:
取出一批數據(固定的)當作我們的參照數據集 R。然后把新的數據 batch 都依據 R 的平均值和標準差來做規范化。
這個方法也有一些問題:如果 R 取得不好,效果也不會好。或者,數據可能被 R 搞得過擬合。換句話說:我們最后生成的數據可能又都變得跟 R 很像。
所以,再進階一點,我們可以使用 Virtual Batch Norm
這里,我們依舊是取出 R,但是所有的新數據 x 做規范化的時候,我們把 x 也加入到 R 中形成一個新的 virtual batch V。并用這個 V 的平均值和標準差來標準化 x。這樣就能極大減少 R 的風險。
第三個技巧:平衡好 G 和 D
通常,在對抗網絡中,判別模型 D 會贏。并且在實際中,D 也比 G 會深很多。Ian 建議大家不要太擔心 D 會變得太聰明,我們可以用下面這些方法來達到效果最大化:
-
就像之前說的,使用非飽和(non-saturating)博弈來寫目標函數,保證 D 學完之后,G 還可以繼續學習;
-
使用標簽平滑化。
研究前沿
GAN 依舊面臨著幾大問題。
問題 1:不收斂
現在 GAN 面臨的最大問題就是不穩定,很多情況下都無法收斂(non-convergence)。原因是我們使用的優化方法很容易只找到一個局部最優點,而不是全局最優點。或者,有些算法根本就沒法收斂。
模式崩潰(mode collapse)就是一種無法收斂的情況,這在 Ian 2014 年的首篇論文中就被提及了。比如,對于一個最小最大博弈的問題,我們把最小(min)還是最大(max)放在內循環?這個有點像剛剛說的 reverse KL 和 maximum likelihood 的區別(激進派和保守派)。minmax V(G,D) 不等于 maxmin V(G,D)。如果 maxD 放在內圈,算法可以收斂到應該有的位置,如果 minG 放在內圈,算法就會一股腦地撲向其中一個聚集區,而不會看到全局分布。
大家覺得這個特性是不是跟我們上面提到的什么東西有點像?對咯,就是 reverse KL!
因為 reverse KL 是一種保守派的損失(loss),有人覺得可能使用 reverse KL 會導致模式崩潰(mode collapse),但 Ian 表示,實際上其他的任何目標函數都可能會造成模式崩潰,這并不能解釋問題的原因。
我們可以看到,遇到了模式崩潰,我們的數據生成結果就會少很多多樣性,基本上僅會帶有部分的幾個特征(因為學習出來的特征都只聚集在全部特征中幾個地方)。
為了解決這個問題,目前表現最好的 GAN 變種是 minibatch GAN。
把原數據分成小 batch,并保證太相似的數據樣本不被放到一個小 batch 里面。這樣,至少我們每一次跑的數據都足夠多樣。原理上講,這種方法可以避免模式崩潰。(更多的優化方法還有待學界的研究。)
接下來這幾頁幻燈展示了使用 minibatch GAN 的效果:
當然,還有一些尷尬的問題依舊是「未解之謎」。
這里你們看到的,已經是精挑細選出來的好圖片了,然而…
生成的圖片的細節數量經常會被搞錯:
對于空間的理解會搞錯。因為圖片本身是用 2D 表示的 3D 世界,所以由圖片樣本生成的圖片,在空間的表達上不夠好。比如,生成的小狗似乎是貼在墻上的 2D 狗:
奇怪的東西會出現:
說到這里,Ian 開了一個玩笑,放出了一張真實的貓的姿勢奇異的照片(雖然很奇怪,但喵星人還是辦到了!):
除了 minibatch 之外,另一種 GAN 的模型變種是 unrolling GAN(不滾的 GAN)。也就是說,每一步并不把判別模型 D 這個學習的雪球給滾起來,而是把 K 次的 D 都存起來,然后根據損失(loss)來選擇最好的那一個。它的效果似乎也不錯。
問題 2:評估
對于整個生成模型領域來說,另一個問題是沒法科學地進行評估。比如你拿一堆圖片生成另一堆圖片,可是這兩批圖片其實可能看起來天差地別。人可以判斷出生成的小狗照片對不對,機器卻沒法量化這個標準。
問題 3:離散輸出
到目前為止我們提到的輸出或者案例都是連續的情況。如果我們的 G 想要生成離散值,就會遇到一個數學問題:無法微分(differentiate)。當然,這個問題其實在 ANN 時代就被討論過,并有很多解決方案,比如,Williams(1992) 經典的 REINFORCE、Jang et al.(2016) 的 Gumbel-softmax、以及最簡單粗暴地用連續數值做訓練,最后框個范圍,再輸出離散值。
問題 4:強化學習的連接。GAN 在給強化學習做加持的時候,也有點問題。首先,GAN 與強化學習的配合使用,目前大概比較火的有如下幾篇論文(這里不做深入了,有興趣的同學請自行閱讀):
如果把 GAN 加持過的 RL 用在各種游戲的學習中,GAN 該有的問題其實還是會有:
-
無法收斂;
-
面對有限步數的游戲,窮舉更加簡單粗暴,并且效果好;
-
如果游戲的出招是個連續值怎么辦?(比如《英雄聯盟》中,Q 下去還得選方向,R 起來還得點位置,等等);
-
當然,可以用剛剛說的 unrolling 來「探尋」最優解,但是每一步都要記 K 個判別模型,代價太大。
將GAN與其它方法結合
GAN 不光自身有變種和優化,也能被其它算法融合吸收,進而發揮出強大的效果:
這就是在 NIPS 幾天前剛剛發布的 PPGN(Plug and Play Generative Models/即插即用生成模型)(Nguyen et al, 2016) 了。這是生成模型領域新的 State-of-the-art(當前最佳)級別的論文。它從 ImageNet 中生成了 227*227 的真實圖片,是目前在這個數據集上跑得最驚人的一套算法。
Ian 本人也表示驚呆了,目測明年肯定是要被狂推上各種會議。(機器之心也會在第一時間給大家解讀)
效果圖(跟剛剛 Ian 自己的例子相比,差距確實還是肉眼看得出來的):
這時候有人要問了:剛剛不是說 minibatch GAN 表現最好嗎?
哈哈,這就是一個學術界的分類梗了。不管是加上 minibatch 還是 unrolling,它們本質上還是 GAN。而 PPGN 不是 GAN 構架,它可以說是融合了包括 GAN 在內的很多算法和技巧的有新算法。
Ian 順便夾了點私活:他說 PPGN 如果不帶上 GAN,立馬崩。
總結
-
GAN 是一種用可以利用監督學習來估測復雜目標函數的生成模型(注:這里的監督學習是指 GAN 內部自己拿真假樣本對照,并不是說 GAN 是監督學習)。
-
GAN 可以估測很多目標函數,包括最大似然(Maximum likelihood)(因為這是生成模型大家族的標配)。
-
在高維度+連續+非凸的情況下找到納什均衡依舊是一個有待研究的問題(近兩年想上會議的博士生們可以重點關注)。
-
GAN 自古以來便是 PPGN 不可分割的重要部分。(看到自己的理論基礎被運用到一個新高度,GAN 之父會心一笑~)
?本文為機器之心原創文章,轉載請聯系本公眾號獲得授權。
總結
以上是生活随笔為你收集整理的GAN之父NIPS 2016演讲现场直击:全方位解读生成对抗网络的原理及未来(附PPT)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringCloud底层原理
- 下一篇: 5种网络IO模型:阻塞IO、非阻塞IO、