vae-gan如下圖所示,也就是vae+gan的組合。
我們知道vae是由乙個編碼器乙個解碼器組成,編碼器可以將資料對映到乙個低維的空間分布code c,而解碼器可以將這個分布還原回原始資料,因此decoder是很像gan中的generateor,如果再後面拼接上乙個判別器d,這樣的話,前兩個模組就是vae,後倆模組就是gan。
訓練的時候,decoder輸出的x』要和原始的x盡可能接近(l1或l2距離),x』和真實資料x經過d需要判別出是是否是真實的,訓練結束後,我們就能直接取出gan的部分做生成使用,也可以取出vae的部分,做壓縮降維處理。
為什麼要這麼設計呢?
vae有乙個很大的問題就是,解碼產生的往往都比較模糊。雖然我們希望decoder輸出的x』要和原始的x盡可能接近,也就是loss越小越好,但是很難真的能loss小到0啊,loss越小不代表越是看起來越真實啊,因此我們就需要乙個判別器來判別是不是真實的,可以來幫助vae提高真實性。
另一方面從gan的角度來看,之前我們的generateor輸入都是隨機的,比如取樣某個雜訊輸入,訓練起來比較難,現在有了vae,我麼就能準確摸索到generateor的輸入的大概空間分布了,這樣會變得準確高效一些。
也就是vae和gan相輔相成,互幫互組,最後訓練完了後,vae和gan都是表現的更加優秀。
既然vae和gan能相輔相成,我們也可以做出下面的變化,這是不是很熟悉?如下圖:
是不是很熟悉?因為這個結構就像是cyclegan的結構啊,我們希望輸入generator的z和經過generator和encoder後得到的z越接近越好,此時也需要判別器d來幫助vae提高影象真實性。
encoder希望重構的和原始盡可能接近,且經過encoder後p(z』|x) 的分布和p(z)的分布盡可能接近,散度越接近越好。
decoder/generator希望重構的和原始盡可能接近,也希望能欺騙過discriminator,希望經過decoder的z(包括encoder編碼出的z和我們自行輸入的z),得到的輸出影象能被discriminator判別為真的(包括重構和生成)。
discriminator希望能分別出真實和虛假(包括重構和生成)。
一些變化:
vaegan存在乙個問題,就是encoder編碼出的z不一定完全符合我們期望的normal z的樣式,也就是encoder編碼出的z和我們自行輸入的z可以存在細微的不同,但是通過generator的處理,它們產生的輸出都能夠騙過discriminator。
此時呢,discriminator希望判別出真正**的,得出對應的one-hot輸出。但是encoder和decoder都希望自己能輸出real。也沒多大差別了。
真實自然不用說,是直接輸入給d的資料庫樣本的真實資料。
其中重構x_rec與生成的差異是,重構是真實通過encoder與decoder之後產生的,如下圖所示。
而生成x_g僅僅是乙個初始分布z通過decoder之後產生的,如下圖所示:
於是現在重構x_rec與生成x_g的差異能夠被discriminator學到,又因為generator是共用的,那為了消除這種差異只能讓輸入z接近一致,也就是encoder編碼出的z不斷逼近我們給定的輸入z,最終幾乎完全一樣。結果證明,這種模型在實驗中比vaegan有少量的提公升。
深度學習(一)深度學習學習資料
持續更新 一 學習清單 1 收集了各種最新最經典的文獻,神經網路的資源列表 2 計算機視覺學習清單 3 機器學習學習清單 二 訓練資料 人臉資料 1 香港中文大學訓練資料集 此資料庫包含了20w張人臉,每張標註了5個特徵點 以及幾十種屬性 是否微笑 膚色 髮色 性別等屬性 2 68個人臉特徵點 3 ...
深度學習系列 深度學習簡介
機器學習 使用計算機系統利用經驗改善效能,是人工智慧領域的分支,也是實現人工智慧的一種手段。表徵學習關注如何自動找出表示資料的合適方式,以便更好地將輸入變換為正確的輸出。深度學習 具有多級表示的表徵方法,在每一級 原始資料開始 通過簡單的函式將該級的表示變換為更高階的表示。可以將深度學習看作多個簡單...
深度學習深度學習(一)開篇
深度學習 深度學習 記得9年前寫的一篇部落格,十年的程式設計師,一晃眼,差不多10年又快到了。這一輪的人工智慧,深度學習,他是我見到的乙個非常特殊的程式設計方式 用資料程式設計。是的,他絕對不像其他的程式語言,是完全乙個嶄新的天地,掌握她,絕對會帶來驚喜 你會發現以前感覺超級難的東西會忽然 哇,這個...