1. 程式人生 > >人工智慧之GAN演算法

人工智慧之GAN演算法

不管何種模型,其損失函式(Loss Function)選擇,將影響到訓練結果質量,是機器學習模型設計的重要部分。對於判別模型,損失函式是容易定義的,因為輸出的目標相對簡單。但對於生成模型,損失函式卻是不容易定義的。

2014年GoodFellow等人發表了一篇論文“Goodfellow, Ian, et al. Generative adversarial nets." Advances inNeural Information Processing Systems. 2014”,引發了GAN生成式對抗網路的研究,值得學習和探討。今天就跟大家探討一下GAN演算法。

GAN演算法概念:

對於生成結果的期望,往往是一個難以數學公理化定義的正規化。所以不妨把生成模型的回饋部分,交給判別模型處理。於是Goodfellow等人將機器學習中的兩類模型(G、D模型)緊密地聯合在了一起(該演算法最巧妙的地方!)。

一個優秀的GAN模型應用需要有良好的訓練方法,否則可能由於神經網路模型的自由性而導致輸出結果不理想。

GAN演算法原理:

1.先以生成圖片為例進行說明:

1)G是一個生成圖片的網路,它接收一個隨機的噪聲z,通過這個噪聲生成圖片,記做G(z)。

3)在最理想的狀態下,G可以生成足以“以假亂真”的圖片G(z)。對於D來說,它難以判定G生成的圖片究竟是不是真實的,因此D(G(z)) = 0.5。

4)這樣目的就達成了:得到了一個生成式的模型G,它可以用來生成圖片。

在訓練過程中,生成網路G的目標就是儘量生成真實的圖片去欺騙判別網路D。而判別網路D的目標就是儘量把G生成的圖片和真實的圖片分別開來。這樣,G和D構成了一個動態的“博弈過程”。

2.再以理論抽象進行說明:

GAN是一種通過對抗過程估計生成模型的新框架。框架中同時訓練兩個模型:捕獲資料分佈的生成模型G,和估計樣本來自訓練資料的概率的判別模型D。G的訓練程式是將D錯誤的概率最大化。可以證明在任意函式G和D的空間中,存在唯一的解決方案,使得G重現訓練資料分佈,而D=0.5(D判斷不出真假,50%概率,跟拋硬幣決定一樣)。在G和D由多層感知器定義的情況下,整個系統可以用反向傳播進行訓練。在訓練或生成樣本期間,不需要任何馬爾科夫鏈或展開的近似推理網路。實驗通過對生成的樣品的定性和定量評估,證明了GAN框架的潛在優勢。

Goodfellow從理論上證明了該演算法的收斂性。在模型收斂時,生成資料和真實資料具有相同分佈,從而保證了模型效果。

GAN公式形式如下:

GAN公式說明如下:

1)公式中x表示真實圖片,z表示輸入G網路的噪聲,G(z)表示G網路生成的圖片;

2)D(x)表示D網路判斷圖片是否真實的概率,因為x就是真實的,所以對於D來說,這個值越接近1越好。

3)G的目的:D(G(z))是D網路判斷G生成的圖片的是否真實的概率。G應該希望自己生成的圖片“越接近真實越好”。也就是說,G希望D(G(z))儘可能得大,這時V(D, G)會變小。因此公式的最前面記號是min_G。

4)D的目的:D的能力越強,D(x)應該越大,D(G(x))應該越小。這時V(D,G)會變大。因此式子對於D來說是求最大max_D。

GAN訓練過程:

GAN通過隨機梯度下降法來訓練D和G。

1)首先訓練D,D希望V(G, D)越大越好,所以是加上梯度(ascending)

2)然後訓練G時,G希望V(G, D)越小越好,所以是減去梯度(descending);

3) 整個訓練過程交替進行。

GAN訓練具體過程如下:

GAN演算法優點:

1)使用了latent code,用以表達latent dimension、控制資料隱含關係等;

2)資料會逐漸統一;

3)不需要馬爾可夫鏈;

4)被認為可以生成最好的樣本(不過沒法鑑定“好”與“不好”);

5)只有反向傳播被用來獲得梯度,學習期間不需要推理;

6)各種各樣的功能可以被納入到模型中;

7)可以表示非常尖銳,甚至退化的分佈。

GAN演算法缺點:

