A. 生成式對抗網路GAN(一)
上面這張圖很好的很好的闡述了生成式對抗網路的結構~~ 博弈論
此圖給出了生成性對抗網路的概述。目前最重要的是要理解GAN是使兩個網路協同工作的一種方式 - 而Generator和Discriminator都有自己的架構。為了更好地理解這個想法的來源,我們需要回憶一些基本的代數並問自己 - 我們怎麼能欺騙一個比大多數人更好地分類圖像的神經網路?
在我們詳細描述GAN之前,讓我們看一下類似的主題。給定一個訓練有素的分類器,我們可以生成一個欺騙網路的樣本嗎?如果我們這樣做,它會是什麼樣子?
事實證明,我們可以。
甚至更多 - 對於幾乎任何給定的圖像分類器,可以將圖像變換為另一個圖像,這將被高度置信地錯誤分類,同時在視覺上與原始圖像無法區分!這種過程稱為對抗性攻擊,生成方法的簡單性解釋了很多關於GAN的內容。
精心計算的示例中的對抗性示例,其目的是錯誤分類。以下是此過程的說明。左邊的熊貓與右邊的熊貓無法區分 - 但它被歸類為長臂猿。
圖像分類器本質上是高維空間中的復雜決策邊界。當然,在對圖像進行分類時,我們無法繪制這個邊界。但我們可以安全地假設,當訓練結束時,網路並不是針對所有圖像進行推廣的 - 僅針對我們在訓練集中的那些圖像。這種概括可能不是現實生活的良好近似。換句話說,它適用於我們的數據 - 我們將利用它。
讓我們開始為圖像添加隨機雜訊並使其非常接近零。我們可以通過控制雜訊的L2范數來實現這一點。數學符號不應該讓您擔心 - 出於所有實際目的,您可以將L2范數視為向量的長度。這里的訣竅是你在圖像中擁有的像素越多 - 它的平均L2范數就越大。因此,如果雜訊的范數足夠低,您可以預期它在視覺上難以察覺,而損壞的圖像將遠離矢量空間中的原始圖像。
為什麼?
好吧,如果HxW圖像是矢量,那麼我們添加到它的HxW雜訊也是矢量。原始圖像具有相當密集的各種顏色 - 這增加了L2規范。另一方面,雜訊是一組視覺上混亂的相當蒼白的像素 - 一個小范數的矢量。最後,我們將它們添加到一起,為損壞的圖像獲取新的矢量,這與原始圖像相對接近 - 但卻錯誤分類!
現在,如果原始類 Dog 的決策邊界不是那麼遠(就L2范數而言),這種加性雜訊將新圖像置於決策邊界之外。
您不需要成為世界級拓撲學家來理解某些類別的流形或決策邊界。由於每個圖像只是高維空間中的矢量,因此在其上訓練的分類器將「所有猴子」定義為「由隱藏參數描述的該高維斑點中的所有圖像矢量」。我們將該blob稱為該類的決策邊界。
好的,所以,你說我們可以通過添加隨機雜訊輕松欺騙網路。它與生成新圖像有什麼關系?
現在我們假設有兩個結構模型,相當於兩個神經網路:
這是關於判別網路D和生成網路G的價值函數(Value Function),訓練網路D使得最大概率地分對訓練樣本的標簽(最大化log D(x)),訓練網路G最小化log(1 – D(G(z))),即最大化D的損失。訓練過程中固定一方,更新另一個網路的參數,交替迭代,使得對方的錯誤最大化,最終,G 能估測出樣本數據的分布。生成模型G隱式地定義了一個概率分布Pg,我們希望Pg 收斂到數據真實分布Pdata。論文證明了這個極小化極大博弈當且僅當Pg = Pdata時存在最優解,即達到納什均衡,此時生成模型G恢復了訓練數據的分布,判別模型D的准確率等於50%。
接著上面最後一個問題:怎麼才能生成我指定的圖像呢?
指定標簽去訓練
顧名思義就是把標簽也帶進公式,得到有條件的公式:
具體怎麼讓CGAN更好的優化,這里不解釋,就是平常的優化網路了。
參考文章:
本文大部分翻譯此外文
通俗易懂
小博客的總結
唐宇迪大神
B. GAN生成對抗網路(一)
GAN(Generative Adversarial Networks)是兩個網路的的組合, 一個網路生成模擬數據, 另一個網路判斷生成的數據是真實的還是模擬的。生成模擬數據的網路要不斷優化自己讓判別的網路判斷不出來, 判別的網路也要優化自己讓自己判斷得更准確。 二者關系形成對抗博弈,因此叫 對抗神經網路 (生成對抗網路)。實驗證明, 利用這種網路間的對抗關系所形成的網路, 在無監督及半監督領域取得了很好的效果, 可以算是用網路來監督網路的一個自學習過程。在GAN發明之前,變分自編碼器被認為是理論完美、實現簡單,使用神經網路訓練起來很穩定, 生成的圖片逼近度也較高, 但是人類還是可以很輕易地分辨出真實圖片與機器生成的圖片。
生成對抗網路包含了 2 個子網路: 生成網路(Generator, G)和判別網路(Discriminator,D), 其中生成網路負責學習樣本的真實分布,判別網路負責將生成網路采樣的樣本與真實樣本區分開來。
生成網路 G(𝐳) 生成網路 G 和自編碼器的 Decoder 功能類似, 從先驗分布 中采樣隱藏變數 ,通過生成網路 G 參數化的 分布, 獲得生成樣本 ,如下圖所示。 其中隱藏變數𝒛的先驗分布 可以假設屬於某中已知的分布,比如多元均勻分布 。
可以用深度神經網路來參數化, 如下圖所示, 從均勻分布 中采樣出隱藏變數𝒛, 經過多層轉置卷積層網路參數化的 分布中采樣出樣本 。
判別網路 D(𝒙) 判別網路和普通的二分類網路功能類似,它接受輸入樣本𝒙,包含了采樣自真實數據分布 的樣本 ,也包含了采樣自生成網路的假樣本 , 和 共同組成了判別網路的訓練數據集。判別網路輸出為𝒙屬於真實樣本的概率 ,我們把所有真實樣本 的標簽標注為1,所有生成網路產生的樣本 標注為0, 通過最小化判別網路預測值與標簽之間的誤差來優化判別網路參數。
我們的目標很明確, 既要不斷提升判斷器辨別真假圖像樣本的能力, 又要不斷提升生成器生成更加逼真的圖像,使判別器越來越難判別。
對於判別網路 D ,它的目標是能夠很好地分辨出真樣本 與假樣本 。即最小化圖片的預測值和真實值之間的交叉熵損失函數:
其中 代表真實樣本 在判別網路 的輸出, 為判別網路的參數集, 為生成樣本 在判別網路的輸出, 為 的標簽,由於真實樣本標注為真,故 , 為生成樣本的 的標簽,由於生成樣本標注為假,故 。 根據二分類問題的交叉熵損失函數定義:
因此判別網路的優化目標是:
去掉 中的負號,把 問題轉換為 問題,並寫為期望形式:
對於生成網路G(𝒛) ,我們希望 能夠很好地騙過判別網路 , 假樣本 在判別網路的輸出越接近真實的標簽越好。也就是說,在訓練生成網路時, 希望判別網路的輸出 越逼近 1 越好,此時的交叉熵損失函數:
把 問題轉換為 問題,並寫為期望形式:
再等價轉化為:
GAN的優化過程不像通常的求損失函數的最小值, 而是保持生成與判別兩股力量的動態平衡。 因此, 其訓練過程要比一般神經網路難很多。
把判別網路的目標和生成網路的目標合並,寫成min-max形式:
原GAN論文中:
這里為了好理解,把各個符號梳理的更清晰了,注意符號和網路參數的對應。
理想情況下 , 會有更精確的鑒別真偽數據的能力,經過大量次數的迭代訓練會使 盡可能模擬出以假亂真的樣本, 最終整個GAN會達到所謂的納什均衡, 即 對於生成樣本和真實樣本鑒別結果為正確率和錯誤率各佔50%。下面具體從理論層面來推導。
現在從理論層面進行分析, 通過博弈學習的訓練方式,生成器 G 和判別器 D 分別會達到什麼狀態。 具體地,來看以下 2 個問題:
首先我們通過 一維正態分布的例子給出一個直觀的解釋,如下圖所示,黑色虛線曲線代表了真實數據的分布 , 為某正態分布 , 綠色實線代表了生成網路學習到的分布 , 藍色虛線代表了判別器的決策邊界曲線, 圖中(a)(b)(c)(d)分別代表了生成網路的學習軌跡。在初始狀態,如圖 (a)所示, 分布與 差異較大,判別器可以很輕松地學習到決策邊界,即圖(a)中的藍色虛線,將來自 的采樣點判定為 0, 中的采樣點判定為 1。 隨著生成網路的分布 越來越逼近真實分布 ,判別器越來越困難將真假樣本區分開,如圖 (b)(c)所示。 最後,生成網路性能達到最佳,學習到的分布 ,此時從生成網路中采樣的樣本非常逼真, 判別器無法區分,即判定為真假樣本的概率均等,如圖(d)所示。
固定生成器G的參數 ,判別器D最佳能達到的狀態:
證明: 對於給定的生成器G,要讓判別器D達到最優,我們的目標是最大化損失函數,其積分形式為:
對於給定的 ,真實分布始終是固定的,所以 和 都是定值,於是對於判別器D,要找出
的最大值,其中 是判別器網路參數,對於函數 ,不難得到 在 處取得極大值且是最大值。因此可得 的極值點也為
故判別器 能達到的最佳狀態為定理中給出的式子。
現在考慮第二個問題。
JS 散度(Jensen–Shannon divergence)
對於KL散度, ,是不對稱的。但JS散度是對稱的。
當 達到 時,考慮此時 和 的 散度:
考慮到判別網路到達 時,此時的損失函數為:
於是我們可以得到:
對於生成網路 而言,目標是最小化損失函數,由於 ,因此 取得最小值僅在 時(此時 ), 取得最小值:
此時生成網路達到 狀態是:
即 的學到的分布 與真實分布 一致,網路達到納什均衡點,此時:
即對於生成器生成的圖像有0.5的概率被判定為真,也有0.5的概率被判定為假。
C. LSGAN:最小二乘生成對抗網路
解決問題: 解決傳統 GAN 生成圖片質量不高,訓練不穩定的問題。
做法: 將傳統 GAN 的 交叉熵損失函數 換成 最小二乘損失函數
本篇主要通過GAN對比來學習LSGAN
通過例子介紹:
使用 位於決策邊界正確側 但仍然 遠離真實數據的假樣本 更新生成器時,交叉熵損失函數將導致梯度消失的問題。
如圖 (b)所示,當我們使用 假樣本 (品紅色)通過使鑒別器相信它們來自真實數據來更新生成器時,它 幾乎不會引起錯誤 ,因為它們在正確的一側,既決策邊界的真實數據面。
然而,這些樣本 仍然離真實數據很遠 ,我們想把它們拉得接近真實數據。
問題總結:在交叉熵損失函數情況下,判別器判定真實面的假數據距離真實數據較遠,效果不足。
基於這一觀察,我們提出了最小二乘生成對抗網路,它採用 最小二乘損失函數作為鑒別器 。
最小二乘損失函數能夠 將偽樣本移向決策邊界 ,
因為最小二乘損失函數會 懲罰位於決策邊界正確一側很遠的樣本 。
如圖 (c)所示,最小二乘損失函數將懲罰假樣本(品紅色),並 將它們拉向決策邊界 ,使它們被正確分類。
基於這一特性,最小二乘能夠生成更接近真實數據的樣本
總結概括
最小二乘: 最小二乘損失與交叉熵損失相比,優勢在於生成樣本在欺騙判別器的前提下同時讓生成器把 距離決策邊界比較遠 的生成圖片拉向 決策邊界 ,這樣保證了生成高質量的樣本。
交叉熵: 以交叉熵作為損失,會使得生成器 不會再優化那些被判別器識別為真實圖片的生成圖片 ,即使這些生成圖片距離判別器的決策邊界仍然很遠,也就是距離真實數據比較遠,因為此時的交叉熵損失已經很小,生成器完成了為它設計的目標。
LSGAN的缺陷: 在於它並 沒有解決當判別器足夠優秀時生成器發生梯度彌散的問題
梯度彌散: 使用反向傳播演算法傳播梯度的時候,隨著傳播深度的增加, 梯度的幅度會急劇減小,會導致淺層神經元的權重更新非常緩慢 ,不能有效學習。
這樣一來,深層模型也就變成了前幾層相對固定,只能改變最後幾層的淺層模型。
GANs 的損失函數:
LSGANs的損失函數:
最小二乘
公式注釋:
鑒別器 D
生成器 G
G 的目標是學習數據 x 上的分布 pg。
G 服從均勻或高斯分布 pz(z)對輸入變數 z 進行采樣開始,然後將輸入變數 z 映射到數據空間 G(z; θg)。
D 是分類器 D(x; θd),其目的是識別圖像是來自訓練數據還是來自g。
z 為噪音,它可以服從歸一化或者高斯分布,為真實數據 x 服從的概率分布,為 z 服從的概率分布。為期望值,同為期望值。
假設我們對鑒別器使用 a-b 編碼方案 ,其中a 和b 分別是假數據和真實數據的標簽。
c 表示 G 預測的D 相信的假數據的值。
最小二乘法的具體優點:
1.決策邊界固定(鑒別器參數固定),生成樣本靠近決策邊界,更接近真實數據。
2.懲罰遠離決策邊界的樣本時,可以在更新生成器時生成更多的梯度,這反過來緩解了梯度消失的問題(梯度消失:前面隱藏層的學習速率低於後面隱藏層的學習速率,即隨著隱藏層數目的增加,分類准確率反而下降)
GAN中:最小化等式 1 產生最小化詹森-香農散度:
LSGAN:探討LSGAN與f散度的關系
公式解釋:(下文關於a-b編碼證明a,b,c條件)
將
加入到
並不會改變最佳值,因為並沒有引入含有G的參數
從而我們可以推出G固定情況下的最佳鑒別器:
使用 pd 來表示 pdata,來重新表示4式
此處不詳細證明
化簡為:
如果: b-c = 1, b-a = 2,則
是皮爾遜散度,總之可證,當 a,b,c滿足b-c = 1 和 b-a = 2的條件,則最小化等式 4 會使 pd + pg 和 2pg 之間的皮爾遜 χ2 散度最小化。
採用 a-b編碼方案:
由上述證明可設a = 1, b = 1, c = 0
採用 0-1二進制編碼方案 :
兩式接近,但此處,論文作者採用a-b編碼方式,來實現實驗:
帶上其中一個實驗:
參考論文:Mao X D, Li Q, Xie H R, et al. Least squares generative
adversarial networks[C]//Proceedings of the 2017 IEEE
International Conference on Computer Vision, Venice, Oct
22- 29, 2017. Washington: IEEE Computer Society, 2017:
2813-2821.
D. 一文看懂四種基本的神經網路架構
原文鏈接:
http://blackblog.tech/2018/02/23/Eight-Neural-Network/
更多干貨就在我的個人博客 http://blackblog.tech 歡迎關注
剛剛入門神經網路,往往會對眾多的神經網路架構感到困惑,神經網路看起來復雜多樣,但是這么多架構無非也就是三類,前饋神經網路,循環網路,對稱連接網路,本文將介紹四種常見的神經網路,分別是CNN,RNN,DBN,GAN。通過這四種基本的神經網路架構,我們來對神經網路進行一定的了解。
神經網路是機器學習中的一種模型,是一種模仿動物神經網路行為特徵,進行分布式並行信息處理的演算法數學模型。這種網路依靠系統的復雜程度,通過調整內部大量節點之間相互連接的關系,從而達到處理信息的目的。
一般來說,神經網路的架構可以分為三類:
前饋神經網路:
這是實際應用中最常見的神經網路類型。第一層是輸入,最後一層是輸出。如果有多個隱藏層,我們稱之為「深度」神經網路。他們計算出一系列改變樣本相似性的變換。各層神經元的活動是前一層活動的非線性函數。
循環網路:
循環網路在他們的連接圖中定向了循環,這意味著你可以按照箭頭回到你開始的地方。他們可以有復雜的動態,使其很難訓練。他們更具有生物真實性。
循環網路的目的使用來處理序列數據。在傳統的神經網路模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連接的,每層之間的節點是無連接的。但是這種普通的神經網路對於很多問題卻無能無力。例如,你要預測句子的下一個單詞是什麼,一般需要用到前面的單詞,因為一個句子中前後單詞並不是獨立的。
循環神經網路,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式為網路會對前面的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點不再無連接而是有連接的,並且隱藏層的輸入不僅包括輸入層的輸出還包括上一時刻隱藏層的輸出。
對稱連接網路:
對稱連接網路有點像循環網路,但是單元之間的連接是對稱的(它們在兩個方向上權重相同)。比起循環網路,對稱連接網路更容易分析。這個網路中有更多的限制,因為它們遵守能量函數定律。沒有隱藏單元的對稱連接網路被稱為「Hopfield 網路」。有隱藏單元的對稱連接的網路被稱為玻爾茲曼機。
其實之前的帖子講過一些關於感知機的內容,這里再復述一下。
首先還是這張圖
這是一個M-P神經元
一個神經元有n個輸入,每一個輸入對應一個權值w,神經元內會對輸入與權重做乘法後求和,求和的結果與偏置做差,最終將結果放入激活函數中,由激活函數給出最後的輸出,輸出往往是二進制的,0 狀態代表抑制,1 狀態代表激活。
可以把感知機看作是 n 維實例空間中的超平面決策面,對於超平面一側的樣本,感知器輸出 1,對於另一側的實例輸出 0,這個決策超平面方程是 w⋅x=0。 那些可以被某一個超平面分割的正反樣例集合稱為線性可分(linearly separable)樣例集合,它們就可以使用圖中的感知機表示。
與、或、非問題都是線性可分的問題,使用一個有兩輸入的感知機能容易地表示,而異或並不是一個線性可分的問題,所以使用單層感知機是不行的,這時候就要使用多層感知機來解決疑惑問題了。
如果我們要訓練一個感知機,應該怎麼辦呢?
我們會從隨機的權值開始,反復地應用這個感知機到每個訓練樣例,只要它誤分類樣例就修改感知機的權值。重復這個過程,直到感知機正確分類所有的樣例。每一步根據感知機訓練法則來修改權值,也就是修改與輸入 xi 對應的權 wi,法則如下:
這里 t 是當前訓練樣例的目標輸出,o 是感知機的輸出,η 是一個正的常數稱為學習速率。學習速率的作用是緩和每一步調整權的程度,它通常被設為一個小的數值(例如 0.1),而且有時會使其隨著權調整次數的增加而衰減。
多層感知機,或者說是多層神經網路無非就是在輸入層與輸出層之間加了多個隱藏層而已,後續的CNN,DBN等神經網路只不過是將重新設計了每一層的類型。感知機可以說是神經網路的基礎,後續更為復雜的神經網路都離不開最簡單的感知機的模型,
談到機器學習,我們往往還會跟上一個詞語,叫做模式識別,但是真實環境中的模式識別往往會出現各種問題。比如:
圖像分割:真實場景中總是摻雜著其它物體。很難判斷哪些部分屬於同一個對象。對象的某些部分可以隱藏在其他對象的後面。
物體光照:像素的強度被光照強烈影響。
圖像變形:物體可以以各種非仿射方式變形。例如,手寫也可以有一個大的圓圈或只是一個尖頭。
情景支持:物體所屬類別通常由它們的使用方式來定義。例如,椅子是為了讓人們坐在上面而設計的,因此它們具有各種各樣的物理形狀。
卷積神經網路與普通神經網路的區別在於,卷積神經網路包含了一個由卷積層和子采樣層構成的特徵抽取器。在卷積神經網路的卷積層中,一個神經元只與部分鄰層神經元連接。在CNN的一個卷積層中,通常包含若干個特徵平面(featureMap),每個特徵平面由一些矩形排列的的神經元組成,同一特徵平面的神經元共享權值,這里共享的權值就是卷積核。卷積核一般以隨機小數矩陣的形式初始化,在網路的訓練過程中卷積核將學習得到合理的權值。共享權值(卷積核)帶來的直接好處是減少網路各層之間的連接,同時又降低了過擬合的風險。子采樣也叫做池化(pooling),通常有均值子采樣(mean pooling)和最大值子采樣(max pooling)兩種形式。子采樣可以看作一種特殊的卷積過程。卷積和子采樣大大簡化了模型復雜度,減少了模型的參數。
卷積神經網路由三部分構成。第一部分是輸入層。第二部分由n個卷積層和池化層的組合組成。第三部分由一個全連結的多層感知機分類器構成。
這里舉AlexNet為例:
·輸入:224×224大小的圖片,3通道
·第一層卷積:11×11大小的卷積核96個,每個GPU上48個。
·第一層max-pooling:2×2的核。
·第二層卷積:5×5卷積核256個,每個GPU上128個。
·第二層max-pooling:2×2的核。
·第三層卷積:與上一層是全連接,3*3的卷積核384個。分到兩個GPU上個192個。
·第四層卷積:3×3的卷積核384個,兩個GPU各192個。該層與上一層連接沒有經過pooling層。
·第五層卷積:3×3的卷積核256個,兩個GPU上個128個。
·第五層max-pooling:2×2的核。
·第一層全連接:4096維,將第五層max-pooling的輸出連接成為一個一維向量,作為該層的輸入。
·第二層全連接:4096維
·Softmax層:輸出為1000,輸出的每一維都是圖片屬於該類別的概率。
卷積神經網路在模式識別領域有著重要應用,當然這里只是對卷積神經網路做了最簡單的講解,卷積神經網路中仍然有很多知識,比如局部感受野,權值共享,多卷積核等內容,後續有機會再進行講解。
傳統的神經網路對於很多問題難以處理,比如你要預測句子的下一個單詞是什麼,一般需要用到前面的單詞,因為一個句子中前後單詞並不是獨立的。RNN之所以稱為循環神經網路,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式為網路會對前面的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點不再無連接而是有連接的,並且隱藏層的輸入不僅包括輸入層的輸出還包括上一時刻隱藏層的輸出。理論上,RNN能夠對任何長度的序列數據進行處理。
這是一個簡單的RNN的結構,可以看到隱藏層自己是可以跟自己進行連接的。
那麼RNN為什麼隱藏層能夠看到上一刻的隱藏層的輸出呢,其實我們把這個網路展開來開就很清晰了。
從上面的公式我們可以看出,循環層和全連接層的區別就是循環層多了一個權重矩陣 W。
如果反復把式2帶入到式1,我們將得到:
在講DBN之前,我們需要對DBN的基本組成單位有一定的了解,那就是RBM,受限玻爾茲曼機。
首先什麼是玻爾茲曼機?
[圖片上傳失敗...(image-d36b31-1519636788074)]
如圖所示為一個玻爾茲曼機,其藍色節點為隱層,白色節點為輸入層。
玻爾茲曼機和遞歸神經網路相比,區別體現在以下幾點:
1、遞歸神經網路本質是學習一個函數,因此有輸入和輸出層的概念,而玻爾茲曼機的用處在於學習一組數據的「內在表示」,因此其沒有輸出層的概念。
2、遞歸神經網路各節點鏈接為有向環,而玻爾茲曼機各節點連接成無向完全圖。
而受限玻爾茲曼機是什麼呢?
最簡單的來說就是加入了限制,這個限制就是將完全圖變成了二分圖。即由一個顯層和一個隱層構成,顯層與隱層的神經元之間為雙向全連接。
h表示隱藏層,v表示顯層
在RBM中,任意兩個相連的神經元之間有一個權值w表示其連接強度,每個神經元自身有一個偏置系數b(對顯層神經元)和c(對隱層神經元)來表示其自身權重。
具體的公式推導在這里就不展示了
DBN是一個概率生成模型,與傳統的判別模型的神經網路相對,生成模型是建立一個觀察數據和標簽之間的聯合分布,對P(Observation|Label)和 P(Label|Observation)都做了評估,而判別模型僅僅而已評估了後者,也就是P(Label|Observation)。
DBN由多個限制玻爾茲曼機(Restricted Boltzmann Machines)層組成,一個典型的神經網路類型如圖所示。這些網路被「限制」為一個可視層和一個隱層,層間存在連接,但層內的單元間不存在連接。隱層單元被訓練去捕捉在可視層表現出來的高階數據的相關性。
生成對抗網路其實在之前的帖子中做過講解,這里在說明一下。
生成對抗網路的目標在於生成,我們傳統的網路結構往往都是判別模型,即判斷一個樣本的真實性。而生成模型能夠根據所提供的樣本生成類似的新樣本,注意這些樣本是由計算機學習而來的。
GAN一般由兩個網路組成,生成模型網路,判別模型網路。
生成模型 G 捕捉樣本數據的分布,用服從某一分布(均勻分布,高斯分布等)的雜訊 z 生成一個類似真實訓練數據的樣本,追求效果是越像真實樣本越好;判別模型 D 是一個二分類器,估計一個樣本來自於訓練數據(而非生成數據)的概率,如果樣本來自於真實的訓練數據,D 輸出大概率,否則,D 輸出小概率。
舉個例子:生成網路 G 好比假幣製造團伙,專門製造假幣,判別網路 D 好比警察,專門檢測使用的貨幣是真幣還是假幣,G 的目標是想方設法生成和真幣一樣的貨幣,使得 D 判別不出來,D 的目標是想方設法檢測出來 G 生成的假幣。
傳統的判別網路:
生成對抗網路:
下面展示一個cDCGAN的例子(前面帖子中寫過的)
生成網路
判別網路
最終結果,使用MNIST作為初始樣本,通過學習後生成的數字,可以看到學習的效果還是不錯的。
本文非常簡單的介紹了四種神經網路的架構,CNN,RNN,DBN,GAN。當然也僅僅是簡單的介紹,並沒有深層次講解其內涵。這四種神經網路的架構十分常見,應用也十分廣泛。當然關於神經網路的知識,不可能幾篇帖子就講解完,這里知識講解一些基礎知識,幫助大家快速入(zhuang)門(bi)。後面的帖子將對深度自動編碼器,Hopfield 網路長短期記憶網路(LSTM)進行講解。