自編碼器AE,VAE

從直覺的角度來闡述

  • 可以用于壓縮數(shù)據(jù)项秉,或從有noisy或者損壞的數(shù)據(jù)中重建原始數(shù)據(jù)诬垂。
  • 允許我們線性的差值劲室,比如讓一個人的臉變成另外一個人的臉。
  • 可以對data可以按照需求的進(jìn)行操作结窘,比如改變照片上人的頭發(fā)的長度很洋,或者不改變其他任何聲音特性的情況下平滑的將一個男性的聲音變?yōu)榕浴?/li>
  • 甚至可以發(fā)現(xiàn)大量未標(biāo)記數(shù)據(jù)中隱藏的概念和關(guān)系,因此可以用于無監(jiān)督學(xué)習(xí)中隧枫。

Autoencoder

  • 用于壓縮數(shù)據(jù)喉磁,但是沒有泛化能力,因此不能作為生成模型官脓。
  • A->BAB是隊友)协怒,Asome kind of data,而這個dataB沒有見過的卑笨,A必須要將data描述給B孕暇,以便B明白Adata是什么樣的(重建data),有一個C(教練)能確切的知道Adata是什么赤兴,然后能夠給B重建的data打個分?jǐn)?shù)妖滔,說明重建的好或者壞。問題在于A和B不能直接交流而是通過一串?dāng)?shù)字code來傳遞信息的桶良。
  • A 需要encoder data座舍,為了簡便我們使用表示成坐標(biāo)系的兩維code(x,y)
  • 假設(shè)要傳遞的信息是貓狗的圖片,訓(xùn)練階段有1百萬的數(shù)據(jù)陨帆。
  • 對于一張照片曲秉,A將這個圖片輸?shù)阶约旱?code>machine中得到了(2.846, -5.049),然后將這個信息發(fā)給B采蚀,但是B對于圖片是一無所知的,甚至對于貓和狗長什么樣也是一無所知的岸浑,因此B畫出來的圖像可能是亂七八糟的搏存,random paintings,而C拿到B所畫的圖像和原始的圖像來比較給出一個相似性分?jǐn)?shù)(loss function)矢洲,并且C還告訴B哪些decisions是對scorecontribution的以及How(梯度下降).
  • B也可以告訴A如何improve Aencoding技術(shù),以便能更好的表示信息
  • AB僅有的聯(lián)系方式就是back-propagation缩焦,還要注意的一點就是不能一次調(diào)整圖片過多读虏,而是他們需要根據(jù)每個反饋對他們的過程進(jìn)行小的更新,并希望隨著時間的推移袁滥,這些小的調(diào)整將增加一個獨(dú)特的過程盖桥,使他們在所有圖像中獲得良好的分?jǐn)?shù),而不僅僅是當(dāng)前的圖像(控制合適的學(xué)習(xí)率)题翻。
  • 因此開始的時候B總是亂畫揩徊,直到他從眾多貓狗的訓(xùn)練數(shù)據(jù)中有一次他畫出了動物的輪廓的話發(fā)現(xiàn)得到的分?jǐn)?shù)變高了,雖然此時他還沒有使用A的輸入的code嵌赠,因此當(dāng)能畫出貓狗的圖像就會關(guān)注A輸入塑荒,才不讓自己的得分陷入停滯。

