機器學習-Gan算法

2018/11/07

機器學習-Gan算法

Alpha go:運用蒙特卡洛搜索樹,深度學習,機器學習三種方法 1920個CPU和280個GPU,理論算法峰值2332TFLOPS
人工智能:因為物聯(lián)網(wǎng)、云計算、大數(shù)據(jù)的出現(xiàn),導致海量數(shù)據(jù)的出現(xiàn),人工智能能對海量的數(shù)據(jù)進行處理和挖掘,導致人工智能的火熱。

海量數(shù)據(jù)、類型復雜、價值分散

webwxgetmsgimg.jpg

工業(yè)自動化不等于人工智能!

圖靈測試(Truning Test):如果測試主持人能分辨出人和機器的概率小于50%,則認為機器具有了智能。
清華矣曉沅團隊開發(fā)的作詩機器人“九歌”:https://gaoxiao.eol.cn/news/7958.html
測試使用環(huán)境:https://jiuge.thunlp.cn//

1997年IBM深藍——超級國際象棋 ——90年代人工智能相對穩(wěn)定階段

滴滴的事故率萬分之二,出租車事故率為萬分之四

人工智能公共數(shù)據(jù)集
機器視覺——ImageNet、SVHN、Labeled Faces in the Wild
NLP——Wiki Text、SQuAD、Comon Crawl、Billion Words
語音識別——CHIME、TIMIT、

webwxgetmsgimg (1).jpg

錯誤率低于5%,已經(jīng)高于人類的識別率。

image
image
image
image
image

寬度學習、自適應的深度學習算法正在成熟,有可能彌補深度學習的不足和可解讀性。

Gan算法介紹

二次元頭像生成!
1.k-means :只計算中心點,不計算方差,k-means是一種特殊的EM算法。


webwxgetmsgimg.jpg

中心點:最開始隨機選兩個,計算距離后,用算數(shù)平均值計算中心點。

2.EM Alogrithm


webwxgetmsgimg.jpg

webwxgetmsgimg (1).jpg

webwxgetmsgimg.jpg

webwxgetmsgimg (1).jpg

跟k-meas類似,區(qū)別在于k-meas計算點到中心點的距離,EM用公式計算點到中心點的概率!

中心點:最開始隨機選兩個,計算概率(方差)后,用加權算數(shù)平均值(各個點的概率*數(shù)值)計算中心點和方差。

在使用中先用k-means計算出中心點,再用EM算法,這樣最開始選取的隨機點比較接近結果。

分多少類?有聚類分析方法,但這比較笨,只能從兩類一直計算到總數(shù)開根號-1類。

3.Maximum likelihood Estimattion


webwxgetmsgimg.jpg

基本上使用高斯算法,以中心點加方差表示
高斯分布是自然界最常見的分布。


webwxgetmsgimg (2).jpg

Gan的核心思想:自然界中有些模型不能用高斯分布表示,于是改為神經(jīng)網(wǎng)絡來表示。

Basic Idea of GAN

-Gernerator G Hard to learn by maximum likelihood
G is a function,input z,output x
Given a prior distribution Pprior(z), a probability distribution Pg(x) is defined by function G
-Discriminator D
D is a function, input x, output scalar
Evaluate the "difference" between Pg(x) and Pdata(x)

Gan的發(fā)表資料(原始資料)


webwxgetmsgimg (3).jpg

2018/11/7 PM

Gan 算法介紹

Basic Idea
GAN學習筆記(他人)https://baijiahao.baidu.com/s?id=1608234436964134667&wfr=spider&for=pc

1、什么是GAN

GAN 主要包括了兩個部分,即生成器 generator 與判別器 discriminator。生成器主要用來學習真實圖像分布從而讓自身生成的圖像更加真實,以騙過判別器。判別器則需要對接收的圖片進行真假判別。在整個過程中,生成器努力地讓生成的圖像更加真實,而判別器則努力地去識別出圖像的真假,這個過程相當于一個二人博弈,隨著時間的推移,生成器和判別器在不斷地進行對抗,最終兩個網(wǎng)絡達到了一個動態(tài)均衡:生成器生成的圖像接近于真實圖像分布,而判別器識別不出真假圖像,對于給定圖像的預測為真的概率基本接近 0.5(相當于隨機猜測類別)。

對于 GAN 更加直觀的理解可以用一個例子來說明:造假幣的團伙相當于生成器,他們想通過偽造金錢來騙過銀行,使得假幣能夠正常交易,而銀行相當于判別器,需要判斷進來的錢是真錢還是假幣。因此假幣團伙的目的是要造出銀行識別不出的假幣而騙過銀行,銀行則是要想辦法準確地識別出假幣。

image
image

剛才的描述中,你可能不太明白如何訓練新一代的Generator來騙過上一代的Discriminator,方法其實很簡單,你可以把新一代的Generator和上一代的Discriminator連起來形成一個新的NN,我們希望最終的輸出接近1,然后我們就可以拿中間的結果當作我們的新的圖片的輸出,下圖很形象的顯示了上面的過程:


image

2、GAN原理深入

