人工智能之AVE繪圖模型

1、隱變量與隱空間

隱變量(Latent Variable)是指在數(shù)據(jù)中無法直接觀察到的、隱藏的變量。它通常用來表示數(shù)據(jù)背后的潛在結(jié)構(gòu)或特征。換句話說,隱變量是對復(fù)雜數(shù)據(jù)的一種簡化描述。

想象你看到一幅畫,畫上是一只貓。這幅畫本身是復(fù)雜的,包含很多細(xì)節(jié)(比如顏色、形狀、紋理等)。但其實(shí)這幅畫背后有一個(gè)簡單的“描述”:它是“一只貓”,而不是“一堆像素點(diǎn)”。

這里的“描述”就是隱變量,它捕捉了畫的本質(zhì)特征(比如“貓”這個(gè)概念),而忽略了具體的細(xì)節(jié)。

在生成式模型(如 VAE 或 GAN)中,隱變量通常是一個(gè)低維向量,用來表示數(shù)據(jù)的主要特征。例如:

  • 對于一張圖片,隱變量可能是它的“輪廓”、“顏色分布”、“姿態(tài)”等。
  • 對于一段語音,隱變量可能是它的“語調(diào)”、“節(jié)奏”、“情感”等。

隱變量的一個(gè)特點(diǎn)是,它通常是通過模型學(xué)習(xí)得到的,而不是直接從數(shù)據(jù)中觀測到的。

假設(shè)我們有很多畫,每幅畫都對應(yīng)一個(gè)隱變量(比如“貓”“狗”“樹”等)。如果把這些隱變量放在一起,就會(huì)形成一個(gè)“隱空間”。

  • 這個(gè)隱空間就像是一個(gè)地圖,每個(gè)點(diǎn)代表一種可能的畫。
  • 如果你在潛空間中找到某個(gè)點(diǎn),就可以還原出對應(yīng)的畫。

隱空間(Latent Space ),也稱潛在空間,是指在統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)和生成式模型領(lǐng)域中,一種假設(shè)的、通常不可直接觀察的多維空間。潛空間用來學(xué)習(xí)數(shù)據(jù)的潛在特征,以及學(xué)習(xí)如何簡化這些數(shù)據(jù)特征的表達(dá),以便發(fā)現(xiàn)某種規(guī)律模式,最終來識別、歸類、處理這些數(shù)據(jù)。

隱空間可以被視為一種壓縮數(shù)據(jù)的表示,其中的每個(gè)點(diǎn)或向量都代表了數(shù)據(jù)集中的一個(gè)潛在模式或特征。

為了更好地理解這個(gè)概念,讓我們考慮一下人類如何感知世界。通過將每個(gè)觀察到的事件編碼為我們大腦中的壓縮表示,我們能夠理解廣泛的主題。例如,我們不會(huì)記住狗的每一個(gè)外觀細(xì)節(jié),以便能夠在街上認(rèn)出一只狗。正如我們在下圖中所看到的,我們保留了狗的一般外觀的內(nèi)部表示:


1.jpeg

以類似的方式,隱空間試圖通過空間表示向計(jì)算機(jī)提供對世界的壓縮理解。

隱空間在各種生成模型中起著關(guān)鍵作用,如自動(dòng)編碼器(AutoEncoder,AE)、變分自動(dòng)編碼器(Variational Autoencoder, VAE)、生成對抗網(wǎng)絡(luò)(Generative Adversarial Network, GAN)等。模型通過訓(xùn)練學(xué)習(xí)如何將輸入數(shù)據(jù)映射到隱空間中,同時(shí)也學(xué)習(xí)如何從隱空間中的點(diǎn)重建出原始數(shù)據(jù)。

隱空間之所以叫“空間”,而不是叫“壓縮數(shù)據(jù)”或“高度概括的特征數(shù)據(jù)”,還因?yàn)橐粋€(gè)比較重要的概念:“維度空間”。

在一個(gè)虛擬的世界中,模擬再現(xiàn)出一個(gè)世界,需要用數(shù)字描繪的事物維度往往高達(dá)十幾維、幾十維、幾百維。這些超過三個(gè)維度的坐標(biāo)系空間畫面我們的大腦無法想象,但可以通過數(shù)據(jù)來描述。人工智能直接在這樣高維度的數(shù)據(jù)中進(jìn)行訓(xùn)練,將因?yàn)閿?shù)據(jù)過于龐大,且其中的無關(guān)緊要的“雜質(zhì)”信息太多而難以進(jìn)行。