VAE

  • 原始的autoencoder有一個問題就是有編碼器和解碼器都會記住訓(xùn)練數(shù)據(jù)姜挺,這樣泛化能力就很差齿税。
  • 現(xiàn)在做的就是B不直接得到訓(xùn)練數(shù)據(jù)的編碼,而是從A將數(shù)據(jù)編碼的分布中進(jìn)行隨機(jī)采樣炊豪,這在論文里面叫做reparametrization trick凌箕,就是為了更加的robust
  • 比如原來的autoencoder是非常笨的把一個圖片編碼成一個數(shù)字词渤,現(xiàn)在的VAE將一個圖像編碼成一個分布(原來是一個點牵舱,現(xiàn)在是一坨),然后再從分布中采樣出一個數(shù)值當(dāng)成圖像的編碼缺虐,因此相當(dāng)于提高的泛化能力芜壁。
  • 這樣的就是autoencoder編碼的code,數(shù)據(jù)之間有很大的gap志笼,幾乎沒有泛化能力沿盅。
  • 是一個泛化能力比較強(qiáng)的編碼結(jié)構(gòu)
  • 但是如果分布像上面一樣還是有問題的纫溃,因為泛化能力還是不夠高腰涧,因此我們要求隱變量的分布越和多元的正太分布相似我們給的獎勵就越多,這樣就增大了隱變量分布的不確定性紊浩,因此A就更有可能將數(shù)據(jù)編碼成下面的情況窖铡,這樣也要求了A編碼要有技巧性疗锐,比如157158編碼重疊的可能性很高,為了避免B誤會因此要求A將長得像的圖像放在一起(要求157158)费彼,這樣就提升了A的編碼能力滑臊。
  • 比如下面的圖像就是VAEMNIST數(shù)據(jù)集進(jìn)行編碼后的t-SNE圖像,各個數(shù)字聚類了箍铲。
  • 這樣的話就有了很好的特性雇卷,比如說得到的一個訓(xùn)練好的VAE我們,可以得到了兩個圖像的編碼颠猴,如果取一個平均就是兩個圖像的特性各占一半关划。
  • 還有一個有意思的特性就是,每一個維度都是可解釋的翘瓮,比如我們固定其他維度的信息贮折,只是改變隱變量的一個維度,發(fā)現(xiàn)decoder時候圖像的胡子變長了资盅,那么這一維度就是用來控制胡子長度的
  • 感覺VAE就是比AE多了一個訓(xùn)練encoder的機(jī)制调榄,這種機(jī)制讓encoder的編碼更加的可泛化。

VAE在NLP中的應(yīng)用

  • 現(xiàn)在的問題好比說是一個人有另外一種語言的詞表但是卻沒有相關(guān)的解釋(并不是說解釋是一定有用的呵扛,畢竟解釋也是一串這種語言的單詞)每庆,需要明白這種語言句子的意思。

It is as if they were handed a dictionary, but without any explanations. Just a long list of all the words in the English language. (Not that the explanations would have helped, since those themselves are formed of the same words that have no meaning to our players yet.)

  • 因為直接生成句子太過困難了择份,現(xiàn)在是單詞級別的監(jiān)督信息扣孟。

Now on thr other hand he does not wait for Bob to finish the entire sentence. Instead he gives Bob a score and feedback after every single word he predicts.
Even more crucially, Charlie tells Bob what would have been the correct word.

  • 有一個很有意思的事情是,每個人都擁有不同的language model荣赶,只是因為他們所擁有的背景知識不同擁有不同的language model而已凤价,遇到句子狗在追逐...大部分人會填,但是如果提前告訴你這是一部怪誕小說中的一句話拔创,很多人就會填寫其他東西利诺,同樣的模型訓(xùn)練數(shù)據(jù)就相當(dāng)于condition(怪誕小說),得到了不同的語言模型剩燥。
  • 鑒于有限的信息流慢逾,僅僅編碼令解碼器吃驚的信息,剩下的部分讓解碼器的語言模型來完成灭红,這一概念和信息熵十分的相似侣滩。

The trick, given the limited information flow allowed, lies in Alice encoding exactly the kind of information she thinks is surprising to Bob and letting him rely on his own language model for the rest, and also hoping that he actually uses her information in the first place.

  • 現(xiàn)在有個問題就是decoder可以學(xué)習(xí)到一個不錯的語言模型僅僅通過對比生成的句子以及原始的句子(捕獲了低階的語法信息),這樣encoder就學(xué)習(xí)不到任何東西变擒,encoder幾乎是隨機(jī)的君珠,這時候加入variational那么基本上就是隨機(jī)+隨機(jī),沒有什么用娇斑,此時優(yōu)化陷入停滯策添。

