1. 程式人生 > >只知道GAN你就OUT了——VAE背後的哲學思想及數學原理

只知道GAN你就OUT了——VAE背後的哲學思想及數學原理

引言 

短短三年時間,變分編碼器VAE(Variational Auto-encoder)同GAN一樣,成為無監督複雜概率分佈學習的最流行的方法。VAE之所以流行,是因為它建立在標準函式逼近單元,即神經網路,此外它可以利用隨機梯度下降進行優化。本文將解釋重點介紹VAE背後的哲學思想和直觀認識及其數學原理。

VAE的最大特點是模仿自動編碼機的學習預測機制,在可測函式之間進行編碼、解碼。同GAN類似,其最重要的idea是基於一個令人驚歎的數學事實:對於一個目標概率分佈,給定任何一種概率分佈,總存在一個可微的可測函式,將其對映到另一種概率分佈,使得這種概率分佈與目標的概率分佈任意的接近。

看到這裡讀者可能會一頭霧水。下面我們來一一闡明其中的含義。

可測函式之間的編解碼?什麼樣的可測函式?可測函式是測度論中的概念,它是真實世界的隨機事件到數學世界的隨機事件的對映。當然,在形式化問題過程中我們需要對這裡面的所有事件進行量化,於是我們自然地會將這個數學世界選取為歐式空間,相應的$\sigma$-代數也就是Borel $\sigma$-代數了。回到選取可測函式的問題。VAE的一個重要的哲學思想是,遵從圖模型,我們希望生成的樣本是由某些隱含變數所構造出來的。舉個例子,比如我們想要生成0-9的手寫體,影響生成這些數字的樣式可能有很多因素,比如筆畫粗細、筆尖的角度、寫者的書寫習慣、天氣好壞(天氣會影響寫者的心情,進而影響書寫方式。根據蝴蝶效應,初始條件的微小變化會影響最終的結果)。這些因素不勝列舉,一些看似不相關的因素,都有可能影響最終的結果。一個直接的方法是顯示地構造出這些隱含因素的概率分佈,但是這些因素實在是太多了,無窮多個,我們顯然不能手工構造。VAE巧妙地避開了這個問題,利用一個聯合高斯分佈作為隱含可測函式的分佈(這個隱含可測函式將上面所說的所有現實世界影響寫字樣式的隱含因素對映到歐式空間中去了),隨即將問題轉化為學習一個從隱含可測函式(隱含變數)到一個所希望生成樣本的對映。後面我們會看到,這個過程就是解碼過程。可以想象,這個對映會極為複雜。我們自然會想到利用深度學習強大的函式擬合能力來學習這個對映。

模型推導

因此,我們希望得到這樣一個生成模型,如下圖所示。

圖片描述

其中z是隱含變數(隱含可測函式),將其輸入到某種解碼器,輸出f(z),使得f(z)儘可能在保證樣本多樣性的同時與真實樣本相似。

但是如何通過學習得到這樣的解碼器呢?

這就需要我們迴歸到目標函式中去考慮問題了。我們僅僅已知一些現成的樣本,比如,回到我們的例子,我們僅僅已知0-9這些手寫體圖片的樣本,希望生成一些具有多樣性類似的樣本。那麼自然會想到利用極大似然法來估計可學習的引數Θ,即 


不失一般性,我們下面只針對單樣本x進行討論(略去其指標和可學習引數)。上面的似然函式僅僅是關於x的函式,我們需要想辦法湊出隱變數z來。 


其中q(z|x)是給定樣本下z

的某一個條件概率分佈。

這一步變換值得深思,為什麼選用一個條件概率分佈呢,而不選用q(z)或者p(z|x)呢?

因為q(z)的選取範圍太大,我們更感興趣的是那些更有可能生成x的隱變數z;關於p(z|x)p()可以認為是真實的概率分佈,我們很難得到,我們希望做的是通過q()去逼近p(),因此前者可以理解為某一種近似的概率分佈。

我們繼續進行推導, 



我們考查其中的第一項,利用貝葉斯公式 


這樣我們就推匯出VAE的一個核心等式, 


下面可以開始建模了。由前面的討論(利用一個聯合高斯分佈作為隱含可測函式的分佈), 


同樣,q(z|x)p(x|z)用聯合高斯去建模, 


自然地,問題就轉化成了用神經網路學習四種對映關係。但是,即使做了這樣的建模,對於DKL(q(z|x)||p(z|x)),我們仍然難以給出其閉式解(歸一化因子是一個複雜的多重積分)。因此只能退而求其次,我們對其做縮放 


對對數似然的下界進行最大化。

進一步推導,我們將前面建模的概率模型帶入這個下界中去。注意到在實際實現過程中,為了簡化起見,Λ(z)取與z無關的單位陣I,於是有 


