谷歌帶來GAN入門神器:瀏覽器上執行的視覺化工具GAN Lab
佐治亞理工學院和谷歌大腦的研究者開發了 GAN 的視覺化工具 GAN Lab,無需安裝也無需專門硬體,通過網頁瀏覽器(推薦 Chrome)就可以開啟。使用者可以利用 GAN Lab 互動地訓練生成模型並可視化動態訓練過程的中間結果,用動畫來理解 GAN 訓練過程中的每一個細節。
用瀏覽器開啟這個網頁,就可以開始耍了:https://poloclub.github.io/ganlab/
什麼是 GAN?
許多機器學習系統希望將一些複雜的輸入(如影象)生成簡單的輸出(比如標籤「貓」)。相比之下,生成模型的目標則相反:取一些簡單的輸入,可能是一些隨機數字,然後生成複雜的輸出,如一張逼真的人臉影象。而生成對抗網路(GAN)是一種特別有效的生成模型,它僅在幾年前才由Ian Goodfellow提出(https://arxiv.org/pdf/1406.2661.pdf),一直是機器學習界非常感興趣的主題。
你也許會好奇我們為什麼想要一個生成逼真影象的系統,或者任何其它型別資料的逼真模擬。除了是我們智力的挑戰,這種模型還是一種非常便捷的工具,應用範圍包括藝術、增強模糊影象等。
GAN 的工作原理
機器從零開始「建立」逼真影象看起來很神奇,但 GAN 用了兩個關鍵技巧來將這個看似不可能實現的模糊目標變成現實。
第一個技巧對 GAN 來說並不新鮮,就是納入隨機性。基本上,這種做法不無道理:如果你構建的系統每次執行都生成同樣的人臉影象,那就沒什麼意思了。並且,從概率角度來看,這種做法有助於我們將影象生成問題轉化為自然的數學框架。我們當然不想隨機均勻地挑選影象,因為那樣只會產生噪聲。相反,我們希望該系統能夠了解哪些影象可能是人臉,哪些不是。從數學角度來看,這涉及對影象的概率分佈建模,即一個能夠分辨人臉影象的函式。這類問題——在高維空間中建模函式——正是神經網路所要解決的問題。
定義 GAN 的一個重要概念是將這個建模問題設定為一種競賽。這也是「生成對抗網路」這個名字中「對抗(adversarial)」的來源。該網路的核心觀念是建立兩個相互競爭的網路:一個生成器和一個判別器。生成器嘗試建立隨機合成的輸出(如人臉影象),而判別器則試著將這些輸出與真實樣本(如名人資料庫)區分開來。其期望是隨著這兩個網路的對抗,輸出會變得越來越好,最終生成一個能夠產生逼真輸出的生成器網路。
總之,生成對抗網路是學習從特殊分佈中選擇樣本的神經網路(「生成」),它們通過建立競爭關係來實現這一目的(「對抗」)。
視覺化訓練過程
GAN 的結構非常複雜,關於 GAN 的視覺化研究還有很多工作要做。以下是 GAN Lab 的基礎思想。
首先,我們並不是視覺化像生成逼真影象那樣複雜的過程。我們僅在兩個維度上展示 GAN 學習點分佈的過程。如此簡單的視覺化並沒有什麼實際應用,但能相當簡單地展示 GAN 的執行機制。此外,視覺化 2D (x,y) 空間的概率分佈比視覺化高維空間的概率分佈要簡單得多。
選擇一個數據分佈
在介面頂部,你可以選擇一個概率分佈讓 GAN 來學習,我們將其視覺化為一組資料樣本。一旦選擇了一個分佈,我們將在兩個位置展示它:左側的「model overview graph」檢視展示了尺寸較小的版本;右側的「layered distributions」檢視展示了尺寸較大的版本。
圖 1:選擇的資料分佈被展示在兩個位置。
我們設計了兩個檢視來幫助使用者更好地理解 GAN 生成逼真樣本的過程:
(1)「model overview graph」展示了 GAN 的架構、主要元件及其連線方式,另外還可視化了這些元件生成的結果。
(2)「layered distributions」覆蓋了「model overview graph」檢視中的元件的視覺化,因此你可以在分析模型時更容易地對比元件的輸出。
開始訓練
要開始訓練 GAN 模型,請單擊工具欄上的開始鍵( )。除了所選分佈中的真實樣本,你還會看到模型生成的假樣本。隨著訓練的進行,假樣本的位置會不斷更新。完美的 GAN 將會生成與真實樣本的分佈無法區分的假樣本。當這種情況發生時,你將在「layered distributions」檢視中看到這兩種分佈很好地重疊。
圖 2:隨著訓練的進行,假樣本的位置不斷更新。然後,真實樣本和假樣本的分佈很好地重疊。
視覺化生成器和判別器
GAN 中的生成器和判別器有競爭關係,它們彼此競爭,迭代地更新假樣本,使其與真實樣本更加相似。GAN Lab 可以對二者之間的相互作用進行視覺化。
生成器。如前所述,生成器是將隨機輸入轉換成合成輸出的函式。在 GAN Lab 中,隨機輸入是一個 2D 樣本,值為 (x, y)(從均勻分佈或高斯分佈中取樣得到),輸出也是一個 2D 樣本,但是對映到不同的位置,是一個假樣本。視覺化該對映的一種方式是使用流形(manifold)[Olah, 2014]。輸入空間被表示為均勻方形網格。隨著該函式將輸入空間的位置對映到新的位置,如果我們能夠看到輸出,則整個網格(現在包含了不規則四邊形)看起來像原始網格的變形版。每個(變形)單元的區域(或密度)已經改變了,我們將密度編碼為不透明度,這樣高不透明度就表示在較小的空間內有更多樣本。非常精細的流形看起來集合和該假樣本的視覺化圖一樣。該視覺化圖展示了生成器如何學習對映函式以使其輸出與真實樣本的分佈更加相似。
圖 3:生成器的資料變換被視覺化為流形,將輸入噪聲(最左側)轉換成假樣本(最右側)。
判別器。生成器建立了假樣本,判別器(二分類器)嘗試區分假樣本和真實樣本。GAN Lab 將其決策邊界視覺化為 2D 熱圖(類似TensorFlow Playground)。每個網格單元的背景色編碼了分類器結果的置信度值。綠色越深表示該區域的樣本更有可能是真實的;紫色越深的區域中的樣本更有可能是假的。隨著 GAN 趨近最優,整個熱圖變得越來越灰,這表示判別器無法輕鬆區分假樣本和真實樣本了。
圖 4:生成器的效能可以通過 2D 熱圖讀出。圖中所示的生成器表現良好,因為多數真實樣本分佈在其分類表面的綠色區域(假樣本在紫色區域)。
理解生成器與判別器之間的相互作用
GAN 的兩個網路在其迭代地更新自身時相互影響。GAN Lab 的一大用途是利用其視覺化來了解生成器如何增量更新,從而改進自身,生成越來越逼真的假樣本。生成器通過愚弄判別器來實現這一點。在判別器將假樣本分類為真實樣本時,生成器的損失值下降(對判別器不利,對生成器有利)。GAN Lab 將假樣本的梯度視覺化(粉色線),以促成生成器的成功。
圖 5:基於這些樣本的當前位置和判別器的當前分類表面(通過背景顏色視覺化),假樣本的移動方向由生成器的梯度(粉色線條)表示。
通過這種方式,生成器逐步改善,生成更加真實的樣本。一旦假樣本得以更新,判別器也將進行相應更新,微調其決策邊界,等待下一批試圖矇蔽它的假樣本。這一互動式更新過程不斷進行,直到判別器無法分辨真假樣本為止。
使用互動功能
GAN Lab 有很多支援互動實驗的非常棒的功能。
-
互動式超引數調整
點選「編輯」圖示( )來展示獨立的超引數,然後在訓練期間實時地編輯它們。
-
使用者定義資料分佈
如果你不喜歡我們提供的資料分佈,可以通過點選資料分佈列表最後的圖示( ),編輯你想要的資料分佈。
-
慢鏡頭模式
動畫太快看花眼?別擔心,你可以點選「慢動作」圖示( )進入慢動作模式。
-
手動逐步執行
如果你想進行更多的控制,可以點選該圖示( )一步步手動訓練單個迭代。
檢視以下視訊,快速瞭解 GAN Lab 功能:
-
GAN Lab 介紹(0:00-0:38)
-
通過超引數調整訓練簡單分佈(0:38-1:05)
-
訓練使用者定義的資料分佈(1:05-1:51)
-
慢動作模式(1:51-2:19)
-
手動逐步執行(2:19-3:10)
如何實現?
GAN Lab 使用瀏覽器內 GPU 加速的深度學習庫TensorFlow.js 來實現。從模型訓練到視覺化,所有的一切都通過 JavaScript 實現。你只需要一個網頁瀏覽器(如 Chrome),即可執行 GAN Lab。這一實現方法極大地拓寬了人們使用深度學習互動工具的渠道。
原始碼連結:https://github.com/poloclub/ganlab
論文:GAN Lab: Understanding Complex DeepGenerative Models using Interactive Visual Experimentation
論文地址:https://arxiv.org/abs/1809.01587v1
摘要:深度學習領域的最新進展吸引了眾多從業者及學生的目光,激發他們當中的很多人去學習這項新技術。儘管視覺和互動的方法已經讓深度學習變得更易掌握,但多數現有的工具聚焦於較簡單的模型。本文提出了 GAN Lab,這是第一個為非專業人士學習、試驗生成對抗網路(一種流行的複雜深度學習模型)而設計的互動式視覺工具。使用者可以利用 GAN Lab 互動地訓練生成模型,並可視化動態訓練過程的中間結果。GAN Lab 緊密集成了總結 GAN 結構的模型概述圖(model overview graph)和幫助使用者解釋子模型之間相互作用的分層分佈檢視(layered distributions view)。GAN Lab 引入了新的互動試驗特徵,用於學習複雜的深度學習模型,如在多個抽象層次上進行逐步訓練以理解複雜的訓練動態。GAN Lab 使用TensorFlow.js 實現,任何人都可以通過網頁瀏覽器進行訪問,無需安裝,也無需專門硬體,克服了部署深度學習互動式工具的一個重大實際挑戰。
原文連結:https://poloclub.github.io/ganlab/
ofollow,noindex" target="_blank">工程 GAN 視覺化 谷歌大腦 瀏覽器 TensorFlow.js
相關資料
Neural Network
(人工)神經網路是一種起源於 20 世紀 50 年代的監督式機器學習模型,那時候研究者構想了「感知器(perceptron)」的想法。這一領域的研究者通常被稱為「聯結主義者(Connectionist)」,因為這種模型模擬了人腦的功能。神經網路模型通常是通過反向傳播演算法應用梯度下降訓練的。目前神經網路有兩大主要型別,它們都是前饋神經網路:卷積神經網路(CNN)和迴圈神經網路(RNN),其中 RNN 又包含長短期記憶(LSTM)、門控迴圈單元(GRU)等等。深度學習是一種主要應用於神經網路幫助其取得更好結果的技術。儘管神經網路主要用於監督學習,但也有一些為無監督學習設計的變體,比如自動編碼器和生成對抗網路(GAN)。
來源:機器之心
Decision boundary
在具有兩類的統計分類問題中,決策邊界或決策曲面是一個超曲面,它將底層的向量空間分成兩組,每組一個。分類器會將決策邊界一側的所有點分為屬於一個類,而另一側屬於另一個類。也即二元分類或多類別分類問題中,模型學到的類別之間的分界線。
來源: Wikipedia
Generative Adversarial Networks
生成對抗網路是一種無監督學習方法,是一種通過用對抗網路來訓練生成模型的架構。它由兩個網路組成:用來擬合數據分佈的生成網路G,和用來判斷輸入是否“真實”的判別網路D。在訓練過程中,生成網路-G通過接受一個隨機的噪聲來儘量模仿訓練集中的真實圖片去“欺騙”D,而D則儘可能的分辨真實資料和生成網路的輸出,從而形成兩個網路的博弈過程。理想的情況下,博弈的結果會得到一個可以“以假亂真”的生成模型。
Hyperparameter
在機器學習中,超引數是在學習過程開始之前設定其值的引數。 相反,其他引數的值是通過訓練得出的。 不同的模型訓練演算法需要不同的超引數,一些簡單的演算法(如普通最小二乘迴歸)不需要。 給定這些超引數,訓練演算法從資料中學習引數。相同種類的機器學習模型可能需要不同的超引數來適應不同的資料模式,並且必須對其進行調整以便模型能夠最優地解決機器學習問題。 在實際應用中一般需要對超引數進行優化,以找到一個超引數元組(tuple),由這些超引數元組形成一個最優化模型,該模型可以將在給定的獨立資料上預定義的損失函式最小化。
來源: Wikipedia
Gaussian distribution
正態分佈是一個非常常見的連續概率分佈。由於中心極限定理(Central Limit Theorem)的廣泛應用,正態分佈在統計學上非常重要。中心極限定理表明,由一組獨立同分布,並且具有有限的數學期望和方差的隨機變數X1,X2,X3,...Xn構成的平均隨機變數Y近似的服從正態分佈當n趨近於無窮。另外眾多物理計量是由許多獨立隨機過程的和構成,因而往往也具有正態分佈。
來源: Wikipedia
Generative Model
在概率統計理論中, 生成模型是指能夠隨機生成觀測資料的模型,尤其是在給定某些隱含引數的條件下。 它給觀測值和標註資料序列指定一個聯合概率分佈。 在機器學習中,生成模型可以用來直接對資料建模(例如根據某個變數的概率密度函式進行資料取樣),也可以用來建立變數間的條件概率分佈。
來源: 維基百科
Machine Learning
機器學習是人工智慧的一個分支,是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、計算複雜性理論等多門學科。機器學習理論主要是設計和分析一些讓計算機可以自動“學習”的演算法。因為學習演算法中涉及了大量的統計學理論,機器學習與推斷統計學聯絡尤為密切,也被稱為統計學習理論。演算法設計方面,機器學習理論關注可以實現的,行之有效的學習演算法。
來源:Mitchell, T. (1997). Machine Learning. McGraw Hill.
Mapping
對映指的是具有某種特殊結構的函式,或泛指類函式思想的範疇論中的態射。 邏輯和圖論中也有一些不太常規的用法。其數學定義為:兩個非空集合A與B間存在著對應關係f,而且對於A中的每一個元素x,B中總有有唯一的一個元素y與它對應,就這種對應為從A到B的對映,記作f:A→B。其中,y稱為元素x在對映f下的象,記作:y=f(x)。x稱為y關於對映f的原象*。*集合A中所有元素的象的集合稱為對映f的值域,記作f(A)。同樣的,在機器學習中,對映就是輸入與輸出之間的對應關係。
來源: Wikipedia
Ian Goodfellow
Ian Goodfellow 是機器學習領域備受關注的年輕學者之一,他在本科與碩士就讀於斯坦福大學,師從吳恩達,博士階段則跟隨蒙特利爾大學的著名學者Yoshua Bengio研究機器學習。Goodfellow 最引人注目的成就是在2014年6月提出了生成對抗網路(GAN)。這一技術近年來已成為機器學習界最火熱的討論話題,特別是在最近幾個月裡,與GAN有關的論文不斷湧現。GAN已成為眾多學者的研究方向。
涉及領域
深度卷積生成式對抗網路發現跨域關係的生成對抗網路間隔自適應生成對抗網路
來源: Goodfellow, I.
Deep learning
深度學習(deep learning)是機器學習的分支,是一種試圖使用包含複雜結構或由多重非線性變換構成的多個處理層對資料進行高層抽象的演算法。 深度學習是機器學習中一種基於對資料進行表徵學習的演算法,至今已有數種深度學習框架,如卷積神經網路和深度置信網路和遞迴神經網路等已被應用在計算機視覺、語音識別、自然語言處理、音訊識別與生物資訊學等領域並獲取了極好的效果。
來源: LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436.
Tensor
張量是一個可用來表示在一些向量、標量和其他張量之間的線性關係的多線性函式,這些線性關係的基本例子有內積、外積、線性對映以及笛卡兒積。其座標在 維空間內,有 個分量的一種量,其中每個分量都是座標的函式,而在座標變換時,這些分量也依照某些規則作線性變換。稱為該張量的秩或階(與矩陣的秩和階均無關係)。 在數學裡,張量是一種幾何實體,或者說廣義上的“數量”。張量概念包括標量、向量和線性運算元。張量可以用座標系統來表達,記作標量的陣列,但它是定義為“不依賴於參照系的選擇的”。張量在物理和工程學中很重要。例如在擴散張量成像中,表達器官對於水的在各個方向的微分透性的張量可以用來產生大腦的掃描圖。工程上最重要的例子可能就是應力張量和應變張量了,它們都是二階張量,對於一般線性材料他們之間的關係由一個四階彈性張量來決定。
來源: 維基百科
TensorFlow
TensorFlow是一個開源軟體庫,用於各種感知和語言理解任務的機器學習。目前被50個團隊用於研究和生產許多Google商業產品,如語音識別、Gmail、Google 相簿和搜尋,其中許多產品曾使用過其前任軟體DistBelief。
來源: 維基百科

機器之心是國內領先的前沿科技媒體和產業服務平臺,關注人工智慧、機器人和神經認知科學,堅持為從業者提供高質量內容和多項產業服務。