對抗性自動編碼器系列--自動編碼器AutoEncoder的原理及實現(xiàn)-手寫數(shù)字的重建

前言

先來看看實驗:

我們使用 MNIST 手寫數(shù)字污呼,測試通過自動編碼器和對抗性自動編碼器學(xué)習(xí)重建恢復(fù)效果冈钦。

  • 原始圖像:


    image
  • 自動編碼器重建效果


    image
  • 對抗性自動編碼器重建效果


    image

雖然這里看到授霸,自動編碼器和對抗性自動編碼器重建出來的能力差不多攒读,但是他們之間的差別在哪里,之后通過更多的實驗告訴大家盯蝴。

大多數(shù)人類和動物學(xué)習(xí)都是無監(jiān)督學(xué)習(xí)毅哗。如果把人工智能比作一個蛋糕,那么無監(jiān)督學(xué)習(xí)就是蛋糕捧挺,監(jiān)督學(xué)習(xí)就是蛋糕上的糖衣(錦上添花)虑绵,強化學(xué)習(xí)就是蛋糕上的櫻桃??(錦上添花)。

我們知道如何制作糖衣和櫻桃闽烙,但我們不知道如何制作蛋糕翅睛。

同樣,我們需要先解決無監(jiān)督學(xué)習(xí)問題黑竞,然后才能考慮實現(xiàn)真正的人工智能捕发。

我們知道可以使用卷積神經(jīng)網(wǎng)絡(luò) (CNN) 或在某些情況下密集全連接層 (MLP — 有人喜歡稱之為多層感知器) 來執(zhí)行圖像識別。

但是很魂,單獨的 CNN(或 MLP)不能用于執(zhí)行諸如從圖像中分離內(nèi)容和風(fēng)格(content and style)扎酷、生成真實的圖像(生成模型)、使用非常小的標(biāo)記集對圖像進(jìn)行分類或執(zhí)行數(shù)據(jù)壓縮等任務(wù)遏匆。

這些任務(wù)中的每一個都可能需要特別的架構(gòu)和訓(xùn)練算法法挨。但是,如果我們能夠僅使用一種架構(gòu)來實現(xiàn)上述所有任務(wù)拉岁,那不是很酷嗎坷剧?對抗性自動編碼器(一種以半監(jiān)督方式訓(xùn)練的)可以僅使用一種架構(gòu)來執(zhí)行所有這些任務(wù)甚至更多惰爬。

我們學(xué)習(xí)自動編碼器有什么用喊暖?
重建圖像本身自然是沒有任何意義的,但是能把圖像重建出來撕瞧,說明模型學(xué)到了輸入圖像集的分布和特征陵叽。

  • 提取圖像特征,特征我們可以拿來做影像組學(xué)丛版。
  • 異常檢測巩掺,圖像的分布可以拿來做異常檢測。
  • 圖像去噪页畦,其中可以使用有噪聲的圖像生成清晰的無噪聲圖像胖替。


    image
  • 語義散列可以使用降維來加快信息檢索速度。
  • 最近豫缨,以對抗方式訓(xùn)練的自動編碼器可以用作生成模型(我們稍后會深入探討)独令。

具體地, 我們將從以下幾部分來介紹:

  1. 自動編碼器重建 MNIST 手寫數(shù)字
  2. 對抗性自動編碼器重建 MNIST 手寫數(shù)字
  3. 半監(jiān)督自動編碼器重建 MNIST 手寫數(shù)字
  4. 使用自動編碼器對 MNIST 進(jìn)行分類

本系列會仔細(xì)的講解自動編碼器(AutoEncoder, AE)好芭,對抗性自動編碼器(Adversarial AutoEncoder, AAE)的的原理和實戰(zhàn)燃箭。學(xué)會了基礎(chǔ),可以嘗試看看有沒有新穎的研究課題可以做舍败。

自動編碼器介紹

image