何為“雜質(zhì)”信息呢?比如下圖中的兩把椅子和桌子,很明顯,兩把椅子更有相似性,他們區(qū)別于桌子大概率是因?yàn)樗麄兌际怯锌勘车?、沒有抽屜的、更瘦高的外觀結(jié)構(gòu)等等。這些都構(gòu)成了數(shù)據(jù)的維度。可是很明顯,兩把椅子的顏色特征,在建立椅子與椅子之間的相似度和椅子與桌子的區(qū)別度來看,純屬是無用的甚至是容易造成混淆的“雜質(zhì)”信息。

2.jpeg

所以,我們需要過濾一下這些無關(guān)緊要的雜質(zhì)信息。通常的方式是把高維度的事物用低維度去解構(gòu)。好比一個(gè)3D的圖形,我們把它解構(gòu)為2D的正視圖、2D的側(cè)視圖和2D的頂視圖,最后再把這三個(gè)2D的圖像進(jìn)行分別運(yùn)算一樣。通過維度的降低,在訓(xùn)練樣本足夠多的情況下,因?yàn)楦咏谄毡橐?guī)律性的數(shù)據(jù)將在數(shù)據(jù)表現(xiàn)上也更接近,所以許多不相關(guān)的“雜質(zhì)”數(shù)據(jù)將被識別,然后剔除掉。最后留在低維度空間(隱空間)中的信息將最大限度地高度概括這類事物的普遍特征。

這便有了“空間”的概念,把高緯度空間中的事物降維成低維度的空間中的數(shù)據(jù),再在低維度空間(隱空間)中進(jìn)行運(yùn)算。這里“空間”兩個(gè)字是一種意向上的比喻稱呼,比喻一種隱藏的、被壓縮后的、不可直觀感受到的、從高維度解構(gòu)下來的低維度空間,即隱空間。是用數(shù)據(jù)來描繪一類事物的數(shù)據(jù)構(gòu)成的“規(guī)律空間”。

這兩把椅子在隱中距離更近,你也可以理解為兩把椅子的數(shù)據(jù)集在隱空間中所占的坐標(biāo)點(diǎn)位更相近。比如兩把椅子在隱空間中數(shù)據(jù)被壓縮成[0.4, 0.5][0.45, 0.45],而桌子被壓縮成[0.9, 1.05],若放在二維的坐標(biāo)系中,兩個(gè)數(shù)值分別代表X坐標(biāo)值和Y坐標(biāo)值,那么很明顯兩把椅子的點(diǎn)位更接近,“椅子”的規(guī)律也就浮現(xiàn)出來了。雖然,此時(shí)機(jī)器仍然不知道這兩個(gè)東西叫“椅子”,但它卻知道這兩個(gè)東西是一類的東,然后被我們?nèi)祟惷麨榱恕耙巫印薄?/p>

這其實(shí)很類似哲學(xué)意義上的歸納總結(jié),在一系列類似的事物中,把沒用的、偶然的信息剔除掉(通常稱為“噪聲”),把有用的相互之間關(guān)聯(lián)的規(guī)律性的信息高度地形而上地總結(jié)起來,形成認(rèn)知事物的規(guī)律(在人工智能領(lǐng)域就形成了“模型”),方便日后,面對類似事物問題時(shí)進(jìn)行分析判斷,遵循這樣的規(guī)律去行事以期達(dá)到我們想要的結(jié)果。隱空間就是這個(gè)拆分復(fù)雜問題后,剔除了無用的“雜質(zhì)”信息后,留下來的具有數(shù)據(jù)特征規(guī)律性的“數(shù)據(jù)規(guī)律性空間”、“哲學(xué)空間”,但空間中的哲理描述則是簡明扼要的提綱挈領(lǐng)的。

關(guān)于空間、維度、規(guī)律性等概念可以通過下圖進(jìn)行更形象的理解。

3.jpeg

圖中由 initial dimension 1 為橫軸、 initial dimension 2 為縱軸組成的二維坐標(biāo)系中,A、B、C、D、E 五個(gè)點(diǎn)代表原始數(shù)據(jù),他們在二維空間中占有各自的位置(+號所標(biāo)記的點(diǎn)位,他們的初始坐標(biāo)為右側(cè)表格中 Initial 列下的二維數(shù)據(jù)集)。

