CNN,GAN,AE和VAE概述

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很小,那麼在訓練時刻重建的圖像將看起來非常好,但是我們的新生成的圖像與重構圖像完全不同。顯然我們兩個都想要,所以找到一個平衡很重要。

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


分享到:


相關文章: