天天看點

以為GAN隻能“炮制假圖”?它還有這7種另類用途

最近,AI方案設計師Alexandor Honchar在Medium網站上分享一篇文章。他認為生成對抗網絡(GAN)目前在生成圖像取得了巨大進展,生成的圖像幾乎能夠以假亂真,并且在4年間,面部圖像的生成也越來越精細。

以為GAN隻能“炮制假圖”?它還有這7種另類用途

但Honchar認為,GAN不該局限在圖像生成上,他認為GAN可以應用在更廣泛的領域,并提出了GAN在其他領域的應用執行個體(項目連結見文末)。其中一些已經證明可行,并有學術成果産出,另一些作者目前還在探索中。

以下就是作者總結的GAN的7種”另類“用法:

增加資料

GAN可以訓練模型用已有的資料集去産生增加資料。

我們如何檢查增加的資料是否真的有幫助呢?主要有兩個政策:我們可以在“假”資料上訓練我們的模型,并檢查它在真實樣本上的表現;與之相對的是,我們用真實資料訓練模型來做一些分類任務,并且在檢查它對生成的”假“資料的表現。

如果它在以上兩種情況下都能正常工作,就可以将生成模型中的樣本添加到實際資料中并再次重新訓練,獲得更強的性能。要使此方法更加強大和靈活,請閱讀後文第6項。

NVIDIA展示過一個很好的例子:他們用GAN去增加不同疾病下的腦部CT圖像的資料集。在僅使用經典資料增強的情況下,系統有78.6%的靈敏度和88.4%的特異性;而通過增加合成資料的方法,靈敏度提升至85.7%、特異性提升至92.4%。

以為GAN隻能“炮制假圖”?它還有這7種另類用途

隐私保護

許多公司的資料機密而又敏感,例如公司的财務資料、病患的醫療資料等等。但是在某些情況下,有時我們需要與顧問或研究人員等第三方分享。

如果隻想分享資料的大緻情況,對資料的細節進行隐藏,我們可以利用生成模型來抽象資料,這樣就能保護确切的機密資料。

對共享資料進行保密很困難。當然,我們有不同的加密方案,如同态加密,但它們有已知的缺點,例如在海量資料中隐藏少量資料比較困難(比如10GB代碼中隐藏1MB資訊)。

2016年,谷歌開辟了一條新研究路徑,把GAN的競争架構用到加密加密問題上,讓兩個網絡在加密和解密中競争來實作目的:

以為GAN隻能“炮制假圖”?它還有這7種另類用途

但它的優點不是處理資料的效率,或創造另一個領域的“AI”流行語。我們應該記住,通過神經網絡獲得的結果通常仍然包含有關輸入資料最有用的資訊,并且壓縮後的資料仍然可以進行分類、回歸、聚類或者其他操作。

如果我們将“壓縮”替換為“加密”,那麼我們就可以做到與第三方共享資料而不顯示任何資料集的細節。

異常探測

主要生成模型有變分自動編碼器(VAE)和生産對抗網絡(GAN)兩類,它們都由兩部分構成。 VAE有編碼器和解碼器,分别用于模組化和重建。 GAN由生成器和鑒别器組成,前者用于模拟分布,後者判斷它是否接近訓練資料。

我們可以看到,它們在某種程度上非常相似:都用有模組化和判斷部分(在VAE中我們可以認為重建是一種判斷)。模組化部分應該學習資料分布。

如果我們将一些不是來自訓練分布的樣本給模型做出判斷,那麼将會發生什麼?訓練有素的GAN鑒别器會輸出個0,而VAE的重建誤差将高于訓練資料的平均值。我們的無監督異常探測器就有了,易于訓練也易于評估。我們可以用一些”興奮劑“來訓練它,比如Wasserstein GAN所用的統計距離。

在本文中,你可以找到用于異常檢測的GAN示例以及自動編碼器。我還添加了自己用Keras寫成基于自動編碼器的粗略草圖:

https://github.com/Rachnog/education/blob/master/anomaly/ae_anomaly.py

判别模組化

深度學習所做的一切都是将輸入資料映射到某個空間,在這個空間中,通過SVM或邏輯回歸等簡單的數學模型可以更容易地分離或解釋。

生成模型也有自己的映射,讓我們從VAE開始。 自動編碼器将輸入樣本映射到一些有意義的潛在空間,基本上我們可以直接訓練一些模型。這有什麼意義?它和僅用編碼器層和訓練模型直接進行分類有什麼不同嗎?确實有。自動編碼器的潛在空間是複雜的非線性降維,并且在變分自動編碼器的情況下也是多變量分布,這可以比一些随機初始化更好地開始初始化訓練判别模型。

GAN對于無任何輸入隻從随機種子生成樣本的任務來說有點難度。但我們仍然可以至少開發兩種針對這類任務的分類器。第一種,我們已經研究過,就是利用鑒别器将生成的樣本分類,同時隻是告訴它是真的還是假的。我們可以期望從獲得的分類器來更好地規則化,并且可以分類溢出值/異常值:

