CNN,GAN,AE和VAE概述

dicksonjyl560101發表於2019-03-03

https://www.toutiao.com/a6643380572892692999/


2019-01-06 21:49:34

CNN

表示卷積神經網路。這是一種特殊型別的神經網路,是為具有空間結構的資料而設計的。例如,具有自然空間順序的影像非常適合於CNN。卷積神經網路由許多“filters”組成,它們對資料進行卷積或滑動,並在每個滑動位置產生啟用。這些啟用產生一個“feature map”,它表示該區域的資料啟用了filter(是一個神經元)的數量。例如,假設我們有一個經過訓練的filter來識別人臉,這些可能是它輸出的feature map:

CNN,GAN,AE和VAE概述

卷積神經網路的特殊之處在於它們在空間上是不變的,這意味著無論影像的顯著部分出現在哪裡,它都將被網路檢測到。這是因為filter權重在影像的不同部分不會改變 - 由於filter在影像上滑動,因此影像的每個部分的權重都相同。

CNN的這種空間不變性不僅適用於二維影像,也適用於三維視訊甚至一維時間序列。CNN也被認為是一種偽迴圈神經網路,因為filter可以在時間步中滑動,而不是資料部分,允許它基於過去的資料點做出決策。

GAN

GAN代表Generative Adversarial Networks。這是一種生成模型,因為它們學會複製您提供的資料的資料分佈,因此可以生成看起來相似的新穎影像。

GAN被稱為“對抗性”的原因是因為它涉及兩個相互競爭的網路。實際上,GAN通常被比作警察(discriminator)和偽造者(generator)的類比。偽造者起初不知道真正的錢是什麼樣的,所以它會產生一些看似完全虛假的錢。對於偽造者來說幸運的是,警察也不知道真正的錢是什麼樣的。

CNN,GAN,AE和VAE概述

但是,當我們有了真實的現金時,警察部門開始教警察真正的錢是什麼樣的,以及偽造者的假錢看起來是什麼樣的,並讓他區分真假錢。

然後,造假者會做更多的練習,並學會讓現金變得更真實一點,最後欺騙警察。

這個迴圈重複了一段時間,直到(理想情況下)警察無法分辨假現金和真實現金之間的區別,因為假現金看起來與真實現金完全一樣。一旦完成,我們就可以使用generator永久地製造假現金。

讓我們將其擴充套件到影像。generator是一個神經網路,它接收隨機變數Z的向量,併產生一個影像,。

discriminator也是一個神經網路,它接收影像,併產生單個輸出p(決定影像是真實的概率)。當p = 1時,discriminator相信影像是真實的,當p = 0時,discriminator認為影像是假的。

discriminator被輸入生成器影像,我們將輸入並且被教導影像是假的。更具體地說,discriminator最大化(1-)。然後,discriminator被輸入真實影像,並且被教導影像是真實的,它最大化()。generator則相反,並試圖使discriminator最大化它認為假影像是真實的概率,因此generator試圖最大化()。一旦我們這樣訓練了一段時間,我們就會開始看到一些非常逼真的照片。

AE

也稱為自動編碼器,它們非常簡單,它們所做的只是輸入,並儘可能地重現輸入。如果我輸入數字“2”的照片,則自動編碼器應輸出完全相同的照片。

CNN,GAN,AE和VAE概述

這看似簡單,毫無意義,但有一些有趣的屬性。我們通常不僅有輸入和輸出層,因為網路只能將畫素從輸入複製到輸出,這是完全沒用的。我們通常在輸入和輸出層之間有一個(或多個)隱藏層,它們充當bottleneck層。

bottleneck可以有多種不同的方式,但我只關注最簡單的方法:擁有更少的隱藏神經元。

如果隱藏層中的神經元小於輸入影像中的畫素數,則網路必須“壓縮”它看到的資料。

這種壓縮意味著只有影像最顯著的特徵才能保留 - 其他一切都是不必要的。在隱藏的神經元中,特徵可以編碼關於資料的大部分資訊。

這使得自動編碼器(理論上)很有用,因為如果我們的監督訓練資料很少,我們就可以給自動編碼器提供一堆未標記的資料,它將學習有用的特徵。然後我們可以將這些特徵放入一個更強大的神經網路中,並在小型監督資料集上進行訓練。儘管監督資料集很小,但它(理論上)仍然可以很好地學習,因為它是由自動編碼器引導的。

不幸的是,自動編碼器並不是他們所宣傳的那樣,這種訓練(稱為預訓練)很少用於自動編碼器。但是,我們可以使 Helmholtz boltzmann machine進行初始權重分配。

VAE

VAE代表變分自動編碼器。根據它的名字,你可以說VAE與自動編碼器非常相似,從技術上講,它有一個主要的變化。

自編碼器只需要複製輸入,而變分自編碼器則需要複製輸出,同時將其隱藏的神經元保持在特定的分佈。這意味著,網路的輸出將不得不適應基於分佈的隱藏神經元的輸出,因此我們可以生成新的影像,只需從分佈中取樣,並將其輸入網路的隱藏層。

假設目標分佈是正態分佈,均值為0,方差為1。當我們將影像輸入到VAE中時,隱藏節點不會輸出直接由輸出使用的值,而是將輸出均值和方差。每一個隱藏的節點都有自己的高斯分佈。我們將隱藏的節點值表示為ℎ和ℎ。然後,我們從實際正態分佈中取樣值,我們將其稱為,其大小與隱藏層相同。然後,我們將使用multiple多個元素,並使用add新增元素。這使得網路可以改變正態分佈的方差。這就是它編碼資訊的方式。在對元素進行加法和乘法運算之後,我們就得到了一個潛在向量。我們將這個潛在向量輸入輸出層,輸出層嘗試生成輸入的副本。自動編碼器的損失是最小化reconstruction loss(自動編碼器的輸出與其輸入的相似程度)和latent loss(隱藏節點與正常分佈的接近程度)。latent loss越小,可編碼的資訊越少,因此reconstruction loss增加。結果,VAE被鎖定在latent loss和reconstruction loss之間的權衡中。如果latent loss很小,我們的新生成的影像將與訓練時的影像非常相似,但它們看起來都很糟糕。如果reconstruction loss很小,那麼在訓練時刻重建的影像將看起來非常好,但是我們的新生成的影像與重構影像完全不同。顯然我們兩個都想要,所以找到一個平衡很重要。

這些解釋並沒有很好地構建,只是為了給出這些架構的一般概念。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2637424/,如需轉載,請註明出處,否則將追究法律責任。

相關文章