So now with Bob being pretty decent all by himself and Alice having learned absolutely nothing yet, we risk being stuck at what is called a local maximum.

  • 主要的原因在于訓(xùn)練的時候是逐單詞訓(xùn)練的材部,因此用不到hidden state,但是如果是逐句子訓(xùn)練的話對于decoder來說又是太難了唯竹,訓(xùn)練不起來乐导,因此訣竅就是在兩者之間找到一個平衡。
  • 一種比較成功的解決這個問題的方法就是給decoder增加學(xué)習(xí)障礙浸颓,這樣就能讓encoder的學(xué)習(xí)速度趕上decoder物臂,一種方法是讓decoder變得健忘,在語言模型中只能得到前面兩個詞的信息产上,比如...追逐...因此他必須使用encoder給的信息才能很好的預(yù)測下一個詞鹦聪,這樣盡管訓(xùn)練的速度回慢一些,但是不會陷入學(xué)習(xí)停滯階段蒂秘。
  • 另外一種方法就叫KL cost annealing,就是仍然使用變分淘太,但是在開始的時候判斷的條件松一點姻僧,允許encoder提供具體的信息,但是隨著訓(xùn)練的進(jìn)行(當(dāng)decoder的語言模型訓(xùn)練的比較好的時候)蒲牧,要求encoder提供更加"不確定性"的信息撇贺,也就是從Autoencoder 慢慢的進(jìn)化成Variational Autoencoder
  • VAE可以只編碼一些重要的信息比如語言是什么風(fēng)格的,文本長度是多少冰抢,剩下的事情交給decoderlanguage model來做松嘶。

Even if they only figure out a simple code where certain code regions tell Bob that the text is a tweet, others a news article, and yet others restaurant reviews, can dramatically help Bob make better guesses about the next word.
Since Bob also doesn’t know when to actually stop his prediction, Alice might also learn to encode the length of the sentence.

  • 因此有些維度就代表寫作風(fēng)格,我們可以控制這一維度來得到想要的文本挎扰,這也更加的robust因為加入了變分機(jī)制會是的“I went to his house”“I went to his flat”的編碼在隱空間上非常相近翠订。
  • VAE也可以用于翻譯中,比如encoderhidden state然后decoder成目標(biāo)語言遵倦。
  • 也可以用于文本摘要任務(wù)中尽超,將長句子解碼成短句子。

Text summarisation is also a closely related discipline. Here Alice encodes a long text, and Bob has to decode it into a summary.

從模型的角度來理解(深度學(xué)習(xí)角度)

  • 模型整體梧躺,可以看到decoder生成30維的多元高斯分布似谁,然后采樣得到隱變量。
  • 隱變量的每一維都是一個高斯分布掠哥,通過reparametrization技巧讓采樣的部分變得是課導(dǎo)的巩踏,因此可以端到端的訓(xùn)練。
  • 我們需要的各個圖像的隱變量的分布是圖1的類型续搀,因為很平滑可以隨意差值來生成圖像塞琼,而不是AE中的一個點表示一個圖像,為了達(dá)成這個目的相比于AE的損失函數(shù)VAE的損失函數(shù)變?yōu)?加了一個KL項目代。

  • 加入kl散度強(qiáng)迫每一維都是一個正太分布屈梁,這樣的直觀感覺就是讓每一維所表示的信息盡可能的都在均值0附近嗤练,也就是不能讓hidden state 通過表示圖像具體的一些信息(比如那些像素點的信息是多少)這樣沒有泛化能力的特征,而是應(yīng)該保留單一的重要的特征在讶,并且這樣就強(qiáng)迫了每一維盡可能的表示單一的特征煞抬,因此完成了特征的解耦,所以在AE的重構(gòu)損失函數(shù)中加入了KL散度那一項可以看成是正則項构哺,就是為了讓AE中一個點表示一個數(shù)據(jù)革答,變成VAE中的一個分布(上面一坨)的東西表示一個數(shù)據(jù),因此泛化能力大大增強(qiáng)曙强,下圖是兩項損失函數(shù)的物理解釋残拐。
  • 第二項KL散度loss的計算公式,當(dāng)Q(z|x)的均值為0方差為1的時候第二項損失函數(shù)取最小值碟嘴。
  • 最終趨向于聚集的重建損失和趨向于分散的KL散度達(dá)成了平衡溪食,這是符合我們要求的,因為無論我們是從正太分布中隨機(jī)采樣來生成圖像還是進(jìn)行差值都是可以得到一個圖像的(沒有gap娜扇,而是得到一個平滑的mix的圖像)错沃。