自動編碼器(以下簡稱AE)不一定大家都有了解招狸,但是敬拓,提到 Unet,大家都熟悉吧。把 Unet中間的跳躍連接拿掉裙戏,它就是一個自動編碼器乘凸。

只不過Unet是拿來做分割,輸出的是分割結(jié)果累榜。自動編碼器是拿來做重建翰意,希望輸出=輸入。因此信柿,二者用的loss上會有區(qū)別冀偶。

來看一下相對正式的定義:

Autoencoder 是一種神經(jīng)網(wǎng)絡(luò),經(jīng)過訓(xùn)練可以產(chǎn)生與輸入非常相似的輸出(因此它基本上嘗試將其輸入復(fù)制到其輸出)渔嚷,并且由于它不需要任何標(biāo)簽进鸠,因此可以對其進(jìn)行無監(jiān)督訓(xùn)練。

它包含兩個部分: Encoder形病, Decoder

  1. Encoder(編碼器):它接受輸入 x(可以是圖像客年、詞嵌入、視頻或音頻數(shù)據(jù))并產(chǎn)生輸出 h(其中 h 通常比
    x 具有更低的維度)漠吻。

例如量瓜,編碼器輸入為: 100 x 100 的圖像 x ,輸出 100 x 1(可以是任何大型灸恕)的輸出 h绍傲。在這種情況下,編碼器只是壓縮圖像耍共,使其占據(jù)較低維度的空間烫饼,在這樣做時,我們現(xiàn)在可以看到试读,與直接存儲圖像 x 相比杠纵,可以使用 1/100 的內(nèi)存來存儲 h(大小為 100 x 1) (雖然這會導(dǎo)致一些數(shù)據(jù)丟失)。

這里的 h 通常說的是 latent space(潛在空間钩骇,模型圖上一般用 z 表示)比藻。(這個概念很重要,會經(jīng)常提到)

一個更形象的解釋:
讓我們想想像 WinRAR 這樣的壓縮軟件倘屹,它可用于壓縮文件以獲得占用較少空間的zip(或 rar银亲,...)文件。編碼器就是干這個事唐瀑,不斷地壓縮輸入群凶。

  1. Decoder(解碼器):它將 Encoder h 的輸出作為輸入,并嘗試恢復(fù) Encoder 的輸入哄辣。

例如: h 現(xiàn)在的大小為 100 x 1请梢,解碼器嘗試使用 h 恢復(fù)原始的 100 x 100 圖像赠尾。我們將訓(xùn)練 Decoder 從 h 中獲取盡可能多的信息以重構(gòu) x

因此毅弧,Decoder 的操作類似于在 WinRAR 上執(zhí)行解壓縮气嫁。

一句話總結(jié):Encoder做降維,Decoder用來恢復(fù)够坐。

接下來寸宵,我們使用 AE 來重建手寫數(shù)字。

自動編碼器重建手寫數(shù)字

image

image

我們設(shè)計一個具有3個全連接層的 Encoder 和 Decoder元咙。Encoder的輸入是手寫數(shù)字梯影,圖像尺寸為28*28,把它 reshape 成 784 個神經(jīng)元的輸入層庶香。這里我們將latent space(z) 設(shè)置為2.

相當(dāng)于我們把一個28*28大小的圖像甲棍,壓縮到2個像素點,Decoder通過這個兩個點恢復(fù)出輸入圖像的信息赶掖。咋一看感猛,實在有些不敢相信,2個點就能表征一個圖像奢赂,我們試試看~~~~

關(guān)于損失函數(shù)

使用的損失函數(shù)是均方誤差 (MSE)陪白,它計算輸入 (x_input) 和輸出圖像 (decoder_output) 中像素之間的距離。我們稱之為重建損失膳灶,因為我們的主要目標(biāo)是在輸出端重建輸入咱士。

loss = \frac{1}{n}\sum_{i=0}^{n}(x-x^{hat})^2