1)Pg(x)沒有顯式表示;

2)D在訓練過程中必須與G同步良好;

3)G不能被訓練太多;

4)波茲曼機必須在學習步驟之間保持最新。

GAN演算法擴充套件:

GAN框架允許有許多擴充套件:

1)通過將C作為輸入,輸入G和D,可以得到條件生成模型P(x|c);

2)學習近似推理,可以通過訓練輔助網路來預測Z。

3)通過訓練一組共享引數的條件模型,可以近似地模擬所有條件。本質上,可以使用對抗性網路實現確定性MP-DBM的隨機擴充套件。

4)半監督學習:當僅有有限標記資料時,來自判別器或推理網路的特徵可以提高分類器的效能。

5)效率改進:通過劃分更好的方法可以大大加快訓練,更好的方法包括:a)協調G和D; b) 在訓練期間,確定訓練樣本Z的更好分佈。

GAN演算法應用:

GAN的應用範圍較廣,擴充套件性也強,可應用於影象生成、資料增強和影象處理等領域。

1)影象生成:

目前GAN最常使用的地方就是影象生成,如超解析度任務,語義分割等。

2)資料增強:

用GAN生成的影象來做資料增強。主要解決的問題是a)對於小資料集,資料量不足,可以生成一些資料;b)用原始資料訓練一個GAN,GAN生成的資料label不同類別。

結語:

GAN生成式對抗網路是一種深度學習模型,是近年來複雜分佈上無監督學習最具有前景的方法之一,值得深入研究。GAN生成式對抗網路的模型至少包括兩個模組:G模型-生成模型和D模型-判別模型。兩者互相博弈學習產生相當好的輸出結果。GAN演算法應用範圍較廣,擴充套件性也強,可應用於影象生成、資料增強和影象處理等領域。


相關推薦

人工智慧GAN演算法

不管何種模型,其損失函式(Loss Function)選擇,將影響到訓練結果質量,是機器學習模型設計的重要部分。對於判別模型,損失函式是容易定義的,因為輸出的目標相對簡單。但對於生成模型,損失函式卻是不容易定義的。2014年GoodFellow等人發表了一篇論文“Goodfe

我的人工智慧旅——近鄰演算法KNN(K-Nearest Neighbor)

在影象識別中,影象分類是首要工作。因為需要將不同型別的影象先進行排除。近鄰演算法是最簡單的演算法之一,但由於其弊端的存在,本篇只做瞭解性的簡單介紹, K近鄰演算法的實質 將測試圖片在已經分類好的,具有不同標籤的訓練資料圖片中,找到K張最相似的圖片,進而根據K張圖片中型別的比例大小,推斷圖

人工智慧機器學習CART演算法解析

  人工智慧之機器學習主要有三大類:1)分類;2)迴歸;3)聚類。今天我們重點探討一下CART演算法。   我們知道十大機器學習中決策樹算法佔有兩席位置,即C4.5演算法和CART演算法,可見CART演算法的重要性。下面重點介紹CART演算法。   不同於ID3與C4.5,CART為一種二分

人工智慧搜尋策略-A*演算法入門

現在你已經明白了基本的方法,自己用程式實現時還有一些事情要考慮.下面是我在使用C++和Blitz Basic實現時遇到的問題,但這些要點同樣適用於其它語言.   1.其它的元素(避免碰撞):如果你已經仔細看過我的樣例程式碼,你就會發現它完全忽略螢幕上的其它元素.不同的遊戲,這可能是可以接受,也可能不是.如果在

第一章人工智慧機器學習演算法體系彙總

參加完2017CCAI,聽完各位專家的演講後受益匪淺。立志寫“人工智慧之機器學習”系列,此為開篇,主要梳理了機器學習演算法體系,人工智慧相關趨勢,Python與機器學習,以及結尾的一點感想。 1.人工智慧之機器學習體系彙總 【直接上乾貨】此處梳理出面

人工智慧機器學習與深度學習-11機器學習實戰常見演算法示意

機器學習的常見演算法示意 決策樹、聚類、時間序列、樸素貝葉斯、SVM、關聯規則、神經網路、HMM、迴歸、遺傳演算法、K-NN、文字挖掘   機器學習的工具 lSPSS Clementine(modeler) lSAS Enterprise Miner

人工智慧演算法知識與實戰篇(附資源)