編碼器首先將這五個(gè)點(diǎn)位從二維空間壓縮到一維空間對應(yīng)的點(diǎn),這個(gè)一維空間的坐標(biāo)系就是圖中 encoded dimension 1 坐標(biāo)軸所代表的。它的原點(diǎn)和二維坐標(biāo)系的原點(diǎn)重合。當(dāng)這一降維編碼完畢后,自然而然地,ABCDE五個(gè)點(diǎn)位的初始數(shù)據(jù)就被壓縮到了一維的隱空間之中。

在一維空間中,ABCDE每個(gè)點(diǎn)的數(shù)據(jù)表示很明顯只包含一個(gè)數(shù)字,即用數(shù)字描繪了各個(gè)點(diǎn)與原點(diǎn)(坐標(biāo)軸0點(diǎn))之間的對應(yīng)位置信息。

然而,在一維空間中的點(diǎn)位再映射回到二維空間時(shí),也就是再解碼回來時(shí),我們就發(fā)現(xiàn)了誤差,即壓縮損失傳遞過來的解碼誤差(圖中B點(diǎn)作為例子,編碼前以及解碼后的數(shù)據(jù)都標(biāo)注出來了)??梢钥闯?,當(dāng)數(shù)據(jù)被編碼壓縮或者說降維到潛空間之中時(shí),雖然是有損失的,但是規(guī)律性也自然浮現(xiàn)了出來。因?yàn)橐痪S空間 dimension 1 的坐標(biāo)軸本身也代表了ABCDE在二維空間中分布的潛在規(guī)律。

當(dāng)然,這并不意味著ABCDE五個(gè)點(diǎn)就一定是現(xiàn)實(shí)物理世界中的二維平面上的五個(gè)點(diǎn),而是說,ABCDE這五個(gè)初始點(diǎn)采樣自現(xiàn)實(shí)世界中,每個(gè)點(diǎn)可以用一個(gè)二維向量來表示,即兩個(gè)數(shù)值代表的數(shù)據(jù)集。我們只是在數(shù)學(xué)模型構(gòu)建這些點(diǎn)時(shí),可以把他們視為二維坐標(biāo)系中的點(diǎn)而已。實(shí)際上在大自然中要模擬一些復(fù)雜自然規(guī)律,其采樣的點(diǎn)的數(shù)據(jù)維度可能會(huì)極高,三維、四維、五維...以至于幾百維都有,即用來描述每一個(gè)采樣點(diǎn)的數(shù)據(jù)特征數(shù)為3個(gè)、4個(gè)、5個(gè)以至于幾百個(gè),我們?nèi)匀挥修k法可以將他們從高維逐級地降成一維。

在實(shí)際運(yùn)行過程中,我們沒有必要把所有維度都降維到一維,降到幾維最合理,實(shí)際上要根據(jù)具體的問題來做調(diào)整的。下圖很好地解釋了維度深淺的意義:

4.jpeg

用dog、bird、car、plane,四個(gè)概念來舉例,好比每一個(gè)概念都是N維的數(shù)據(jù)集。那么壓縮到二維就足夠了(圖中右側(cè)),可以對四個(gè)概念進(jìn)行有效地規(guī)律總結(jié)和分類操作。但是再多壓縮一層,到一維時(shí)(圖中左側(cè)),我們就難以對數(shù)據(jù)規(guī)律進(jìn)行總結(jié)了,即四個(gè)概念都混為一談了,也就是壓縮失去了太多關(guān)鍵信息。所以,“過擬合”和“欠擬合”都不是好事情,恰如其分地?cái)M合才是我們在訓(xùn)練模型中所追求的。

5.jpeg

這同樣可以比喻成下一代的教育問題。全社會(huì)似乎都在快樂教育、素質(zhì)教育、應(yīng)試教育種種這些方式之間迷茫,也在什么時(shí)期進(jìn)行應(yīng)試教育、什么時(shí)候快樂教育的時(shí)間分配、側(cè)重比例上左右搖擺不定。其實(shí)有了AI大模型的對照就突然變得清晰了。

過擬合就好比兒童訓(xùn)練過頭了,變成死記硬背了,不會(huì)融會(huì)貫通,觸類旁通……一旦這樣的教育方式持續(xù)下去,直到錯(cuò)過了最佳教育窗口期,長大成人后,那么將對這個(gè)青年產(chǎn)生一生的能力減分。因?yàn)?,一旦他走入社?huì),見到的新事物與原來他在接受過度死記硬背教育時(shí)所見到的事物有一點(diǎn)的不一樣,他都無法在腦中反應(yīng)出可適用的規(guī)律,于是他便迷茫,束手無策了。

