GAN概述
Generative adversarial network(GAN)生成對抗網絡
1、GAN的初衷就是生成不存在于真實世界的數據。類似于使得AI具有創造力或者想象力。
應用場景:
①AI作家、AI畫家等需要創造力的AI體
②將模糊圖變清晰(去雨、去霧、去抖動、去馬賽克等),這需要AI具有所謂的“想象力”,能腦補情節
③進行數據增強,根據已有數據生成更多數據供以feed,可以減緩模型過擬合現象
2、GAN原理
GAN的兩大護法:G、D
G是generator,生成器:?負責憑空捏造數據出來
D是discriminator,判別器:?負責判斷數據是不是真數據
在最原始的GAN論文里,G和D都是兩個多層感知機網絡。
? ? ? 以圖像為例,解釋上圖,z是隨機噪聲(就是隨機生成的一些數,也即是GAN生成圖像的源頭)。D通過真圖和假圖的數據(相當于天然label),進行一個二分類神經網絡訓練。G根據一串隨機數就可以捏造一個“假圖像”出來,用這些假圖去欺騙D,D負責辨別這是真圖還是假圖,會給出一個score。比如,G生成了一張圖,在D這里得分很高,那證明G是很成功的;如果D能有效區分真假圖,則G的效果還不太好,需要調整參數。GAN就是這么一個博弈的過程。
3、GAN訓練
? ? ? GAN的訓練遵循DGDGDG的順序,其中DG為一輪,先訓練D再訓練G,可以看出不是等所有的D訓練好以后,才開始訓練G,因為D的訓練也需要上一輪中G的輸出值作為輸入。
? ? ? 設DGDGDG為D(1)G(1)D(2)G(2)D(3)G(3),以訓練D(2)G(2)為例。
(1)訓練D(2)
? ? ? 將G(1)產生的圖片和真實圖片直接拼接在一起作為x,按順序擺放0和1,假圖對應0,真圖對應1。然后就可以通過x輸入生成一個score(從0到1之間的數),通過score和y組成的損失函數,就可以進行梯度反傳從而進行訓練。
(2)訓練G(2)
? ? ? 輸入一組隨機向量,就可以在G(2)生成一張圖,通過D(2)對生成的這張圖進行打分。score=1就是DG系統需要優化的目標,score和y=1之間的差異可以組成損失函數,然后可以反向傳播梯度從而進行訓練。注意,這里的D(2)的參數是不可訓練的。這樣就能保證G(2)的訓練是符合D(2)的打分標準的。這就好比:如果你參加考試,你別指望能改變老師的評分標準。
4、整個GAN的整個過程都是無監督的(后面會有監督性。如何理解其是無監督的?
? ? ? 給的真圖都是沒有經過人工標注的,系統只知道是真實的圖片,并不知道來的圖片是什么玩意,比如全是人臉,它只需要分辨真假。G也不知道自己生成的是什么玩意,反正就是學真圖片的樣子騙D。正由于GAN的無監督,在生成過程中,G就會按照自己的意思天馬行空生成一些“詭異”的圖片,可怕的是D還能給一個很高的分數。比如,生成人臉極度扭曲的圖片。這就是無監督目的性不強所導致的。有一篇論文conditional GAN就加入了監督性進去,將可控性增強,表現效果也好很多。
?
?
總結
- 上一篇: 常见模块设计--权限管理(一)
- 下一篇: 腾讯云搭建Cpolar内网穿透