生成式對抗網路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
留言分享你的想法!
avatar-img
dab戴伯的沙龍
1會員
37內容數
dab戴伯的沙龍的其他內容
2024/09/03
*本文章為參考李弘毅2021年機器學習課程後的筆記。 在訓練模型的時候,常常會遇到訓練上的問題,像是Loss值太大,或是Test出來的結果不如預期,但我們又不知道模型中到底發生了甚麼事,就跟黑盒子一樣。 因此,感謝李弘毅教授傳授了一套SOP來幫助我們判斷模型是哪裡出了問題,應該要怎麼解決!!
Thumbnail
2024/09/03
*本文章為參考李弘毅2021年機器學習課程後的筆記。 在訓練模型的時候,常常會遇到訓練上的問題,像是Loss值太大,或是Test出來的結果不如預期,但我們又不知道模型中到底發生了甚麼事,就跟黑盒子一樣。 因此,感謝李弘毅教授傳授了一套SOP來幫助我們判斷模型是哪裡出了問題,應該要怎麼解決!!
Thumbnail
2024/05/16
本文介紹自我監督學習的概念和訓練方式,以BERT和GPT為例,深入探討Masking Input及Fine-Tune的實際操作和可應用性。
Thumbnail
2024/05/16
本文介紹自我監督學習的概念和訓練方式,以BERT和GPT為例,深入探討Masking Input及Fine-Tune的實際操作和可應用性。
Thumbnail
2024/05/13
本文介紹了Transformer中的Encoder Decoder與Cross Attention的運作方式以及的應用。涉及self-attention、autoRegressive Decoder、Non-AutoRegressive Decoder、Cross Attention等概念。
2024/05/13
本文介紹了Transformer中的Encoder Decoder與Cross Attention的運作方式以及的應用。涉及self-attention、autoRegressive Decoder、Non-AutoRegressive Decoder、Cross Attention等概念。
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
本系列將討論 LLM 時代中,分散 ML workload 的各種方法。作為系列的第一篇,我們將提及 High-level 的概論,譬如分散式訓練的各種切法、Model Parallelism 的相依問題,以及改善 Network Topology 等課題。
Thumbnail
本系列將討論 LLM 時代中,分散 ML workload 的各種方法。作為系列的第一篇,我們將提及 High-level 的概論,譬如分散式訓練的各種切法、Model Parallelism 的相依問題,以及改善 Network Topology 等課題。
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
延續上一篇訓練GAM模型,這次我們讓神經網路更多層更複雜一點,來看訓練生成的圖片是否效果會更好。 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 資料集分割處理的部分在延續上篇文章,從第五點開始後修改即可,前面都一樣 訓練過程,比較圖 是不是CNN的效果比MLP還要好,
Thumbnail
延續上一篇訓練GAM模型,這次我們讓神經網路更多層更複雜一點,來看訓練生成的圖片是否效果會更好。 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 資料集分割處理的部分在延續上篇文章,從第五點開始後修改即可,前面都一樣 訓練過程,比較圖 是不是CNN的效果比MLP還要好,
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
透過這篇文章,我們將瞭解如何使用PyTorch實作圖神經網絡中的訊息傳遞機制,從定義消息傳遞的類別到實作消息傳遞過程。我們也探討了各種不同的消息傳遞機制,並通過對單次和多次傳遞過程的結果,可以看到節點特徵如何逐步傳遞與更新。
Thumbnail
透過這篇文章,我們將瞭解如何使用PyTorch實作圖神經網絡中的訊息傳遞機制,從定義消息傳遞的類別到實作消息傳遞過程。我們也探討了各種不同的消息傳遞機制,並通過對單次和多次傳遞過程的結果,可以看到節點特徵如何逐步傳遞與更新。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformer 可以透過繼承預訓練模型 (Pretrained Model) 來微調 (Fine-Tune) 以執行下游任務。 Pretrained Mo
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformer 可以透過繼承預訓練模型 (Pretrained Model) 來微調 (Fine-Tune) 以執行下游任務。 Pretrained Mo
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 74 中提到,我們想要建立「Transformer 數學」與「ChatGPT 產生的文字」兩者間的關係。 有鑑於此,我們以句子「
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 74 中提到,我們想要建立「Transformer 數學」與「ChatGPT 產生的文字」兩者間的關係。 有鑑於此,我們以句子「
Thumbnail
這篇文章探討了生成式對抗網路中機率分佈的使用與相關的訓練方式,包括Generator不同的點、Distriminator的訓練過程、生成圖片的條件設定等。此外,也提到了GAN訓練的困難與解決方式以及不同的learning方式。文章內容豐富且詳細,涵蓋了GAN的各個相關面向。
Thumbnail
這篇文章探討了生成式對抗網路中機率分佈的使用與相關的訓練方式,包括Generator不同的點、Distriminator的訓練過程、生成圖片的條件設定等。此外,也提到了GAN訓練的困難與解決方式以及不同的learning方式。文章內容豐富且詳細,涵蓋了GAN的各個相關面向。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News