而欠擬合則是訓(xùn)練不成功,沒有找到擬合的路徑,或者說沒有適當(dāng)?shù)厝コs亂的信息,沒有總結(jié)出有用的規(guī)律。就好比兒童時(shí)期沒有找到很好的適合他的培養(yǎng)路線,沒有激發(fā)出孩子的興奮點(diǎn),以至于到青少年時(shí)期都還在迷茫之中,這個(gè)也學(xué)一點(diǎn)那個(gè)也學(xué)一點(diǎn),都是蜻蜓點(diǎn)水,但哪一個(gè)也沒有真正地系統(tǒng)性的學(xué)習(xí),最后錯(cuò)過了最佳教育期,那么整體上這個(gè)青年將在遠(yuǎn)離自己能力天花板的地方度過此生。

所以,最終的答案是,我們怎么去調(diào)優(yōu)大模型,我們就去怎么調(diào)優(yōu)我們的孩子,既不要過擬合又不要欠擬合。當(dāng)然,這里還要看訓(xùn)練的模型本身架構(gòu)適合哪些具體的任務(wù),這就如同還要看這個(gè)兒童本身的天性特點(diǎn),適合朝哪個(gè)方向去培養(yǎng)一樣,因材施教。

2、自編碼器的局限性

假設(shè)你是一個(gè)做算法從業(yè)者,你的手頭上有人臉圖像的數(shù)據(jù)集。現(xiàn)在,你想要訓(xùn)練一個(gè)模型,使得模型能夠生成人臉。

一個(gè)比較經(jīng)典的做法是,我們先用一個(gè)神經(jīng)網(wǎng)絡(luò)(編碼器,Encoder)把圖片描述(編碼,Encode)成“隱變量”h。隱變量的各個(gè)維度的意義我們是無從得知的,不過通過一些方法我們可以將其驗(yàn)證出來,這些維度通常表示圖片的屬性。例如人臉的性別、年齡、發(fā)色、是否戴眼鏡等等。得到隱變量h后,再用一個(gè)神經(jīng)網(wǎng)絡(luò)(解碼器,Decoder)將隱變量中的信息翻譯(解碼,Decode)成一張新的圖片。

就好像你和朋友玩一個(gè)游戲。在這個(gè)游戲中,你負(fù)責(zé)將圖片描述出來,朋友則負(fù)責(zé)根據(jù)你的描述將圖片重新畫出來。你就是編碼器,你的描述就是隱變量,你的朋友就是解碼器。

編碼器和解碼器共同構(gòu)成了被稱為“自編碼器(AutoEncoder,AE)”的模型。

6.jpeg

我們肯定是希望這張解碼出來的新圖片和原先被編碼的圖片越相似越好。因?yàn)檫@樣就說明了:

  1. 隱變量確實(shí)能夠很好地表示圖片的屬性,同時(shí)編碼器也能勝任編碼的工作
  2. 解碼器確實(shí)能夠?qū)D片的屬性解碼成對應(yīng)的圖片

