iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 16
1
AI & Data

30 天學會深度學習和 Tensorflow系列 第 16

15. 深度學習甜點系列:偽造大師

  • 分享至 

  • xImage
  •  

Generative model:
之前我們所談的多半是 Discriminative model,亦是訓練一個分類器,判別輸入影像是否是屬於某一類的物件,或是輸入兩個人臉影像,判別是否為同一人等等。在這類訓練模型,資料的原分佈並不是學習的重點,分類器只要從現有的訓練資料中,找出能夠區分不同類別的特徵向量,便可以完成任務。

另外一個模型,則被稱為 Generative Models,在這個模型中,從訓練的資料中學習到取樣的原分佈就顯得重要,因為該模型的主要功能是希望能產生與訓練資料相近的樣本,就如同上一篇中所介紹的影像風格轉換。

在傳統的統計學習方法上,資料的原分佈的方法,可以由兩大類的方法學習:

  1. 參數型(Parametric) : 模型必須給予原分佈假設,並依其假設估算該假設分佈的參數值。目前文獻中,用參數行方法來生成影像分佈,常見的方法有:
  2. 非參數型(Non-paramtetric): 模型不需要給予原分佈假設,使用一個 window 或是一個平滑版本的 window,又稱為 kernel 的方式,如繪製直方圖,掃描現有訓練資料的分佈,並將落於 window 內的訓練資料計數,而完成分佈預估。

因為影像資料通常都非常龐大且像素之間的關係難以捕捉,所以在生成影像的技術上一直難有突破,在今天所要介紹的 Generative Adversarial Network,在此都簡稱 GAN,因為能產生高質量清晰的影像,而在推出後倍受矚目,甚至被 CNN 的發明者,Yann LeCun 譽為當年最創新的主意。

Generative Adversarial Network
GAN 是一個 semi-supervised 的學習方法,背後的原理是取自 Game theory 零和遊戲。零和遊戲是一種兩個玩家對抗型的遊戲,常見的二人棋盤遊戲,如圍棋等都是零和遊戲。在 GAN 的架構中,包含了一個 discriminator network 和一個 generator network,來模擬零和遊戲中的兩個玩家。

GAN overview

一個最常被使用用來解釋 GAN 的比喻,便是 generator network 是一個貨幣偽造者,而discriminator network 則是捕捉偽造者的執法單位。兩者的目標一致,但最佳化的方向不一樣。對警察而言,他希望能準確辨識偽造貨幣,使其無法在市面使用(maximize objective function),而對偽造者而言,則希望偽造貨幣能成功到騙過警察,而在市面流竄(minimize objective function)。

DCGAN
GAN 簡化版的 min-max 演算法,也是取自於零和遊戲的理論基礎。最初 GAN 是利用手寫數字影像 MNIST 做測試, discriminator 和 generator networks 都是用 feed forward 的架構去實踐。爾後,Facebook 的研究者們,則利用 convolution network 取代了 feed forward 的網路架構,用 Convolution network 去萃取影像特徵,再用 de-convolution network 去生成影像,架構可以見下圖。這個方法使用在不同的影像集包括了 SVHN 和 Celeb 都產生不錯的結果。
DCGAN de-convolution architecture

Image to Image translation
和上一篇的影像風格轉換相關的 GAN 應用則是 image to image translation,由柏克萊大學的實驗室在 CVPR 2017 年會上所發表的 pix2pix 文章。和影像風格轉換任務不同的是,image to image translation 只需輸入一張影像,而輸出影像則是該輸入影像不同風格的影像。至於 image translation 系統該輸出什麼風格的影像,則是由訓練時給予配對風格影像來決定。更多的 Image to Image translation 輸出例子可見下圖。

pix2pix example

pix2pix 用的架構和 GAN 類似,但由於該系統的目的不在於學習影像的分佈,以產生仿真的影像,而是希望透過監督學習的方式,讓原真實影像產生在訓練時所配對的影像風格。欲實踐這個任務,所需要的是 GAN 的改良版本,稱為 conditional GAN。Conditional GAN 和 GAN 最大的不同在於 conditional GAN 在於學習有目標標示(欲轉換的風格影像)的 conditional probability 而非資料的 joint/likelihood probability,也就是把損失函式中的 p(x) 和 p(z) 替換成 p(x|y),p(z|y)。架構與損失函式可見下圖:

cGAN architecture

秉持著站在巨人肩膀上的精神(其實是年紀大了...),關於 pix2pix 的 sample code 可見 pix2pix 的官方網站

參考資料和圖片來源:

  1. OpenAI: Generative Model
  2. Generative Adversarial Networks- History and Overview
  3. Generative Adversarial Networks — Explained
  4. Image-to-Image Translation with Conditional Adversarial Nets

上一篇
14. 深度學習甜點系列:讓梵谷從墳墓裡復活
下一篇
16. 深度學習甜點系列:卷積網路總結
系列文
30 天學會深度學習和 Tensorflow30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言