【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下
今天將給大家介紹一個有趣的小工具—GAN Lab,這是一款對抗生成網絡的可視化工具,對新手非常友好,有助于快速理解GAN的工作流程和原理。
作者&編輯 | 小米粥
編輯 | 言有三
GAN Lab是谷歌開發的一款開源的GAN可視化工具,使用GAN Lab不需要安裝過程、不需要深度學習庫PyTorch或TensorFlow等、也不需要專門硬件GPU,通過網頁瀏覽器(推薦 Chrome)就可以打開,網址為:
https://poloclub.github.io/ganlab/
如果對源碼感興趣,可訪問github自行學習:
https://github.com/poloclub/ganlab/
用戶可以利用 GAN Lab交互地訓練生成模型并可視化動態訓練過程的中間結果,用動畫來理解 GAN 訓練過程中的每一個細節,畫面簡潔美觀,筆者認為這是GAN可視化工具中整體效果最好的,其主體界面如下:
GAN Lab主體包括三個部分:MODEL OVERVIEW GRAPH、LAYERED DISTRIBUTIONS、METRICS,其中MODEL OVERVIEW GRAPH將GAN模型可視化為圖片,展示了GAN的基本結構、數據流,將輸入輸出數據進行了可視化;LAYERED DISTRIBUTIONS可視化了真實樣本、生成器生成樣本、生成器梯度等內容;METRICS記錄了迭代訓練過程中的分布距離的度量。
1.?設置模型
首先,在界面的最上方,我們可以選擇不同的數據分布。需要強調的是:可視化工作只能在不超過三維的維度上展示,維度超過三維的數據無法全面展示,故整個GAN Lab中的噪聲noise、訓練樣本real samples、生成樣本fake samples均為二維數據。部分關于GAN的實驗結果可能與數據維度有關,這在GAN Lab中是無法得到體現的。
為了畫面簡潔,一些模型參數的調整按鈕是被隱藏的,若要將其完全顯示出來,請務必將MODEL OVERVIEW GRAPH旁的編輯按鈕點亮為黃色。
對于噪聲noise的分布,可以選擇1D 高斯分布、1D均勻分布、2D高斯分布、2D均勻分布,其中1D 表示樣本只在一個維度上表現為高斯/均勻分布,另一個維度保持為定值。當把鼠標放置到生成器Generator上時,GAN Lab會展示出從噪聲空間轉換成生成數據流形的動態過程,如下圖所示:
對于訓練數據的分布,可以選擇GAN Lab內置的四種類型,如下圖所示:
也可以自行使用繪圖的功能“描繪”出想要的訓練數據分布,選擇第五種類型Draw one by yourself,在白板內勾畫數據分布,然后點擊apply即可,效果如下圖所示:
GAN Lab提供的GAN是最簡單的GAN,它只支持單生成器單判別器的結構,并且兩者均為全連接層,對生成器Generator可設置隱層(hidden layers)的數目以及每個隱層內的神經元(neurons)的數目。若為了簡單,可使用已經訓練好的模型,只需在頁面上方選擇use pre-trained model即可。
對于損失函數,GAN Lab提供了Log loss和LeastSq loss,其中前者為原始版本的GAN中的目標函數,后者為最小二乘GAN中的目標函數。
對于生成器和判別器的迭代次數,可以分別設置在每一輪迭代中,生成器/判別器需要訓練的次數,手動調整updates per epoch即可。
對于優化算法,GAN Lab對生成器和判別器均提供了SGD和Adam兩種算法,只需在Optimizer中選擇即可,每種算法均可設置不同的學習速率,在Learning rate中選擇即可。
2.?模型訓練
把模型的結構、參數等信息設置完成后,即可在界面上方的控制臺控制模型的訓練過程。
第一個按鈕Reset the model表示將模型完全重置,可重新設置參數。
第二個按鈕Run/Pause training表示開始/暫停訓練過程,訓練過程可視化內容在不同的更新,同時數據流也會被展示出來。
第三個按鈕Slow-motion mode表示進入慢動作模式,將其點亮為黃色后,GAN的運行流程可分步驟展示出來,在MODEL OVERVIEW GRAPH頁面,只有當前步驟涉及到的節點和數據流會被明確展示出來,其他部分虛化顯示,有助于理解GAN正向計算和反向傳播運算流程,如下圖所示分別為判別器和生成器的慢動作模式:
第四個按鈕Train for one epoch可用于控制訓練的節奏,即只訓練一次,將其點亮為黃色后,可選擇只訓練一次Generator,或只訓練一次Discriminator,或兩者都分別訓練一次Both,每點擊一次都會進行一個epoch訓練。
最后的epoch記錄了目前為止模型的迭代訓練次數。
在METRICS部分,記錄了生成器和判別器的損失,同時還記錄了兩個分布的KL散度和JS散度(這里是通過網格化來計算),如下圖所示。需要注意,METRICS部分的函數圖像每經過2000次epoch才更新一次。
3.?可視化數據
在MODEL OVERVIEW GRAPH模塊中,每個節點均被可視化。噪聲Noise節點的樣本(使用綠色表示)分布、訓練數據集Real Samples節點的樣本(使用紫色表示)分布、生成數據Fake Samples節點的樣本(使用紫色表示)分布均被在二維平面清晰展示出來,如下圖所示:
在生成器Generator節點,生成數據的流形會被可視化展示出來,紫色部分表示數據流形的范圍,紫色程度的深淺表示了數據分布的概率高低,深紫色表示高概率,淺紫色表示低概率,如下圖所示:
在判別器Discriminator節點,判別器的整體預測結果被用熱圖(hot map)的形式可視化地展示了出來,其中綠色部分表示判別器認為其為真實樣本,綠色越深表示判別器輸出越接近1;紫色部分表示判別器認為其為虛假樣本,紫色越深表示判別器輸出越接近0;白色部分表示判別器輸出接近于0.5,也可理解為分類器的分類面,如下圖所示:
在判別器的預測結果Prediction of Samples節點,每一個真實樣本Real Samples和虛假樣本Fake Samples經過判別器的輸出結果被展示出來,其顏色意義與上相同。
在生成器的梯度Gradients節點,可視化結果將虛假樣本即生成樣本、梯度共同展示出來,用直線段指示出每個虛假樣本計算得到的梯度方向,用線段的長度表示梯度的大小,如下圖所示:
LAYERED DISTRIBUTIONS將真實樣本、虛假樣本、虛假樣本的流形、判別器的結果圖、虛假樣本的梯度等5個節點共同展示在同一幅圖中,如下圖所示:
可以在LAYERED DISTRIBUTIONS模塊調整顯示的內容來進行有選擇性地展示,只需在下方的介紹中單擊real samples, fake samples, discriminator, generator, gradients等字樣即可,字樣下為實線表示節點的可視化內容會在LAYERED DISTRIBUTIONS中展示,為虛線則不展示,如下圖所示:
4.?兩個演示
我們舉一個例子來看看如何通過GAN Lab來理解GAN的工作流程。首先,訓練生成器會使虛假樣本(紫色)向真實樣本(綠色)靠攏,虛假樣本的梯度也表明訓練使得兩個分布靠近,如下圖所示:
接著,訓練判別器,判別器不會對樣本的分布產生影響,但是會對輸出熱圖產生影響,如下圖所示:
不斷迭代更新,最后真實樣本和虛假樣本幾乎重合,并且判別器在這些樣本點的輸出為0.5(白色),如下圖所示:
另外,我們可對數據樣本分析,理解模式崩潰問題,如下圖所示,所有生成的虛假樣本都聚到到一個點,生成器完全沒有擬合真實樣本的分布,這是可以通過GAN Lab體現出來的。
GAN Lab是目前已知的一款非常優秀的GAN可視化軟件,簡單生動,適合于入門,但對于難度較高的問題,由于各種限制,它還無法做到完全的可視化。
[1]Minsuk K , Nikhil T , Polo C D H , et al. GAN Lab: Understanding Complex Deep Generative Models using Interactive Visual Experimentation[J]. IEEE Transactions on Visualization and Computer Graphics, 2018:1-1.
總結
這一部分給大家介紹了一個有趣的小工具—GAN Lab,這是一款對抗生成網絡的可視化工具,對新手非常友好,有助于快速理解GAN的工作流程和原理。
GAN群
有三AI建立了一個GAN群,便于有志者相互交流。感興趣的同學也可以微信搜索xiaozhouguo94,備注"加入有三-GAN群"。
另外,可關注作者本人知乎。
如何系統性學習GAN
有三AI公眾號輸出了大量的GAN相關的內容,關于如何系統性學習GAN,請大家參考往期文章。
【雜談】如何系統性地學習生成對抗網絡GAN
在有三AI知識星球網絡結構1000變中包含大量GAN的各類應用和實戰相關的內容,一些案例如下,感興趣可以深入學習了解。
轉載文章請后臺聯系
侵權必究
往期精選
【雜談】有三AI知識星球最近都GAN了哪些內容?
【雜談】GAN對人臉圖像算法產生了哪些影響?
【雜談】那些底層的圖像處理問題中,GAN能有什么作為?
【完結】12篇GAN的優化文章大盤點,濃濃的數學味兒
【GAN優化】長文綜述解讀如何定量評價生成對抗網絡(GAN)
【雜談】除了生成圖像(造假),GAN如何給目標檢測,圖像分割,圖像增強等問題打輔助?
總結
以上是生活随笔為你收集整理的【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【知识星球】这几年人脸都有哪些有意思的数
- 下一篇: 【通知】3月第二周直播预告,模型优化,人