為什么說這樣隱變量就確實(shí)能很好地表示圖片屬性呢?因?yàn)槿绻[變量不能很充分地表示圖片,那么大概率就無法解碼出與原圖相似的圖片。

為了做到這點(diǎn),我們聯(lián)合訓(xùn)練編碼器和解碼器,目標(biāo)是最大化新舊圖片的相似度,或者說最小化新舊圖片的“不相似度”。而“不相似度”就是訓(xùn)練的損失函數(shù)。

這樣在訓(xùn)練過程中,隨著不斷降低輸入圖片與輸出圖片之間的誤差,AE 模型會(huì)過于擬合,缺乏泛化性能。也就是說,輸入某個(gè)訓(xùn)練過的圖片,就只會(huì)將其編碼為某個(gè)確定的 code。反過來,輸入某個(gè)確定的 code 就只會(huì)輸出為某個(gè)確定的圖片,如果這個(gè) code 是來自未訓(xùn)練過的陌生圖片,那么則無法生成出我們想要的那個(gè)陌生圖片。

7.png

如上圖,假設(shè) AE 將“新月”圖片 encode 為 1(這里假設(shè)編碼只有 1 維的數(shù)值),將 1 進(jìn)行 decode 后得到“新月”的圖片。將“滿月” encode 成 10,同樣將10 進(jìn)行 decode 得到“滿月”圖片。這時(shí),如果我們給 AE 一個(gè) code 值 5,我們希望是能得到一個(gè)介乎于新月和滿月之間,類似“半月”的圖片,但由于之前未訓(xùn)練過“半月” 圖片(既非“新月”也非“滿月”的圖片)編碼為 5,那么AE解碼后就無法得到“半月”的圖片,而是模糊的亂碼。

當(dāng)然,上面只是舉一個(gè)極簡單的例子方便大家理解 AE。AE 在實(shí)際運(yùn)行中,編碼器把原數(shù)據(jù)壓縮進(jìn)入了隱空間時(shí)是有壓縮損失的,配對運(yùn)行的解碼器要通過運(yùn)算解碼盡量復(fù)現(xiàn)編碼之前的數(shù)據(jù)狀態(tài),這就意味著,編碼器和解碼器需要配對出現(xiàn)進(jìn)行無數(shù)次地訓(xùn)練,以求在解碼時(shí)得到最小的重構(gòu)誤差。因此,AE的工作重心是在數(shù)據(jù)的壓縮和恢復(fù)上,如何做到盡可能的復(fù)現(xiàn)初始狀態(tài),而并不是在預(yù)測中間狀態(tài)和趨勢狀態(tài)上,所以過擬合的問題在所難免,畢竟這就是 AE 的任務(wù)目標(biāo)。

于是,預(yù)測中間狀態(tài)和趨勢狀態(tài)的工作則交給了VAE。為了解決 AE 過擬合與不泛化問題,VAE的思路是這樣的:不將圖片編碼成隱空間中的具體數(shù)值,而是將其編碼成一種隱空間中的“正態(tài)分布”數(shù)據(jù)集。

我們將“新月”圖片編碼成 = 1 的正態(tài)分布,那么就相當(dāng)于在 1 附近加了正態(tài)分布的噪聲,此時(shí)不僅單一數(shù)值 1 表示“新月”,而是 1 和 1 附近的正太分布的數(shù)值(即淺在向量)統(tǒng)一表示為“新月”,只是 1 的時(shí)候最像“新月”而已。越接近 1 附近的偏離值則越接近“新月”圖像狀態(tài),反之越不像(當(dāng)然要完成這樣的匹配需要一定量的新月以及接近新月的預(yù)訓(xùn)練數(shù)據(jù))。同樣,將“滿月”映射成 =10 的正態(tài)分布,滿月和接近滿月的圖片的預(yù)訓(xùn)練數(shù)據(jù)也需要充分。雖然我們并沒有訓(xùn)練過半月的圖片數(shù)據(jù),但當(dāng) code=5 時(shí),就同時(shí)擁有了“新月”和“滿月”的部分正態(tài)分布概率,此時(shí) decode 出來的大概率就是一個(gè)介乎于“新月”和“滿月”之間的圖片“半月”了。如下圖:

8.png

當(dāng)然,這里只是粗略地形象地比喻方法區(qū)解釋 VAE 的思路,實(shí)際在執(zhí)行過程中的操作要復(fù)雜很多,需要許多其他的變量加入其中。VAE 比 AE 多出這個(gè) V 就是 Variational ,是變分、變量化的意思,同時(shí)也來源于統(tǒng)計(jì)學(xué)中的變分推理方法的意思。

很明顯,我們在生活中遇到的問題要比這個(gè)復(fù)雜很多,決定某件事情發(fā)展的變量也很多,大部分這樣的問題都是以前沒有跟在前輩或老師身邊學(xué)習(xí)到的。如果非黑即白地面對,往往得不到理想的結(jié)果,此時(shí)需要一些“難得糊涂”地去理解事物,既要有原則,又要有相對可包容的分寸去把握,此時(shí)處理出來的結(jié)果,則會(huì)相對更好一些。當(dāng)然,能夠如此地“難得糊涂”地去看待事物,還因?yàn)樵缦仍诟拜吇蚶蠋煂W(xué)習(xí)時(shí)不是死記硬背,而是變通地根據(jù)學(xué)習(xí)材料進(jìn)行規(guī)律的提取和總結(jié)。

3、變分自編碼器VAE

3.1 概率論原理

