生成式對抗網路GAN

閱讀時間約 6 分鐘

到目前為止,我們主要討論的目標都是找到一個可以預測答案的方程式,而不是生成獨一無二的東西。那生成式對抗網路的創造,就是為了這個目標而生。

Generator不同的點在於,輸入會額外加入一個機率分布simple Distribution Z,以產生一個隨機的輸出。

  1. 這組Distribution Z必須夠簡單,像是高斯、uniform這類的機率分佈都是可以的。
  2. 在每次有input時,都會搭配一個Z作為輸入。
raw-image

為什麼需要輸出一個generator?

我們可以先從一個例子來了解,EX: 小精靈遊戲

假設要輸出一個小精靈遊戲的video prediction,如果我們的輸入同時有小精靈向左轉和向右轉的遊戲內容,那就有可能會發生到轉角處,小精靈分裂成兩隻的狀況,因為機器想兩面討好,但這樣的答案我們不能用 , 所以要加入一個Z的機率分佈,讓向左轉向右轉呈現出機率分佈,只產生一組答案。

假設z為random variable → 這樣向左轉或向右轉各1/2的機率

當我們的任務需要一點創造力時,需要每次的答案都不同時,就可以利用generator。



Unconditional generation 

Unconditional具體來說就是將input X拿掉的generator。

我們實際以生成一張二次元圖片為目標作為一個例子。

假設我們的simple distribution Z為normal distribution,那我們的目標就是要透過generator生成複雜的distribution與高維的向量(像是64x64x3的向量)。

*Low-dim vector與 high-dim vector指的就是低維與高維的向量

raw-image


Distriminator

那在GAN裡頭,除了generator之外,我們還要另外訓練Distriminator作為generator的監視者。負責判別從generator生成的二次元圖片是不是真的二次元圖片。

此時,generator與discriminator彼此就會互相砥礪。

generator的目標就是讓Discriminator判別不出來,Discriminator就是要想辦法判別那些是generator創造的。最後就能得到最好的Generator。


具體流程:

  1. 初始化generator與discriminator。
  2. 固定目前的Generator,丟入一堆隨機產生的向量,產生一堆圖片輸出。
  3. 另外找一些真實的二次元圖片,將二次元圖片與generator產生的圖片輸出都丟進Discriminator判斷。
  4. 訓練Discriminator判斷哪些是真實圖片,那些是generator的輸出。可以想像成訓練分類問題,或是當作Regression訓練。
  5. 訓練完Discriminator後,改訓練generator,更新generator的參數,想辦法騙過Discriminator。
  6. 反覆以上流程,就能得到最好的二次元圖片。

*generator訓練的過程與一般network無異,都是採用gradient Decent。

*在訓練的過程不一定只有一組generator或是discriminator,也有可能有好幾層的Generator與Discriminator。


那要如何判別我們training出來的Generator的好壞呢?

  1. 我們直接透過眼睛判別
  2. 從Generator產生的圖片,丟進image classification,如果分類集中度越高,就代表分類器分類得出來,就代表Generator越好。 → 但這種方法會被Mode collapse騙過去。

*Mode collapse是一種generator走偏門的現象,當generator發現discriminator的某個盲點,從此只產生固定的那幾張圖,藉此騙過discriminator的現象,就被稱為mode collapse。除此之外,還有另外一種現象稱為Mode dropping,指的是Generator在產出的圖片中,某些特徵都使用相同的,只為了讓Discriminator能夠判別過,像是人臉都一樣,這樣多樣性就很小。

最後在了解了unconditional Generation之後,我們就可以加入input X,變成conditional Generation。Input X就會變成我們生成圖片的條件,結合我們設定的簡單機率分布,生成圖片。

那目前大多使用的訓練方式,就是將GAN結合supervised learning的方式訓練,除了生成圖片外,也希望與我們的條件X越接近越好。



但在訓練過程中,如果有其中一方停下來,就會無法繼續訓練,這也導致GAN本身是非常難訓練的model。

除此之外,我們回過頭看,之前篇章聊到的Transformer中的Decoder其實也是一種Generator,可以算是GAN在sequence上的訓練。但同樣的,如果在訓練的過程中發現,Decoder輸出的distribution與實際圖片之間的差距很小,就很難使用gradient decent改善參數,那就會很難Train GAN。

為了解決這問題,就有人提出Pre-train的概念。這一部分就牽扯到的BERT與GPT的部分,等到下一篇,我們再來好好討論~


Cycle GAN

那前面我們訓練GAN的方式都是supervised learning,也就是有參考答案來比較。但如果我們完全沒有參考的output Y(unsupervised learning)的話呢?在這樣的情況下,Generator有可能只確保在Discriminator上拿到高分就好,那就可能導致Generator都只產生一樣的圖,或是用偏門的方式過關,這樣就達不到訓練的效果。

