【說在前面】本人博客新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![握手][握手]
【再啰嗦一下】本文銜接上一個隨筆:人工智能中小樣本問題相關的系列模型演變及學習筆記(一):元學習、小樣本學習
一、生成對抗網絡 GAN 綜述
說到小樣本學習,就想說比較時髦的生成對抗網絡GAN。別誤會,生成對抗網絡並不是只針對小樣本生成,還有很多別的豐富應用。
1. GAN
GANs是一種結構化的概率模型,由兩個對立的模型組成:生成模型(G)用於捕獲數據分布,判別模型(D)用於估計生成數據的概率,以確定生成的數據是來自真實數據分布,還是來自G的分布。D和G使用基於梯度的優化技術(同時梯度下降)玩一個極小極大零和博弈,直到納什均衡。
GANs在一些實際任務中表現良好,例如圖像生成、視頻生成、域自適應和圖像超分辨率等。傳統的GANs雖然在很多方面都取得了成功,但是由於D和G訓練的不平衡,使得GANs在訓練中非常不穩定。D利用迅速飽和的邏輯損失。另外,如果D可以很容易的區分出真假圖像,那么D的梯度就會消失,當D不能提供梯度時,G就會停止更新。
近年來,對於模式崩潰問題的處理有了許多改進,因為G產生的樣本基於少數模式,而不是整個數據空間。另一方面,引入了幾個目標(損失)函數來最小化與傳統GANs公式的差異。最后,提出了幾種穩定訓練的方法。
2. DCGAN
顧名思義,DCGAN主要討論CNN與GAN如何結合使用並給出了一系列建議。另外還討論了GAN特征的可視化、潛在空間插值等問題。
3. ImprovedGAN
Ian Goodfellow等人提供了諸多訓練穩定GAN的建議,包括特征匹配、mini-batch識別、歷史平均、單邊標簽平滑以及虛擬批標准化等技巧。討論了GAN不穩定性的最佳假設。
4. PACGAN
PACGAN討論的是的如何分析model collapse,以及提出了PAC判別器的方法用於解決model collapse。思想其實就是將判別器的輸入改成多個樣本,這樣判別器可以同時看到多個樣本可以從一定程度上防止model collapse。
5. WGAN
WGAN首先從理論上分析了原始GAN模型存在的訓練不穩定、生成器和判別器的loss無法只是訓練進程、生成樣本缺乏多樣性等問題,並通過改進算法流程針對性的給出了改進要點。
6. CycleGAN
CycleGAN討論的是image2image的轉換問題,提出了Cycle consistency loss來處理缺乏成對訓練樣本來做image2image的轉換問題。Cycle Consistency Loss 背后的主要想法,圖片A轉化得到圖片B,再從圖片B轉換得到圖片A',那么圖片A和圖片A'應該是圖一張圖片。
7. Vid2Vid
Vid2Vid在生成器中加入光流約束,判別器中加入光流信息及對前景和背景分別建模,重點解決視頻轉換過程中前后幀圖像的不一致性。
8. PGGAN
PGGAN創造性地提出了以一種漸進增大(Progressive growing)的方式訓練GAN,利用逐漸增大的PGGAN網絡實現了效果令人驚嘆的生成圖像。“Progressive Growing” 指的是先訓練 4x4 的網絡,然后訓練 8x8,不斷增大,最終達到 1024x1024。這既加快了訓練速度,又大大穩定了訓練速度,並且生成的圖像質量非常高。
9. StackGAN
StackGAN是由文本生成圖像,StackGAN模型與PGGAN工作的原理很像,StackGAN 首先輸出分辨率為64×64 的圖像,然后將其作為先驗信息生成一個 256×256 分辨率的圖像。
10. BigGAN
BigGAN模型是基於 ImageNet 生成圖像質量最高的模型之一。該模型很難在本地機器上實現,而且 有許多組件,如 Self-Attention、 Spectral Normalization 和帶有投影鑒別器的 cGAN等。
11. StyleGAN
StyleGAN應該是截至目前最復雜的GAN模型,該模型借鑒了一種稱為自適應實例標准化 (AdaIN) 的機制來控制潛在空間向量 z。雖然很難自己實現一個StyleGAN,但是它提供了很多有趣的想法。
12. 小結
當然前文有一些方法沒有提到的,例如CGAN、自編碼GAN等。
說到這里,放一張大佬整理的GAN家族主要模型的概要圖:
- 左邊部分主要是改進模型解決例如圖片轉換、文本轉圖像、生成圖片、視頻轉換等實際問題。
- 右邊部分主要是解決GAN框架本身存在的一些問題。
同時,再分享一下生成式對抗網絡(GANs)最新2020綜述,分類更全面更細致:[認真看圖][認真看圖]
- 主要包括基於重新設計的網絡結構、新的目標函數和替代優化算法的技術三個大類
GAN 已經在一些特定應用上與其它機器學習算法相結合,例如半監督學習、遷移學習、強化學習和多模態學習等。GAN 在圖像處理與計算機視覺(例如圖像超分辨率、圖像生成、目標檢測和視頻處理等)、自然語言處理(例如文本生成等)、音樂(例如歌詞生成等)、語音與音頻、醫學以及數據科學中的典型應用(例如之前我的隨筆里提到的數據補全、異常檢測、時間序列預測等)。
同時,GAN 被用於特征學習領域(例如特征選擇、哈希和度量學習等)和其它機器學習任務(例如主動學習、在線學習 、零/小樣本學習和多任務學習等)。可以說,計算機領域的很多研究分支中的算法模型都能夠互相遷移、彼此融合,從而在不同領域有了拓展性的應用。
歡迎持續關注我的下一篇隨筆:人工智能中小樣本問題相關的系列模型演變及學習筆記(三):遷移學習
歡迎持續關注我的下一篇隨筆:人工智能中小樣本問題相關的系列模型演變及學習筆記(四):知識蒸餾、增量學習
如果您對異常檢測感興趣,歡迎瀏覽我的另一篇博客:異常檢測算法演變及學習筆記
如果您對智能推薦感興趣,歡迎瀏覽我的另一篇博客:智能推薦算法演變及學習筆記 、CTR預估模型演變及學習筆記
如果您對知識圖譜感興趣,歡迎瀏覽我的另一篇博客:行業知識圖譜的構建及應用、基於圖模型的智能推薦算法學習筆記
如果您對時間序列分析感興趣,歡迎瀏覽我的另一篇博客:時間序列分析中預測類問題下的建模方案 、深度學習中的序列模型演變及學習筆記
如果您對數據挖掘感興趣,歡迎瀏覽我的另一篇博客:數據挖掘比賽/項目全流程介紹 、機器學習中的聚類算法演變及學習筆記
如果您對人工智能算法感興趣,歡迎瀏覽我的另一篇博客:人工智能新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)、人工智能領域常用的開源框架和庫(含機器學習/深度學習/強化學習/知識圖譜/圖神經網絡)
如果你是計算機專業的應屆畢業生,歡迎瀏覽我的另外一篇博客:如果你是一個計算機領域的應屆生,你如何准備求職面試?
如果你是計算機專業的本科生,歡迎瀏覽我的另外一篇博客:如果你是一個計算機領域的本科生,你可以選擇學習什么?
如果你是計算機專業的研究生,歡迎瀏覽我的另外一篇博客:如果你是一個計算機領域的研究生,你可以選擇學習什么?
如果你對金融科技感興趣,歡迎瀏覽我的另一篇博客:如果你想了解金融科技,不妨先了解金融科技有哪些可能?
之后博主將持續分享各大算法的學習思路和學習筆記:hello world: 我的博客寫作思路