iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

今天的文章應該是最後一篇與 GAN 有關的介紹~/images/emoticon/emoticon42.gif

關於 GAN 的研究主題實在非常多,也持續跟隨著深度學習領域的突破而演進,很難在幾篇文章中涵蓋所有的內容(就算三十篇文章都在介紹 GAN 也介紹不完啊~/images/emoticon/emoticon06.gif

在先前的文章中,已經介紹了 GAN 的架構與原理、背後的理論與演算法,以及如何評估 GAN 的效能。除了以上的內容我還很想瞭解的是:都說 GAN 的訓練不容易,有沒有一些能讓訓練更順利的技巧呢?

Tim Salimans 和 Ian Goodfellow 等人在 GAN 提出了幾年以後發表了 Improved Techniques for Training GANs,包括對 GAN 模型架構的改良,以及訓練方法的優化,這裡主要整理了這篇 paper 的內容:/images/emoticon/emoticon08.gif

為什麼 GAN 很難訓練?

在提出改良方法以前,先來談談 GAN 很難訓練的原因~

GAN 和大多數的深度學習演算法很不同的是,它沒有一個可學習的標準答案(ground truth)。其他深度學習演算法例如影像分類模型,就是按照人工標註好的圖片和類別標籤進行學習,透過 gradient descent 的方式讓模型輸出和類別標籤越一致越好,是個最佳化的問題。然而如同之前提到的,我們並沒有 GAN 應該生成什麼影像的標準答案,所以我們是透過 generator 和 discriminator 的對抗讓兩者都表現得越來越好,並期望最後達到平衡(Nash equilibrium)。

然而,當我們還是用解決最佳化問題的方式試圖尋找 GAN 之中 generator 和 discriminator 的平衡,是否真的合適呢?這就是這篇 paper 所提出的疑慮。/images/emoticon/emoticon19.gif

由於 generator 和 discriminator 學習的目標是完全相反的,有一種可能的結果是當我們訓練 generator 時,generator 的表現就變好一點,但 discriminator 的表現就變差一點;反之,在訓練 discriminator 時,discriminator 的表現變好了,但 generator 的表現就變差了。於是,generator 就和 discriminator 就陷入無限的拉鋸,沒有辦法達到平衡。

Feature matching 特徵匹配

特徵匹配是減少 GAN 不穩定性的方法,它為 generator 設定了一個新的學習目標:生成影像的特徵要和真實影像的特徵匹配。

原本,generator 的學習目標是讓它產生的影像通過 discriminator 得到的輸出要越大越好,也就是容易被 discriminator 判定為真實影像,但是新的做法則是讓 generator 產生的影像要和真實影像有相似的「特徵」。這裡的特徵指的是影像通過 discriminator 時,從 discriminator 中間層取得的比較低維度的向量,可以想成它是輸入影像壓縮後資訊,這樣的特徵會帶有影像比較深層且抽象的資訊,比起 discriminator 單純判斷「真實/生成」更能引導 generator 的學習。

不過於此同時,discriminator 還是以讓真實影像的輸出分數高、生成影像的輸出分數低為學習的目標~

Minibatch discrimination 小批次判別

還記得之前提過 GAN 容易有 mode collapse 的問題嗎?也就是 generator 或依照 discriminator 的盲點總是產生非常相近的影像。

由於在原本的 GAN,discriminator 會獨立判別每一張影像的真實性,所以儘管 generator 每次都產生相似但足夠逼真的影像,discriminator 並不會參考其他生成影像的狀況,就會持續的誤判。

而解決的辦法就是讓 discriminator 一次考慮多張影像的資訊,paper 中提出一個可能的做法是取出一批輸入影像在 discriminator 中間層的特徵,讓特徵經過一些轉換後,計算兩兩特徵間的距離,最後,將影像間的特徵距離資訊和特徵本身結合起來,繼續通過 discriminator,得到影像真實性的判別結果。

Discriminator 的任務依然是要區分個別輸入影像的真實性,但是這樣的做法讓它不只能參考單張影像的特徵,更能結合那一張影像和其他影像的差異進行判別,因此也有助於 generator 產生比較多樣的影像。

Historical averaging 歷史平均法

這個方法簡單來說就是 GAN 學習的方向不只會參考當下 generator 生成和 discriminator 判別的結果,也會考慮過去生成和判別的狀況,而距離當下越近的結果,對於 GAN 的訓練影響越大,反之如果是比較久以前的結果,對於 GAN 的訓練就不會有太大的影響。

One-sided label smoothing 單邊的標籤平滑

Label smoothing 是一種訓練分類模型的技巧,例如將原本 0 和 1 的分類標籤「軟化」為 0.1 和 0.9,有助於減少模型 overfitting 的情況。

而在這篇 paper 則提出只「軟化」真實影像的標籤,這是因為作者認為當真實影像和生成影像分布差異太大時,會無法引導 generator 學習怎麼讓生成分布和真實分布接近,而軟化真實影像的標籤可以為 generator 提供一些學習的線索。

Virtual batch normalization 虛擬的批次歸一化

Batch normalization 是一種輸入的資訊分布保持一致,讓深度模型訓練更穩定、收斂更快速的方法。但因為它是對每次輸入的一批樣本進行 normalization,對於個別樣本的影響會高度取決於同一批的其他樣本。換句話說,雖然我們輸入給 generator 的是同一個樣本,但只要和它同一批一起輸入的其他樣本不同,得到的生成影像也會不同。

至於改良方式就是選擇一個固定的 reference batch,依照這個 batch 的統計值進行 normalization,就能解決相同輸入不同輸出的問題了。

以上就是關於訓練 GAN 的一些改良的方法~不過由於參考的 paper 已經是好幾年前(2017 年)發表的,相信後續一定還有更多研究試圖提出其他的改良方法,這部分就有待持續追蹤~/images/emoticon/emoticon69.gif

假日能慢慢看 paper 好悠哉啊~(?/images/emoticon/emoticon07.gif


上一篇
[Day 6] 如何評估 GAN 生成影像的表現?
下一篇
[Day 8] 簡介 variational auto-encoder (VAE)
系列文
圖像生成 AI 的原理與應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言