1. 程式人生 > >七個不容易被發現的生成對抗網路(GAN)用例

七個不容易被發現的生成對抗網路(GAN)用例

像許多追隨AI發展的人一樣,我無法忽略生成建模的最新進展,尤其是影象生成中生成對抗網路(GAN)的巨大成功。看看下面這些樣本:它們與真實照片幾乎沒有區別!

 

從2014年到2018年,面部生成的進展也非常顯著

這些結果讓我感到興奮,但我內心總是懷疑它們是否真的有用且廣泛適用。基本上我“懷疑”,憑藉生成模型的所有功能,我們並沒有真正將它們用於比高解析度面部表情生成這些更實用的東西。當然,有些企業可以直接基於影象生成或風格轉移(如遊戲行業中的角色生成或關卡生成,從真實照片到動漫頭像的風格轉換),但我一直在尋找GAN和其他生成方式更多領域模型的應用。我想通過生成模型,我們不僅可以生成影象,還可以生成

文字聲音音樂、結構化資料,如遊戲關卡藥物分子

在本文中,我將介紹7個用例。其中一些我已經親自確認它們的用處,其他一些正在研究中,但這並不意味著它們不值得嘗試。所有這些使用生成模型建立的例子都可以應用於不同的領域,因為我們的主要目標不是生成一些現實的東西,而是利用神經網路的內在知識來完成新任務。

1.資料增強

最明顯的應用是訓練模型:從我們的資料生成新樣本以增強我們的資料集。我們如何檢查這種增強是否真的有幫助呢?有兩個主要策略:我們可以在“假”資料上訓練我們的模型,並檢查它在真實樣本上的表現。對應的我們在實際資料上訓練我們的模型來做一些分類任務,並且檢查它對生成的資料的執行情況。如果它在兩種情況下都能正常工作,你可以隨意將生成模型中的樣本新增到你的實際資料中並再次重新訓練,你應該期望獲得性能。

NVIDIA展示了這種方法的驚人例項:他們使用GAN來增加具有不同疾病的醫學腦CT影象的資料集,並且表明僅使用經典資料的分類效能是78.6%的靈敏度和88.4%的特異性。通過新增合成數據增強,可以增加到85.7%的靈敏度和92.4%的特異性。

 

2.隱私保護

許多公司的資料可能是祕密的,敏感的(包含患者診斷的醫療資料),但有時我們需要與顧問或研究人員等第三方分享。如果我們只想分享關於我們的資料的一般資訊,包括最重要的模式,物件的細節和形狀,我們可以使用生成模型來抽樣我們的資料示例以與其他人分享。這樣我們就不會分享任何確切的機密資料,只是看起來完全像它的東西。

更困難的情況是我們想要祕密共享資料。當然,我們有不同的加密方案,如同態加密,但它們有已知的缺點,例如在10GB程式碼中隱藏1MB資訊。2016年,谷歌開闢了一條關於使用GAN競爭框架加密問題的新研究路徑,其中兩個網路必須競爭建立程式碼並破解它:

 

但最好的結果不是獲得的程式碼效率,我們應該記住,通過神經網路獲得的表示通常包含有關輸入資料的最有用的資訊,並且從這個壓縮資料我們仍然可以進行分類/迴歸/聚類。如果我們將“壓縮”替換為“加密”,那麼這個想法很明確:這是與第三方共享資料而不顯示任何資料集的驚人方式。它比匿名甚至假樣本生成強得多,可能是下一件大事(當然使用區塊鏈)

3.異常檢測

變分自動編碼器(VAE)或GAN等主要生成模型由兩部分組成。VAE具有編碼器和解碼器,其中第一個對分佈進行建模,第二個重建。GAN由生成器和鑑別器組成,第一個模擬分佈,第二個判斷它是否接近訓練資料。我們可以看到,它們在某種程度上非常相似:有建模和判斷部分(在VAE中我們可以考慮將重建視為某種判斷),建模部分應該學習資料分佈。如果我們將一些不是來自訓練樣本分發,那麼判斷部分將會發生什麼?訓練有素的GAN鑑別器會告訴我們0,並且VAE的重建誤差將高於訓練資料的平均值。這就是我們接下來要說的:無監督異常探測器,它易於訓練和評估。在本文中你可以找到例子是用於異常檢測,這裡可以找到自動編碼的。我還添加了自己的基於自動編碼器的粗略草圖——用於在Keras中編寫的時間序列。

4.判別性建模