重建結(jié)果

原始圖像


image

恢復(fù)結(jié)果


image

看起來,還是能把數(shù)字重建的差不多袖瞻,雖然模糊了些司致。有3個重建錯誤拆吆。

我們把 Encoder 的輸出給 Decoder聋迎,基本能恢復(fù)出數(shù)字的樣子來。

但枣耀,我們隨機產(chǎn)生兩個數(shù)字霉晕,傳給 Decoder 會怎么樣呢?試試看

我們把(0捞奕,0)數(shù)字作為 Decoder 的輸入牺堰,會輸出什么呢?


image

感覺像數(shù)字颅围,又不像數(shù)字伟葫!

為什么我們不能從在隨機數(shù)中采樣,恢復(fù)出圖像呢院促?
這是因為我們得到的 latent space 并沒有覆蓋整個二維空間筏养,如果我們隨機輸入的 z 不是在 latent space 中采樣的斧抱,那自然也恢復(fù)不出來。那我們怎么知道 latent space 到底是一個什么分布呢渐溶,如何從 latent space 中采樣呢辉浦?

這可以通過在生成 latent space 時將 Encoder 的輸出限制為具有某種隨機分布(例如平均值為 0.0 且標(biāo)準(zhǔn)差為 2.0 的正態(tài)分布), 這樣我們在這個正態(tài)分布中采樣2個點,就可以很好地恢復(fù)圖像茎辐。這正是對抗性自動編碼器的能力宪郊,我們將在第 2 部分研究它的實現(xiàn)。

這部分實驗代碼

loss


image

輸入圖像


image

重建結(jié)果
image

文章持續(xù)更新弛槐,可以關(guān)注微信公眾號【醫(yī)學(xué)圖像人工智能實戰(zhàn)營】獲取最新動態(tài),一個關(guān)注于醫(yī)學(xué)圖像處理領(lǐng)域前沿科技的公眾號依啰。堅持已實踐為主丐黄,手把手帶你做項目,打比賽孔飒,寫論文灌闺。凡原創(chuàng)文章皆提供理論講解,實驗代碼坏瞄,實驗數(shù)據(jù)桂对。只有實踐才能成長的更快,關(guān)注我們鸠匀,一起學(xué)習(xí)進(jìn)步~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蕉斜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缀棍,更是在濱河造成了極大的恐慌宅此,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爬范,死亡現(xiàn)場離奇詭異父腕,居然都是意外死亡,警方通過查閱死者的電腦和手機青瀑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門璧亮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人斥难,你說我怎么就攤上這事枝嘶。” “怎么了哑诊?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵群扶,是天一觀的道長。 經(jīng)常有香客問我,道長竞阐,這世上最難降的妖魔是什么提茁? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮馁菜,結(jié)果婚禮上茴扁,老公的妹妹穿的比我還像新娘。我一直安慰自己汪疮,他們只是感情好峭火,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著智嚷,像睡著了一般卖丸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盏道,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天稍浆,我揣著相機與錄音,去河邊找鬼猜嘱。 笑死衅枫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朗伶。 我是一名探鬼主播弦撩,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼论皆!你這毒婦竟也來了益楼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤点晴,失蹤者是張志新(化名)和其女友劉穎感凤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粒督,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡陪竿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坠陈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萨惑。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖仇矾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情解总,我是刑警寧澤贮匕,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站花枫,受9級特大地震影響刻盐,放射性物質(zhì)發(fā)生泄漏掏膏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一敦锌、第九天 我趴在偏房一處隱蔽的房頂上張望馒疹。 院中可真熱鬧,春花似錦乙墙、人聲如沸颖变。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腥刹。三九已至,卻和暖如春汉买,著一層夾襖步出監(jiān)牢的瞬間衔峰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工蛙粘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垫卤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓出牧,卻偏偏與公主長得像葫男,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子崔列,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

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