以為GAN隻能“炮制假圖”?它還有這7種另類用途

第二種是貝葉斯定理的不公平遺忘分類方法,其中我們基于p(x | c_k)(恰好是條件GAN所做的)和先驗p(x),p(c_k)給p(c_k | x)模組化。這裡的主要問題是GAN真的學習資料分布嗎?在最近的一些研究中正在讨論該問題。

領域适配

對我來說,這是最強大的功能之一。 在實踐中,我們訓練模型所用的資料源,和它們在真實環境中運作的時候幾乎不可能相同。

在計算機視覺中,不同的光線條件、相機設定或天氣會使非常精确的模型無用。 在自然語言處理(NLP)和語音分析中,俚語或重音會破壞你在基于“文法正确”語言訓練模型的表現。 在信号進行中,你很可能用完全不同的裝置捕獲資料,來訓練和生成模組化。

不過,這兩種資料“類型”彼此非常相似。 我們知道機器學習模型執行從一個條件到另一個條件的映射,保留主要内容,但更改細節。 是的,我說的就是風格遷移,但不是為了藝術創作。

以為GAN隻能“炮制假圖”?它還有這7種另類用途

舉個例子,例如某個處理閉路電視圖像的應用,你訓練的模型是建立在高分辨率圖像的基礎上時,那麼你可以嘗試用GAN處理圖像去除噪點并對其增強。

我可以從信号處理領域舉個更激進的例子:有很多與手機加速度計資料相關的資料,描述了不同人的活動。 但是,如果你想在智能手環上使用受過手機資料訓練的模型,該怎麼辦? GAN可以嘗試幫助你翻譯不同類型的運動。

一般來說,一些預定義的先驗模型可以幫助你進行進行領域适配、協方差轉換以及處理其他資料中的差異問題。

資料操控

我們讨論過圖像的風格遷移。如果我們僅僅是想改變照片中的鼻子呢?或者改變汽車的顔色,又或者是替換演講中的某些詞語而不是完全改變它,我們應該怎麼辦?

如果想做到這些,我們假定處理的對象包含有限的元素集合,以人臉為例,眼、鼻、口、頭發等等元素都有自己的屬性。

如果我們可以将照片的像素映射到五官,那麼我們就可以調整五官的大小了嗎? 有一些數學概念可以做到:自動編碼器或許可以,GAN也能做到。

以為GAN隻能“炮制假圖”?它還有這7種另類用途

對抗訓練

你可能不同意我添加關于機器學習模型攻擊的段落,但它的确與生成模型(對抗性攻擊算法确實非常簡單)和對抗性算法(因為我們有一個模型與另一個模型競争)有關。

也許你熟悉對抗性例子的概念:模型輸入中的微小擾動(甚至可能隻是圖像中的一個像素)就會導緻完全錯誤的表現。我們有一些方法來防止錯誤結果的發生,其中一個最基本的方法叫做對抗性訓練:利用對抗性的例子來建構更準确的模型。

以為GAN隻能“炮制假圖”?它還有這7種另類用途

△ 模型中加入微小幹擾,導緻将熊貓錯誤識别為長臂猿

如果不深入細節,我們有這樣一個雙人遊戲:對抗模型(隻加入一些微小的擾動)需要最大化其影響力,并且分類模型需要最小化其損失。這看起來很像GAN,但它的目的不同:是為了讓模型在面對對抗性攻擊時更穩定,并通過某種智能資料增強和正規化提高其性能。

小結

GAN和其他一些生成模型主要用于生成圖像、旋律或短文本,它的主要長期目标仍是生成以正确情況為條件的真實世界對象。但在本文中,我列舉了幾個例子,證明GAN還可以用來改進目前的AI、保護資料、發現異常等等。 我希望你會發現這些例子很有用,并将它用在你的項目中。

最後,附上文中項目執行個體位址:

”假“資料訓練醫學識别系統:

https://arxiv.org/pdf/1803.01229.pdf

對抗網絡如何加密資料:

https://towardsdatascience.com/adversarial-neural-cryptography-can-solve-the-biggest-friction-point-in-modern-ai-cc13b337f969

用GAN做成的圖檔分類器:

https://towardsdatascience.com/semi-supervised-learning-with-gans-9f3cb128c5e

圖檔風格轉移項目:

https://ml4a.github.io/ml4a/style_transfer/

改變面部局部五官項目:

https://houxianxu.github.io/assets/project/dfcvae

微擾導緻圖像識别錯誤的案例:

https://blog.openai.com/adversarial-example-research/

原文釋出時間為:2018-10-24

本文作者:Alexandor Honchar

本文來自雲栖社群合作夥伴“

機器學習算法與Python學習

”,了解相關資訊可以關注“

”。

繼續閱讀