那解決的方式就是可以使用cycle GAN的方式training。

Cycle GAN 的原理就是除了原有的Generator1以外,我們還額外增加一個Generator2,用來將Generator1輸出的vector還原成原有的圖片Y。

接著我們將還原的圖片Y與原有的圖片X比較,目標是越接近越好。

額外增加的Generator2作為條件,就能限制Generator1往正確的訓練過程。

*不同的learning方式整理:

supervised: 一般來說我們需要有成對的X與Y,我們才能訓練Network。

semi-supervised: 我們有一堆X與一堆Y,有一些成對,有一些沒有成對。

unsupervised: 完全沒有成對的資料。

raw-image


那以上就是GAN的知識整理,我們下一篇見~




avatar-img
1會員
37內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
dab戴伯的沙龍 的其他內容
本文介紹了Transformer中的Encoder Decoder與Cross Attention的運作方式以及的應用。涉及self-attention、autoRegressive Decoder、Non-AutoRegressive Decoder、Cross Attention等概念。
本文介紹了self-attention在處理不固定大小輸入值時的應用,並討論瞭如何計算self-attention以及transformer中的multi-head self-attention。此外,文章還探討了在語音辨識和圖片處理中使用self-attention的方法,以及與CNN的比較。
卷積神經網路(CNN)是一種專門用於影像相關應用的神經網路。本文介紹了CNN在影像辨識中的應用,包括圖片的組成、Receptive Field、Parameter Sharing、以及Pooling等技術。通過本文,讀者將瞭解CNN在影像辨識領域的優勢和運作原理。
本文介紹了在深度學習中使用Batch Normalization來解決error surface複雜性的問題。通過特徵歸一化來加速收斂速度和訓練順利程度。同時,也提到了在測試階段使用moving average計算平均值和標準差的方法。
瞭解如何透過Regression實作Classification,使用one-hot vector表示不同的類別,並透過乘上不同的Weight和加上不同的bias來得到三個數值形成向量。同時通過softmax的方式得到最終的y'值,並探討使用Cross-entropy來計算類別的loss。
瞭解梯度下降算法中的學習速率調整,包括為什麼需要動態的學習速率、Root Mean Square、RMSProp、最常用的optimization策略Adam,以及如何進行Learning rate Scheduling。
本文介紹了Transformer中的Encoder Decoder與Cross Attention的運作方式以及的應用。涉及self-attention、autoRegressive Decoder、Non-AutoRegressive Decoder、Cross Attention等概念。
本文介紹了self-attention在處理不固定大小輸入值時的應用,並討論瞭如何計算self-attention以及transformer中的multi-head self-attention。此外,文章還探討了在語音辨識和圖片處理中使用self-attention的方法,以及與CNN的比較。
卷積神經網路(CNN)是一種專門用於影像相關應用的神經網路。本文介紹了CNN在影像辨識中的應用,包括圖片的組成、Receptive Field、Parameter Sharing、以及Pooling等技術。通過本文,讀者將瞭解CNN在影像辨識領域的優勢和運作原理。
本文介紹了在深度學習中使用Batch Normalization來解決error surface複雜性的問題。通過特徵歸一化來加速收斂速度和訓練順利程度。同時,也提到了在測試階段使用moving average計算平均值和標準差的方法。
瞭解如何透過Regression實作Classification,使用one-hot vector表示不同的類別,並透過乘上不同的Weight和加上不同的bias來得到三個數值形成向量。同時通過softmax的方式得到最終的y'值,並探討使用Cross-entropy來計算類別的loss。
瞭解梯度下降算法中的學習速率調整,包括為什麼需要動態的學習速率、Root Mean Square、RMSProp、最常用的optimization策略Adam,以及如何進行Learning rate Scheduling。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
呈上篇介紹如何訓練模型,此篇就主要介紹如何利用訓練好的模型來生成圖片 [深度學習][Python]DCGAN訓練生成手寫阿拉伯數字_生成篇 生成的結果 生成的圖片大小會根據,當初設置的生成器輸出大小來決定,當你使用生成對抗網絡(GAN)生成圖像時,生成器模型的最後一層通常會決定生成圖
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文將延續上一篇文章,經由訓練好的GAN模型中的生成器來生成圖片 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 [深度學習][Python]訓練CNN的GAN模型來生成圖片_訓練篇 相較之下CNN的GAN生成的效果比較好,但模型也相對比較複雜,訓練時間花的也比較
Thumbnail
延續上一篇訓練GAM模型,這次我們讓神經網路更多層更複雜一點,來看訓練生成的圖片是否效果會更好。 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 資料集分割處理的部分在延續上篇文章,從第五點開始後修改即可,前面都一樣 訓練過程,比較圖 是不是CNN的效果比MLP還要好,
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
VQGAN是一種基於GAN(生成對抗式網路)的生成式模型,可以創造新的、逼真的圖像或修改已有圖像。本論文介紹了改進VQGAN用於StableDiffusion中的新方法架構,並提出了一種新的非對稱式VQGAN,具有更強的解碼器和兩個設計條件解碼器。論文下方另附相關資料連結。
Thumbnail
這篇文章介紹瞭如何利用生成式AI(GenAI)來提高學習效率,包括文章重點整理、完善知識體系、客製化學習回饋、提供多元觀點等方法。同時提醒使用者應注意內容的信效度,保持學術誠信,適當運用GenAI能大幅提升工作效率。
Thumbnail
現AI時代我們常見的生成影像是如何製作出來的,或許你已經開始熟悉AI“假臉”的風格。但由于現在網路上大量流傳的多數是以DALL-E或是Stable Diffiusion+幾個特定的LoRA所生成的結果。以至於人們越來越有識別真假照片的能力。但或許你不知道的是,早在幾年前純粹用GAN生成技術所產出的人
Thumbnail
生成式AI(Generative AI)是近年來人工智慧領域中備受矚目的技術之一。它以機器學習為基礎,通過學習大量數據中的模式和關係,能夠生成各種新的內容,涵蓋文字、圖像、音訊等多個領域。本文將深入探討生成式AI的原理、優缺點以及應用範疇。
Thumbnail
生成式人工智慧(AI)已成為當前科技領域的一大熱點,其能力不僅限於模擬人類智能,更能在多種非傳統計算任務中創造前所未有的內容。這篇文章將深入探討生成式AI的理論基礎、實際應用、代碼實踐,以及其商業應用、工具和公司等方面,提供一個全面的視角來了解這一迅速發展的領域。
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
呈上篇介紹如何訓練模型,此篇就主要介紹如何利用訓練好的模型來生成圖片 [深度學習][Python]DCGAN訓練生成手寫阿拉伯數字_生成篇 生成的結果 生成的圖片大小會根據,當初設置的生成器輸出大小來決定,當你使用生成對抗網絡(GAN)生成圖像時,生成器模型的最後一層通常會決定生成圖
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文將延續上一篇文章,經由訓練好的GAN模型中的生成器來生成圖片 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 [深度學習][Python]訓練CNN的GAN模型來生成圖片_訓練篇 相較之下CNN的GAN生成的效果比較好,但模型也相對比較複雜,訓練時間花的也比較
Thumbnail
延續上一篇訓練GAM模型,這次我們讓神經網路更多層更複雜一點,來看訓練生成的圖片是否效果會更好。 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 資料集分割處理的部分在延續上篇文章,從第五點開始後修改即可,前面都一樣 訓練過程,比較圖 是不是CNN的效果比MLP還要好,
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
VQGAN是一種基於GAN(生成對抗式網路)的生成式模型,可以創造新的、逼真的圖像或修改已有圖像。本論文介紹了改進VQGAN用於StableDiffusion中的新方法架構,並提出了一種新的非對稱式VQGAN,具有更強的解碼器和兩個設計條件解碼器。論文下方另附相關資料連結。
Thumbnail
這篇文章介紹瞭如何利用生成式AI(GenAI)來提高學習效率,包括文章重點整理、完善知識體系、客製化學習回饋、提供多元觀點等方法。同時提醒使用者應注意內容的信效度,保持學術誠信,適當運用GenAI能大幅提升工作效率。
Thumbnail
現AI時代我們常見的生成影像是如何製作出來的,或許你已經開始熟悉AI“假臉”的風格。但由于現在網路上大量流傳的多數是以DALL-E或是Stable Diffiusion+幾個特定的LoRA所生成的結果。以至於人們越來越有識別真假照片的能力。但或許你不知道的是,早在幾年前純粹用GAN生成技術所產出的人
Thumbnail
生成式AI(Generative AI)是近年來人工智慧領域中備受矚目的技術之一。它以機器學習為基礎,通過學習大量數據中的模式和關係,能夠生成各種新的內容,涵蓋文字、圖像、音訊等多個領域。本文將深入探討生成式AI的原理、優缺點以及應用範疇。
Thumbnail
生成式人工智慧(AI)已成為當前科技領域的一大熱點,其能力不僅限於模擬人類智能,更能在多種非傳統計算任務中創造前所未有的內容。這篇文章將深入探討生成式AI的理論基礎、實際應用、代碼實踐,以及其商業應用、工具和公司等方面,提供一個全面的視角來了解這一迅速發展的領域。