生成對抗網路
生成對抗網路GAN是由蒙特利爾大學Ian Goodfellow教授和他的學生在2014年提出的機器學習架構。
要全面理解生成對抗網路,首先要理解的概念是監督式學習和非監督式學習。監督式學習是指基於大量帶有標籤的訓練集與測試集的機器學習過程,比如監督式圖片分類器需要一系列圖片和對應的標籤(「貓」,「狗」…),而非監督式學習則不需要這麼多額外的工作,它們可以自己從錯誤中進行學習,並降低未來出錯的概率。監督式學習的缺點就是需要大量標籤樣本,這非常耗時耗力。非監督式學習雖然沒有這個問題,但準確率往往更低。自然而然地希望能夠通過提升非監督式學習的性能,從而減少對監督式學習的依賴。GAN可以說是對於非監督式學習的一種提升。
第二個需要理解的概念是「生成模型」, 如下圖所示生成圖片模型的概念示意圖。這類模型能夠通過輸入的樣本產生可能的輸出。舉個例子,一個生成模型可以通過視頻的某一幀預測出下一幀的輸出。另一個例子是搜索引擎,在你輸入的同時,搜索引擎已經在推斷你可能搜索的內容了。
基於上面這兩個概念就可以設計生成對抗網路GAN了。相比於傳統的神經網路模型,GAN是一種全新的非監督式的架構(如下圖所示)。GAN包括了兩套獨立的網路,兩者之間作為互相對抗的目標。第一套網路是我們需要訓練的分類器(下圖中的D),用來分辨是否是真實數據還是虛假數據;第二套網路是生成器(下圖中的G),生成類似於真實樣本的隨機樣本,並將其作為假樣本。
詳細說明:
D作為一個圖片分類器,對於一系列圖片區分不同的動物。生成器G的目標是繪製出非常接近的偽造圖片來欺騙D,做法是選取訓練數據潛在空間中的元素進行組合,並加入隨機噪音,例如在這裡可以選取一個貓的圖片,然後給貓加上第三隻眼睛,以此作為假數據。
在訓練過程中,D會接收真數據和G產生的假數據,它的任務是判斷圖片是屬於真數據的還是假數據的。對於最後輸出的結果,可以同時對兩方的參數進行調優。如果D判斷正確,那就需要調整G的參數從而使得生成的假數據更為逼真;如果D判斷錯誤,則需調節D的參數,避免下次類似判斷出錯。訓練會一直持續到兩者進入到一個均衡和諧的狀態。
訓練後的產物是一個質量較高的自動生成器和一個判斷能力較強強的分類器。前者可以用於機器創作(自動畫出「貓」「狗」),而後者則可以用來機器分類(自動判斷「貓」「狗」)。
最後這裡給出一個生成對抗網路的列表。
參考資料
[1] https://www.linkedin.com/pulse/gans-one-hottest-topics-machine-learning-al-gharakhanian
[2] Generative Models
[3] 深度 | 一篇文章帶你進入無監督學習:從基本概念到四種實現模型(附論文)
推薦閱讀:
※簡單例子搞懂遺傳演算法(genetic algorithm)
※SVD個人心得
※機器學習數學:梯度下降法
※深入機器學習系列4-KMeans
※深度學習基礎:Autoencoders
TAG:機器學習 |