深度學習所做的一切都是將輸入資料對映到某個空間,在這個空間中,通過SVM或邏輯迴歸等簡單的數學模型可以更容易地分離或解釋。生成模型也有自己的對映,我們從VAE開始。Autoencoders將輸入樣本對映到一些有意義的潛在空間,基本上我們可以直接訓練一些模型。它有意義嗎?它是否與僅使用編碼器層和訓練模型直接進行分類有所不同?確實是。自動編碼器的潛在空間是複雜的非線性降維,並且在變分自動編碼器的情況下也是多變數分佈,這可以比一些隨機初始化更好地開始訓練判別模型。

GAN對於其他任務來說有點難度。它們被設計為從隨機種子生成樣本,並且不期望任何輸入。但我們仍然可以至少以兩種方式利用它們作為分類器,第一個已經研究過的,就是利用鑑別器將生成的樣本分類到不同的類別,同時只是告訴它是真的還是假的。我們可以期望從獲得的分類器更好地規則化(因為它已經看到不同型別的噪聲和輸入資料的擾動)並且具有用於異常值/異常的額外類:

5.域遷移(Domain adaptation)

我認為,這是最強大的用處之一。在實踐中,我們幾乎從未擁有相同的資料來源來訓練模型並在現實世界環境中執行它們。在計算機視覺中,不同的光線條件、相機設定或天氣可以使非常準確的模型變得無用。在NLP/語音分析中,俚語或重音會破壞你在“語法正確”上訓練的模型的表現。在訊號處理中,你很可能擁有完全不同的裝置來捕獲資料以訓練模型和生產。我們知道機器學習模型執行是從一個條件到另一個條件的對映,保留主要內容,但要更改細節。

例如,如果你正在處理應該在某種CCTV攝像機上工作的應用程式,但是你已經在高解析度影象上訓練了你的模型,那麼你可以嘗試使用GAN來對影象進行去噪處理並對其進行增強。我可以從訊號處理領域提供更激進的例子:有很多與手機加速度計資料相關的資料集,描述了不同的人的活動。但是,如果你想在腕帶上應用受過手機資料訓練的模型,該怎麼辦?GAN可以嘗試幫助你還原不同型別的動作。一般來說,生成模型不是從噪聲中進行生成,而是一些預定義的先驗模型可以幫助你進行域遷移,協方差轉換以及與資料差異相關的其他問題。

6.資料處理

我們在前一段談到了風格轉移。我不喜歡的是它的對映函式適用於整個輸入,如果我只想換一些照片的鼻子怎麼辦?或改變汽車的顏色?或者在不完全改變的情況下替換演講中的某些單詞?如果我們想要這樣做,那麼我們的物件就需用一些有限的因子來描述,例如,臉是眼睛,鼻子,頭髮,嘴脣等的組合,這些因素有它們自己的屬性如顏色、大小等。如果我們可以將帶有照片的畫素對映到某些...我們可以調整這些因素並使鼻子更大或更小?有一些數學概念允許它:多樣性假設,對我們來說好訊息是,自動編碼器可能實現。

7.對抗訓練(Adversarial training)

你可能不同意我新增關於機器學習模型攻擊的文字,但它對生成模型(對抗性攻擊演算法確實非常簡單)和對抗性演算法影響很大。也許你熟悉對抗性例子的概念:模型輸入中的小擾動(甚至可能是影象中的一個畫素)導致完全錯誤的效能。其中一個最基本的方法叫做對抗性訓練:基本上是利用對抗性的例子來構建更準確的模型。

如果不深入細節,這意味著我們需要雙人遊戲:對抗模型需要最大化其影響力,並且存在需要最小化其損失的分類模型。看起來很像GAN,但出於不同的目的:使模型對對抗性攻擊更穩定,並通過某種智慧資料增強和正規化提高其效能。

小貼士

在本文中,我們已經介紹了幾個例子,說明GAN和其他一些生成模型如何用於生成漂亮的影象,旋律或短文字。當然,他們的主要長期目標是生成以正確情況為條件的真實世界物件,但今天我們可以利用他們的分佈建模和學習有用的表示來改進我們當前的AI、保護我們的資料、發現異常或適應更多現實世界的案例。我希望你會發現它們很有用,並將適用於你的專案。


阿里雲雙十一1折拼團活動:滿6人,就是最低折扣了!
【滿6人】1核2G雲伺服器99.5元一年298.5元三年 2核4G雲伺服器545元一年 1227元三年
【滿6人】1核1G MySQL資料庫 119.5元一年
【滿6人】3000條國內簡訊包 60元每6月
參團地址:http://click.aliyun.com/m/1000020293/


原文連結
本文為雲棲社群原創內容,未經允許不得轉載。