以圖片生成和處理任務(wù)為例,假設(shè)我們的研究對象是一個(gè)16 * 16 的RGB圖片,拋開對圖片內(nèi)容的限制,假如我們完全隨機(jī)地生成這樣一個(gè)尺寸的圖片,每個(gè)像素的可能取值有`256 * 256 * 256 個(gè),整個(gè)圖片的可能取值情況有 N=(256 * 256 * 256 )(16*16)個(gè)。

我們把可能隨機(jī)生成的這樣的一個(gè)圖片設(shè)為一個(gè)隨機(jī)變量 XX的所有可能取值個(gè)數(shù)為 N,則我們可以將其樣本空間表示為 :

Sx = {X1,X2,...,Xn}

這個(gè)隨機(jī)變量必然是服從某個(gè)分布的,我們將其記為 X ~ p(X)。即我們隨機(jī)生成的這樣一個(gè)圖片X,其取值為a的概率為 p(a) (即 P(X = a) = p(a) )。

模型生成圖片的過程,實(shí)際上就是對服從分布 p(X)的隨機(jī)變量X進(jìn)行采樣的過程,采樣得到的就是一個(gè)屬于Sx的圖片。

但我們在許多圖片生成任務(wù)中肯定是希望得到一個(gè)在 Sx上有所傾向、有所特點(diǎn)的分布 p(X)(不然真隨機(jī)生成的話大概率只會(huì)生成一團(tuán)馬賽克) 。比如說,如果我們希望這個(gè)模型能生成一些與貓相關(guān)的圖片,那這個(gè)模型對應(yīng)的分布 p(X)在與貓相關(guān)的圖片對應(yīng)的X值上的概率應(yīng)該更高,而與貓無關(guān)的圖片的概率應(yīng)該更小。

也就是說,在許多任務(wù)中,我們對這個(gè)分布p(X)是有特殊的要求和期望的,我們的目的就是求出這個(gè)滿足我們要求的分布 p(X)。只要我們能求出合適的分布 p(X),我們就可以通過對這個(gè)分布進(jìn)行采樣得到我們期望的圖片。

那么問題來了,我們怎么求我們希望的分布p(X) 呢?

實(shí)際上,我們很難對 p(X) 的形式有一個(gè)合理的預(yù)先認(rèn)識和假設(shè),大多數(shù)時(shí)候我們對其一無所知,只能用各種方式來逼近這個(gè)分布 p(X)。

故我們引入一個(gè)隱變量 z ,先生成一個(gè)隨機(jī)變量 z ,再由 z 經(jīng)過某種變換生成最終的隨機(jī)變量 X 。

關(guān)于為什么要引入隱變量,這里給出一個(gè)更形象的描述:比如說,袋子里有黑球和白球,你不斷地從袋子里取球出來再放回去,就能夠統(tǒng)計(jì)出抽到黑球和白球的頻率。然而,真正決定這個(gè)頻率的,是袋子里黑球和白球的數(shù)量,這些數(shù)量就是觀測不到的隱變量。簡單來說,隱變量z是因,變量x是果

實(shí)際上,觀測數(shù)據(jù)只是我們可以直接觀測到的樣本指標(biāo)或特征,而在觀測數(shù)據(jù)之下蘊(yùn)含的還有一些我們不能直接觀測到的、潛在的、未知的特征,這些特征可能對觀測數(shù)據(jù)產(chǎn)生影響,我們稱其為隱藏特征。

舉例說明,考慮一個(gè)電商平臺(tái)的用戶行為分析:可以直接觀測到是用戶在平臺(tái)上的實(shí)際行為數(shù)據(jù),如購買記錄、瀏覽歷史、搜索關(guān)鍵詞等。而隱空間可以是用戶的潛在興趣或偏好。例如,假設(shè)一個(gè)用戶購買了幾本關(guān)于健康和健身的書籍,但觀測數(shù)據(jù)中并沒有直接記錄用戶的興趣。

用戶的興趣偏好會(huì)在一定程度上影響其在平臺(tái)上的行為活動(dòng),但不會(huì)直接記錄在觀測數(shù)據(jù)中。用戶在平臺(tái)上的行為數(shù)據(jù)在形式上往往是比較復(fù)雜的,難以直接找到其一般的規(guī)律,那我們可以人為地添加潛在的主題變量來表示“用戶的興趣”,然后想辦法構(gòu)建一個(gè)由“用戶的興趣”到“用戶的行為數(shù)據(jù)”的映射,因?yàn)椤坝脩舻呐d趣”這一隱藏特征在表示和含義上遠(yuǎn)比觀測特征簡潔直白,可以很方便地分析理解數(shù)據(jù),提供更精確和深入的推斷和預(yù)測。

引入隱變量 z 后,我們記其服從于分布 s(z) , 我們可以從較為簡單的分布 s(z) 出發(fā),間接地求出相對復(fù)雜的 p(X) 。

這里需要注意:

  1. s(z) 分布的表達(dá)式形式一般比較簡單,比如普通的多元高斯分布,并且往往是預(yù)先假設(shè)的一個(gè)沒有未知量的確定分布。(對的,一般我們引入的這個(gè)隱變量就是相對簡單的,這是我們?nèi)藶樵O(shè)計(jì)規(guī)定的,不然不如不引)
  2. z 的自由度一般比較低,或者說其維度比較低,應(yīng)該是一個(gè)相對簡單的變量。

隱變量模型背后的關(guān)鍵思想是:任何一個(gè)簡單的概率分布經(jīng)過一個(gè)足夠復(fù)雜的函數(shù)后可以映射到任意概率分布。所以隱變量模型實(shí)際上把一個(gè)概率分布的估計(jì)問題轉(zhuǎn)化成了一個(gè)函數(shù)逼近的問題。

3.2 基本架構(gòu)

與普通自動(dòng)編碼器一樣,變分自動(dòng)編碼器有編碼器Encoder與解碼器Decoder兩大部分組成。

然而,與普通AE模型不同的是,VAE的Encoder與Decoder在數(shù)據(jù)流上并不是相連的,我們不會(huì)直接將Encoder編碼后的結(jié)果傳遞給Decoder,而是要使得編碼后的結(jié)果滿足既定分布,比如標(biāo)準(zhǔn)高斯分布(即正態(tài)分布)

9.jpeg

為什么要選擇高斯分布呢?無他,高斯分布采樣簡單、數(shù)學(xué)性質(zhì)好,還能輕松實(shí)現(xiàn)可微分,方便優(yōu)化。幾乎是生成模型的“萬金油”。

實(shí)際上一個(gè)單變量的高斯分布僅由均值和方差決定,而它們也只是兩個(gè)普通的浮點(diǎn)數(shù)。因此從這個(gè)角度來說,我們只是將原來的“編碼成一個(gè)固定值”的操作,改成了“編碼成兩個(gè)固定值(均值和方差)”而已。

10.jpeg

這樣做有什么好處呢?首先,前面提到的“編碼泛化性差”的問題就被解決了。

用上面的月亮的例子來解釋。我們不妨假設(shè)隱向量維度度為1,也就是說,圖片只被編碼成一個(gè)浮點(diǎn)數(shù)。假設(shè)這個(gè)浮點(diǎn)數(shù)表示“月亮有多滿”。在一開始的方案中,月牙圖片會(huì)被編碼成數(shù)字1,而滿月圖片會(huì)被編碼成數(shù)字10。在新方案中,訓(xùn)練時(shí)編碼器將月牙和滿月分別編碼成了N(1, 4),N(10, 5)兩個(gè)正態(tài)分布。然后分別從中采樣得到了 h(1),h(2)

這時(shí) h(1),h(2) 都很有可能采樣出5這個(gè)值。而解碼器在看到5這編碼時(shí),原圖既有可能是滿月,又有可能是圓月。解碼器要怎么做才能使得重構(gòu)損失最小呢?生成這兩類數(shù)據(jù)的“均值”就好了,類似于每個(gè)像素取均值。月牙和滿月的均值就是半弦月。

這就讓解碼器具有了更強(qiáng)的泛化能力

不過,也不能讓隱向量各維度的值去服從任意的正態(tài)分布。因?yàn)檫@個(gè)正態(tài)分布很可能具有接近0的方差,此時(shí)它就會(huì)退化成一個(gè)常數(shù)分布。也就是說,無論我們?nèi)绾尾蓸?,得到的值都是固定的。況且模型在學(xué)習(xí)的時(shí)候?yàn)榱俗钚』貥?gòu)損失也會(huì)想辦法讓方差降到0。

這樣的話就跟原始的AutoEncoder沒區(qū)別了。

綜合上面兩點(diǎn)原因,VAE 加了一個(gè)限制:我們想讓編碼器編碼出來的正態(tài)分布越接近標(biāo)準(zhǔn)正態(tài)分布N(0, 1)越好(只要是接近就行,不能完全變成標(biāo)準(zhǔn)正態(tài)分布,不然學(xué)習(xí)就沒有任何意義了)。這樣既不用擔(dān)心編碼出的分布的方差退化,也可以在生成階段直接從N(0, 1)中采樣隱向量了。簡單粗暴,但是有效。

也就是說,VAE的損失函數(shù)除了要最小化重建圖像與原圖像之間的均方誤差外,還要最大化每個(gè)分布和標(biāo)準(zhǔn)高斯分布之間的相似度。

3.3 總結(jié)

綜合來看,VAE實(shí)際上是為了彌補(bǔ)AE這種簡單的重構(gòu)模型生成泛化能力弱的局限,基于其encoder-decoder的結(jié)構(gòu)在隱空間中引入了一個(gè)隱變量分布,從而使其變?yōu)橐粋€(gè)隱變量模型,然后為了彌補(bǔ)隱變量估計(jì)采樣復(fù)雜的問題,又補(bǔ)全了變分推斷的理論,使其實(shí)現(xiàn)更具可行性。

很明顯,在變分自動(dòng)編碼器中,輸入層的信息并沒有直接傳到輸出層,而是在中間進(jìn)行了截?cái)?,原始樣本的信息被更換成了“與原始樣本處于相同分布中的樣本的信息”。由于該過程的存在,變分自動(dòng)編碼器有如下的三個(gè)特點(diǎn):

  1. 斬?cái)嗔松窠?jīng)網(wǎng)絡(luò)中慣例的“從輸入到輸出”的數(shù)據(jù)流,以此杜絕了信息直接被復(fù)制到輸出層的可能性。
  2. 無論在訓(xùn)練還是預(yù)測過程中,模型都存在隨機(jī)性,相比之下,大部分帶有隨機(jī)性的算法只會(huì)在訓(xùn)練的過程中有隨機(jī)性,而在測試過程中對模型進(jìn)行固定。但由于變分自動(dòng)編碼器的“隨機(jī)性”是與網(wǎng)絡(luò)架構(gòu)及輸入數(shù)據(jù)結(jié)構(gòu)都高度相關(guān)的隨機(jī)性,因此當(dāng)訓(xùn)練數(shù)據(jù)變化的時(shí)候,隨機(jī)抽樣的情況也會(huì)跟著變化。
  3. 可以作為生成模型使用。其他的自動(dòng)編碼器都是在原始圖像上進(jìn)行修改,而變分自動(dòng)編碼器可以從無到有生成與訓(xùn)練集高度相似的數(shù)據(jù)。由于輸入Decoder的信息只是從正態(tài)分布中抽選的隨機(jī)樣本,因此其本質(zhì)與隨機(jī)數(shù)差異不大,當(dāng)我們訓(xùn)練完變分自動(dòng)編碼器之后,就可以只使用解碼器部分,只要對解碼器輸入結(jié)構(gòu)正確隨機(jī)數(shù)/隨機(jī)矩陣,就可以生成與訓(xùn)練時(shí)所用的真實(shí)數(shù)據(jù)高度類似的數(shù)據(jù)。

VAE的生成效果可能不向AGN沒那么驚艷,但它訓(xùn)練相對穩(wěn)定,為后來的各種改進(jìn)提供了一個(gè)好用的框架。

通常我們會(huì)拿VAE跟GAN比較,的確,它們兩個(gè)的目標(biāo)基本是一致的——希望構(gòu)建一個(gè)從隱變量Z生成目標(biāo)數(shù)據(jù)X的模型,更準(zhǔn)確地講,它們是假設(shè)了Z服從某些常見的分布(比如正態(tài)分布或均勻分布),然后希望訓(xùn)練一個(gè)模型X=g(Z),這個(gè)模型能夠?qū)⒃瓉淼母怕史植加成涞接?xùn)練集的概率分布,也就是說,它們的目的都是進(jìn)行分布之間的變換。

只不過兩者但是實(shí)現(xiàn)上有所不同。GAN的思路很直接粗獷:既然沒有合適的度量,那我干脆把這個(gè)度量也用神經(jīng)網(wǎng)絡(luò)訓(xùn)練出來吧。就這樣,WGAN就誕生了。而VAE則使用了一個(gè)精致迂回的技巧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容