寫在前頭 1、課程的選擇: 選擇一門完整的演算法課程,並以此課程為主,系統性學習;公眾號或者其他材料都是輔助,裡面主要是零碎的知識。推薦業內經典課程。 2、本號不涉及技術層面的內容: 沒有那個水平;前人已經有非常完善的課程體系 機器學習篇 1、知識內容 2、

人工智慧最大最小值演算法+剪枝優化(演算法 + C++實現)

1、最小最大值方法簡述         現在我們來看看博弈樹節點標註的另一種方法:最小最大值方法。整個博弈樹儘管大的出奇,然而在只有一部分有用的情況下,利用最小最大值方法是有其優點的,很容易推廣使用。         比方說,競賽的結果是以錢為賭注的。為方便起見,設賭金為一

程序互斥軟體實現Dekker演算法

一. 為什麼需要互斥? 大多數系統允許多個程序共享資源(如CPU,IO裝置,硬碟等), 為了保證程序間能夠互不影響、安全正確地訪問這些共享資源, 就必須對程序訪問共享資源採取互斥控制.   二. 名詞說明: 臨界資源: 對於某一時刻僅允許一個程序訪問的共享資源.臨界區: 訪問臨界資源的程式程

人臉檢測face_recognition演算法除錯

參考:https://github.com/ageitgey/face_recognition 公司專案需求,要出一個人臉檢測與識別的demo,檢視網上比較成熟的是face_recognition方案,因此在電腦上按照推薦步驟進行除錯。face_recognition使用dlib最先進的面部

聚類演算法DBSCAN演算法二:高維資料剪枝應用NQ-DBSCAN

一、經典DBSCAN的不足 1.由於“維度災難”問題,應用高維資料效果不佳 2.執行時間在尋找每個點的最近鄰和密度計算,複雜度是O(n2)。當d>=3時,由於BCP等數學問題出現,時間複雜度會急劇上升到Ω(n的四分之三次方)。 二、DBSCAN在高維資料的改進 目前的研究有

聚類演算法DBSCAN演算法之一:經典DBSCAN

DBSCAN是基於密度空間的聚類演算法,與KMeans演算法不同,它不需要確定聚類的數量,而是基於資料推測聚類的數目,它能夠針對任意形狀產生聚類。 1.epsilon-neighborhood epsoiln-neighborhood(簡稱e-nbhd)可理解為密度空間,表示半徑為e

分散式一致性協議Paxos演算法

最近特別喜歡一句話:實踐是最好的成長,發表是最好的記憶。 筆者在今年國慶7天沒有回家,累計有6天的時間是在公司度過,要麼寫部落格,要麼看書。我記得當時寫的關於分散式系統一致性的原理和實踐。作者是倪超。書名《從Paxos到Zookeeper分散式一致性原理與實踐》。當時就想要通過發表Paxos來跟自己做心靈的

Java加密演算法

加密演算法主要分為對稱加密、非對稱加密、Hash加密。 一、何為對稱加密?   對稱加密是指對稱密碼編碼技術,它的特點是檔案加密和解密使用相同的金鑰加密。 對稱機密的金鑰一般小於256bit。因為就金鑰而言,如果加密的金鑰越大,則其計算的複雜度越高,所需要的時間越長,而如果使用的金鑰較小,則很容易破解,

WF曲速未來:區塊鏈核心演算法Paxos演算法

Paxos演算法解決的問題是在一個可能發生訊息可能會延遲、丟失、重複的分散式系統中如何就某個值達成一致,保證不論發生以上任何異常,都不會破壞決議的一致性。 先帶你會看一下libpaxos3的程式碼: 第一步獲取和編譯LibPaxos3所需的基本步驟: 執行示例  

人工智慧人臉識別系統-郭冠召-專題視訊課程

人工智慧之人臉識別系統—1750人已學習 課程介紹         本課程以具體例子展示以Python語言實現的人臉識別系統,介紹與人臉識別演算法相關的各個子演算法的基本概念和實現人臉識別的基本步驟.同

決策樹ID3演算法實現(python) [置頂] 怒寫一個digit classification(不斷更新中)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

mroC3演算法

mro之C3演算法 # C3演算法 歸併演算法 class A(object): pass class B(A): pass class C(A): pass class D(B): pass

Java中的HashCode 1 hash演算法基本原理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!