def vae_loss(input_img, output):
    # compute the average MSE error, then scale it up, ie. simply sum on all axes
    reconstruction_loss = K.sum(K.square(output-input_img))
    # compute the KL loss
    kl_loss = - 0.5 * K.sum(1 + log_stddev - K.square(mean) - K.square(K.exp(log_stddev)), axis=-1)
    # return the average loss over all images in batch
    total_loss = K.mean(reconstruction_loss + kl_loss)    
    return total_loss

從數(shù)學(xué)的角度來理解(概率模型角度理解)

  • 首先寫出生成模型的聯(lián)合概率分布p(x,z)=p(x∣z)p(z),生成的過程可以看成是對于每一個數(shù)據(jù)點:
  • 求數(shù)據(jù)的隱變量即求解p(z∣x)雀瓢,其中的p(x)被稱為evidence就是我們的數(shù)據(jù)分布枢析,p(x)=∫p(x∣z)p(z)dz可以通過邊緣求積來得到,但是由于要枚舉所有的z是不可求的刃麸,因此必須通過變分推斷(variational inference)的方法近似這個后驗分布醒叁,具體方法是通過
    qλ(z∣x)分布族來近似,λ 指示是哪一個族分布泊业,比如如果q是一個高斯分布把沼,
  • 因為上面的后驗分布是不可求的因此我們使用變分推斷的方法來近似這個后驗分布


  • 使用KL散度來衡量這個近似的好不好,所以說用高斯近似后驗和用強(qiáng)制每一維是正太分布是同樣的粗粒度


  • 由于近似推斷中還有X脱吱,也是很難求的智政,因此還要做轉(zhuǎn)換
  • 根據(jù)log p(x)的公式我們知道最小化KL于最大化ELBO是等價的,因此我們的優(yōu)化目標(biāo)變成了最大化ELBO箱蝠。
  • 上面的log p(x)公式推導(dǎo)
  • ELBO展開(其實花書里面對ELBO的推導(dǎo)直接就是這個公式)续捂。
  • 得到了最終的目標(biāo)函數(shù),從數(shù)學(xué)角度我們明白了為什么要加入這樣一個正則項(是為了盡可能逼近的使用一個合適的高斯分布近似原來的后驗p(z|x)

其他一些零零碎碎的東西

  • 重建損失一般使用均方誤差宦搬。
  • X生成Z的分布是使用高斯來進(jìn)行近似的牙瓢。
  • 兩項損失函數(shù)的物理意義
  • 如果去掉第二項損失函數(shù)KL散度那么VAE就退化成了AE间校,因為編碼就是一個點而不是一個分布矾克。

    引用,感謝憔足!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胁附,一起剝皮案震驚了整個濱河市酒繁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌控妻,老刑警劉巖州袒,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異弓候,居然都是意外死亡郎哭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門菇存,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夸研,“玉大人,你說我怎么就攤上這事依鸥『ブ粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵贱迟,是天一觀的道長抬闯。 經(jīng)常有香客問我,道長关筒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任杯缺,我火速辦了婚禮蒸播,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萍肆。我一直安慰自己袍榆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布塘揣。 她就那樣靜靜地躺著包雀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亲铡。 梳的紋絲不亂的頭發(fā)上才写,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音奖蔓,去河邊找鬼赞草。 笑死,一個胖子當(dāng)著我的面吹牛吆鹤,可吹牛的內(nèi)容都是我干的厨疙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼疑务,長吁一口氣:“原來是場噩夢啊……” “哼沾凄!你這毒婦竟也來了梗醇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撒蟀,失蹤者是張志新(化名)和其女友劉穎叙谨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牙肝,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唉俗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了配椭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虫溜。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖股缸,靈堂內(nèi)的尸體忽然破棺而出衡楞,到底是詐尸還是另有隱情,我是刑警寧澤敦姻,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布瘾境,位于F島的核電站,受9級特大地震影響镰惦,放射性物質(zhì)發(fā)生泄漏迷守。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一旺入、第九天 我趴在偏房一處隱蔽的房頂上張望兑凿。 院中可真熱鬧,春花似錦茵瘾、人聲如沸礼华。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽圣絮。三九已至,卻和暖如春雕旨,著一層夾襖步出監(jiān)牢的瞬間扮匠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工凡涩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留餐禁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓突照,卻偏偏與公主長得像帮非,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容