iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

前言

昨天介紹了一些在生成對抗網路 (GAN)會常遇到的問題,以及可能的解決辦法,要提升GAN的訓練穩定性也有許多方法,例如使用WGAN等。那也因為本系列是圖像生成的任務,所以還是得使用以圖像處理為主軸的卷積神經網路 (Convolution Neural Network, CNN),並使用這層神經網路為主軸建立一個Deep Convolutional Generative Adversarial Networks (DCGAN)。在實作之前先來了解一下DCGAN的一些細節吧。

DCGAN是甚麼?

DCGAN是一個使用深度卷積為主架構的GAN模型。它比普通的GAN更能提取圖片的特徵等細節,故生成能力會比使用普通全連接層 (Dense)的GAN要來的優秀。另外也因為CNN訓練參數比單純Dense層來的少一點,所以訓練速度基本上會比較快。

DCGAN在模型架構上通常會用3層以上的卷積處理,如下圖,可看到圖片下方DCGAN的生成器架構使用了四層CNN層,並且輸出層也是使用CNN直接輸出圖片。雖然圖片中只有描述生成器的架構,不過通常為了平衡訓練,在簡單的GAN中,生成器與判別器的架構並不會差太多。所以看生成器架構如何,判別器架構大致上也就那樣了!
https://ithelp.ithome.com.tw/upload/images/20230915/20151029XrQ6RHXiVe.png
DCGAN訓練架構。[圖源]
其他的訓練目標,目標函數基本上與原始的GAN完全相同,因為只是網路架構被替換而已,是相當簡單的一個GAN種類。

與GAN有甚麼不同?

DCGAN在建立時根據其原始論文有幾項原則:

  1. DCGAN在建立生成器模型時會使用轉置卷積 (Transposed Convolution)替換任何池化層 (Pooling);在建立判別器模型時會用步長卷積 (Strided Convolution)替換任何池化層。這意味著模型中完全不會使用到池化層
  2. 在生成器和判別器中使用批次正規化 (Batch Normalization)。
  3. 在生成器中使用ReLU激活函數,除了輸出層使用Tanh激活函數。
  4. 在判別器中使用LeakyReLU激活函數。
  5. 在隱藏層中不使用全連接層。
  6. 優化器使用Adam更新權重參數,Adam中的參數’’’beta1=0.5’’’可以幫助訓練穩定。

跟ReLU有關的題外話

但我的經驗是似乎使用LeakyReLU、ReLU作為激活函數與輸出層使用Tanh跟Sigmoid作為激活函數的效果差別不大,所以在簡單的任務中激活函數的使用上會比較彈性。除此之外也有許多變種的ReLU函數可以使用,例如ELU函數、SeLU函數、GELU函數、Swish函數等,相當多選擇,但最常見還是以LeakyReLU、ReLU為主。
這些函數也給各位看看長怎樣,有興趣的話TensorFlow可以直接使用這些函數:

from tensorflow.keras.activations import elu, selu, gelu, swish
y = elu(x) # 將x作為輸入並計算elu(x)

ELU函數圖:
https://ithelp.ithome.com.tw/upload/images/20230915/20151029ajXxAbVsbk.png
SELU函數圖:
https://ithelp.ithome.com.tw/upload/images/20230915/201510293FuLmyeTEe.png
GELU函數圖:
https://ithelp.ithome.com.tw/upload/images/20230915/20151029BLrf9fSK7W.png
Swish函數圖:
https://ithelp.ithome.com.tw/upload/images/20230915/20151029V5fcGC4hoM.png

結語

今天向各位介紹了DCGAN,DCGAN是一個比較簡單的GAN模型,所以並沒有太多的細節。明天會帶各位實作DCGAN模型,並同樣生成mnist資料集。但因為任務簡單所以在生成圖片時結果並不會有太大的差異,希望各位可以先了解簡單的生成網路,之後再一步一步慢慢將網路複雜化。DCGAN也很常被用來作動漫人物的頭像生,各位有興趣也可以去玩玩看喔~


上一篇
[Day11]:GAN在訓練可能會遇到的問題…
下一篇
[Day13]:用CNN來建立DCGAN模型吧
系列文
生成式AI到底何方神聖?一窺生程式AI的真面目31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言