最大化這個下界等價於最小化 

其中Θ為四個待學習對映的可學習引數集合。

至此,整個的學習框架就清晰了,如下圖所示。

圖片描述

總結起來,整個訓練框架就是在對樣本x進行編解碼。q是將樣本x編碼為隱變數z,而p又將隱含變數z解碼成f(z),進而最小化重構誤差。訓練的目的是學習出編碼器的對映函式和解碼器的對映函式,所以訓練過程實際上是在進行變分推斷,即尋找出某一個函式來優化目標。因此取名為變分編碼器VAE(Variational Auto-encoder).

關注具體實現的讀者可能會發現在“解碼器Decoder到μ(x)Σ(x)”這個階段從技術上沒辦法進行梯度反傳。的確如此,上圖只是作為幫助大家理解的示意圖,而真正實現過程中,我們需要利用重引數化這個trick,如下圖所示。

圖片描述

重引數化這個名字聽起來很神祕,其實就是基於下面的一個簡單的數學事實: 
如果z(μ,Σ),那麼隨機變數z可以寫成 


其中ϵ(0,I).

利用重引數化這個trick,我們成功地規避了這個問題。

討論

A. 既然任意概率分佈都可以作為隱變數的分佈,為什麼都用高斯分佈去建模呢? 
這個問題的答案可能在於兩個方面。一方面是,建模高斯分佈給我們帶來了良好的可計算性,能得到一些解析的結果。另一方面,可能是基於下面的數學事實,

maxff(x)

相關推薦

知道GANOUT——VAE背後哲學思想數學原理

引言 短短三年時間,變分編碼器VAE(Variational Auto-encoder)同GAN一樣,成為無監督複雜概率分佈學習的最流行的方法。VAE之所以流行,是因為它建立在標準函式逼近單元,即神經網路,此外它可以利用隨機梯度下降進行優化。本文將解釋重點介紹VAE背後的哲學

【朝花夕拾】跨程序通訊,知道AIDL,OUT

一、前言       提起跨程序通訊,大多數人首先會想到AIDL。我們知道,用AIDL來實現跨程序通訊,需要在客戶端和服務端都新增上aidl檔案,並在服務端的Service中實現aidl對應的介面。如果還需要服務端給客戶端傳送資訊,還需要再添加回調相關的aidl檔案,以及使用Re

作為程式設計師知道中國網際網路300強OUT

        很多程式設計師們工作一段時間之後,都想跳槽到綜合實力更強的公司以獲取高薪資或者接觸到前沿的技術,但是哪些行業值得我們投 入大量的時間,哪些公司屬於我們行業中的佼佼者呢,那麼小編給您分析下

在科技圈不懂“機器學習”?那out

更多 傳統 價值 研究 增長 經驗 連接 流程 嵌入 當聯網的終端設備越來越多時,產生的信息數據也將呈指數式增長,大型、復雜、增長快速的數據收集已經無處不在。而機器學習能夠擴增這些數據的價值,並基於這些趨勢提出更廣泛的應用情境。 那麽,被人們津津樂道的機器學習到底是什麽呢

還在自建Redis緩存?那out

隊列 維護 字符 管理操作 穩定 雲計 切換 帶來 9.png Redis 是什麽?簡單來說,Redis是一個開源的內存數據庫,支持Key-Value等多種數據結構,可用於緩存、事件發布或訂閱、高速隊列等場景。Redis使用ANSIC語言編寫,支持網絡,提供字符串、哈希、列

【好課推薦】再不懂區塊鏈,out!快快開啟進階之路,挑戰高薪職位吧

理念 培訓 政府 改變 全國 要素 sha 精品 下一個 區塊鏈技術被認為是繼蒸汽機、電力、互聯網之後,下一代顛覆性的核心技術。 如果說蒸汽機釋放了人們的生產力,電力解決了人們基本的生活需求,互聯網徹底改變了信息傳遞的方式,那麽區塊鏈作為構造信任的機器,將可能徹底改變整個人

Android EventBus實戰 沒聽過out

                轉載請表明出處:http://blog.csdn.net/lmj623565791/article/details/40794879,本文出自:【張鴻洋的部落格】1、概述最近大家面試說經常被問到EventBus,github上果斷down了一份,地址:https://githu

技術人再不懂區塊鏈,OUT?漫畫版

“這幾天區塊鏈技術無意中被徐小平“忽悠”的更加紅火了,蹭著區塊鏈的大火,今天小編就再給大家普及一

【轉】網際網路行業各大崗位分析,全是乾貨,不看OUT

網際網路無疑是當今最熱門的行業。這個行業高薪資的背後也是大量的加班和激烈的競爭。擇業不能只看薪水,適合自己才是最重要的。網際網路公司都需要哪些人才?哪些職位更搶手?!本文對近年來網際網路職位資料進行盤點,一起來看看職位資料有哪些值得深挖的奧祕吧!▼網際網路無疑是當今最熱門的行

