資源 | 谷歌帶來GAN入門神器:瀏覽器上運行的可視化工具GAN Lab
選自GitHub
機器之心編譯
機器之心編輯部
喬治亞理工學院和谷歌大腦的研究者開發了 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 Deep Generative 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/
本文為機器之心編譯,
轉載請聯繫本公眾號獲得授權
。?------------------------------------------------
加入機器之心(全職記者 / 實習生):hr@jiqizhixin.com
投稿或尋求報道:
content
@jiqizhixin.com廣告 & 商務合作:bd@jiqizhixin.com


※寫在博士旅程之前——前大疆創新技術總監楊碩
※Judea Pearl:傳統機器學習尚處於因果層級的底層,達成完備AI的7個工具
TAG:機器之心 |