先來回顧一下我們的極大似然估計,假設我們有一大堆data,他的分布是Pdata(x),我們可以認為這里的data就是一大堆圖片,但是,我們有了這一大堆東西,再想生成一個新的data是不容易的,因為我們不知道這個分布的具體參數(shù),所以,我們就想估計這堆數(shù)據(jù)的所服從的參數(shù)。那么,我們可以從Pdata(x)產(chǎn)生一大堆sample,然后,我們就希望找一組參數(shù),使得服從這組參數(shù)的分布產(chǎn)生這堆sample的可能性最大。


image

下面是極大似然估計的化簡過程,因為這堆sample都是從Pdata(x)里面出來的,所以,我們可以進行下面的約等轉換。然后我們把期望轉換為積分,同時加上后面一項(后面一項是一個常數(shù),只是為了更簡單的表示KL散度)


image

KL散度又稱相對熵。設P(x)和Q(x)是X取值的兩個概率概率分布,則對的相對熵為:


image

在一定程度上,熵可以度量兩個隨機變量的距離。KL散度是兩個概率分布P和Q差別的非對稱性的度量。KL散度是用來度量使用基于Q的編碼來編碼來自P的樣本平均所需的額外的位元數(shù)。 典型情況下,P表示數(shù)據(jù)的真實分布,Q表示數(shù)據(jù)的理論分布,模型分布,或P的近似分布。

那么,在GAN中,我們用NN的參數(shù)表示PG的參數(shù)θ:


image

那么 ,GAN的基本原理如下:


image

所以,我們最終的求解目標是:


image

我們可以用下面的圖來形象的表示上面的求解問題,看下面的圖,我們可以很清楚的知道,我們要找的G就是G3,而D則是最高點的D。


image

那么 ,V是什么,V寫作下面的式子,你不必管這個東西怎么來的,我只想說,能想到這個的人真的是太可怕了。當我們的V寫成下面這樣子的時候,我們?nèi)axV(G,D)就餓能表示Pg和Pdata的差異。
為什么V要寫成這樣能表示二者的差異呢?這個可以通過嚴格的數(shù)學證明推導出,這里,對于一個給定的G,我們來求解maxV(G,D):


image

對于任何一個常數(shù),因為Pdata和G這里都是給定的,我們可以認為這里是常數(shù),那么D取什么可以得到最大呢,很簡單,導數(shù)為0的情況下。


image
image

在有了D的值之后,我們就可以帶入原式中啦:


image

繼續(xù)化簡,我們可以得到兩個KL散度,進而得到JS散度:


image

相信大家對于求解得到D的過程已經(jīng)非常明白了,我自己再推到一下后面的式子吧,希望能夠比PPT更加明白一些:


image

所以,現(xiàn)在我們就明白了,按照上面的V的定義,我們就能得到二者的差距,當然我們可以定別的,就能產(chǎn)生別的散度度量。

那么,給定了一個G,我們能夠通過最大化V得到D,那么我們?nèi)绾吻蠼釭呢,用梯度下降就好啦:

image
image
image

3、實際中的GAN

剛才我們講的是理論部分的內(nèi)容,但是在實際中,Pdata和Pg我們是不知道的,我們沒辦法窮舉所有的x,所以,我們只能采用采樣的方法,同時可以采用我們二分類的思路,我們把Pdata(x)中產(chǎn)生的樣本當作正例,把Pg(x)產(chǎn)生的樣本當作負例,那么,下面V可以看作是我們二分類的一個損失函數(shù)的相反數(shù)(少了負號嘛):

image
image

也就是說,最大化V的話,其實就是最小化我們二分類的損失,下面的Minimize少了一個負號,所以我們要找的D,就是能使二分類的損失最小的D,也就是能夠正確分辨Pdata和Pg(x)的D,這也正符合我們想要找的discriminator的定義,是不是很神奇!


image

所以,總結一下,實踐中我們的GAN基于如下的步驟:


image

上面的步驟很好的解釋了我們剛才對于GAN的解釋:首先,我們又一個第一代的Generator,然后他產(chǎn)生一些圖片,然后我們把這些圖片和一些真實的圖片丟到第一代的Discriminator里面去學習,讓第一代的Discriminator能夠真實的分辨生成的圖片和真實的圖片,然后我們又有了第二代的Generator,第二代的Generator產(chǎn)生的圖片,能夠騙過第一代的Discriminator,此時,我們在訓練第二代的Discriminator,依次類推。

在實際中,我們有可能做下面的變換,可以加快我們的訓練速度:

image

GAN 官方PPT資料:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS17.html

image.png

https://zhuanlan.zhihu.com/p/24767059

非常好的教程做練手,設計爬蟲,opencv,dcgan

Community contributions: #pix2pix

GAN代碼解析(tensorflow實現(xiàn))文章結尾有GAN資料合集
https://blog.csdn.net/u013818406/article/details/73718265

中文手寫識別:http://python.jobbole.com/87509/

MNIST代碼背后的故事:http://www.oreilly.com.cn/ideas/?p=838

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

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

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