再不懂區塊鏈保險out,區塊鏈保險雲保鏈CIC走近日常生活

A:電商客服 B:使用者 C:客服的好友A:您好,先生,請問有什麼可以幫助您的麼?B:是這樣的,馬上就是情人節了,我想在你們這兒買一束鮮花送我女朋友,可是我害怕你們這兒的鮮花送到我這兒的時候會不新鮮。A:先生,請您放心,我們的鮮花都是當時採摘當時發貨的,並且採用專業的運輸方式

【騰訊TMQ】再不建模out

導語 加入測試建模小組八個多月的時間,在日常的測試工作中,經常會有身邊的小夥伴們對我們的建模很好奇,會問“什麼是測試建模?”“為什麼要測試建模?”“建模能給我們帶來什麼好處?”“建模和我們現在的測試設計區別到底在哪裡?“等等諸如此類的問題。思來想去,實在有必要

【Spring註解驅動開發】還不會使用@Resource和@Inject註解?那out!!

## 寫在前面 > 我在 **冰河技術** 微信公眾號中發表的《[【Spring註解驅動開發】使用@Autowired@Qualifier@Primary三大註解自動裝配元件,你會了嗎?](https://mp.weixin.qq.com/s?__biz=Mzg3MzE1NTIzNA==&mi

js日誌輸出還是隻會console.log麼,那out

![](https://img2020.cnblogs.com/other/1815316/202010/1815316-20201010073804416-899051342.png) 幾乎所有的javascript開發者最常使用的日誌列印除錯api都是`console.log()`,其實還有很多的選項供

知道ajax?已經out

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由前端林子發表於雲+社群專欄 隨著前端技術的發展,請求伺服器資料的方法早已不侷限於ajax、jQuery的ajax方法。各種js庫已如雨後春筍一般,蓬勃發展,本文主要想介紹其中的axios和fetch。 0.引入 ajax(As

關於AI——不知道這些概念落伍!!

作者 Adam Temper 編譯 Mika 本文為 CDA 資料分析師原創作品,轉載需授權 對所有事情都有一定了通常比擁有一項專業技能更實用。對於進入新興市場領域的人來說尤其如此。特別是指的注意的科技領域。 許多人認為他們對AI有一些瞭解。但是這個領域很新,而且在飛速發展,專家們每天都在開拓新領

分享程式設計師喜歡逛的這幾個網站,不知道的話OUT

如果對程式設計感興趣的話,可以通過哪些網站來學習程式設計知識呢?今天就來介紹程式設計師喜歡逛的幾個牛掰的網站,瞭解這些程式設計師每天休閒時間都在看什麼! 1.部落格園 部落格園是一個面向開發者的知識分享社群,可以那麼幫助開發者通過網際網路來分享知識,可以幫助程式設計師通過程式碼來改變

再不擁抱Docker容器,的儲存out!

以Docker為代表的容器,在人們眼中是平臺層面的技術。與屬於基礎架構層面的虛擬機器相比,容器看似與底層 儲存裝置沒有什麼必然的聯絡,甚至許多情況下使用本地儲存就可以了。那麼Docker到底有沒有 企業儲存方面的需求?它與傳統儲存陣列之間有哪些需要配合的地方呢

學會抄菜的時候,學會大數據

抽油煙機 鍋碗瓢盆 大冬瓜 豆腐塊 宜家 最近在學習數倉跟BI,突然發現,結合自己所學會抄的菜。試著把學過的大數據重新理解一番,希望各位都能來一起討論,共同進步。走進廚房 走進廚房後,相信大家會看到各種鍋碗瓢盆,案板,切菜刀,調料,櫥櫃,水池...........而這些就相當於是大數

“懶”也要有境地---大部分程序猿都在的地方,再不來out

公眾賬號 rac 經驗 回復 賬號 左右 post 程序 content 別人在玩。你也在玩,為什麽別人天天進步,職業晉升。而你則原地踏步。事實上你和他的距離僅僅有一個微信公眾號的距離。 假設你說。我根本沒有時間學習,不想看書,我僅僅想睡覺。我想你要接著往下看,由

牛角先生面包加盟店告訴,抓住顧客心理,抓住賺錢的秘訣

一起 產品需求 ref box 愛好 生存 isp 有關 職業 烘焙食物職業最早盛行於歐洲,後通過日本、臺灣進入我國大陸,在我國烘焙職業蓬勃開展。大大小小“前店後廠”的面包房,漫山遍野般遍及大街小巷,許多國外品牌也殺進來,瞄準我國巨大的消費商場。烘焙商場迅速開展