Apple首篇AI文章,SimGAN

2021-07-25 22:12:06 字數 1698 閱讀 6307

本文的目的是要訓練乙個改善網路,使得模擬器生成的合成經改善後能更貼近真實。

貢獻1就是用了s+u(生成+無監督)的方法,貢獻2則是網路損失函式的定義,貢獻3是對標準gan做了一定的改進,貢獻4說的是效果上的突破。

左圖體現了整個網路結構,由原始生成器生成的合成,經過改善網路r後輸出改善,另有乙個鑑別器d,需要區分改善後的和無標籤的真實。r的目的是要生成盡可能真實的去欺騙d,而d的目的就是要區分生成的和真實,這就是生成式對抗網路的最基本模型。

右邊的公式介紹一下:

x上面加波浪線表示的是改善後的樣本;

網路r的損失函式包含真實性成本和差異性成本,前者為了讓改善更真實,與真實的風格更接近;後者是為了讓合成在改善前後不至於有太大的變化以致於失真;

網路d的損失函式包含兩項,對於合成,希望網路輸出1,對於真實,希望網路d輸出0,如此將兩者區分。訓練過程中,我們要最小化這個損失函式;

在實際應用中,我們網路r的損失函式的真實性成本用對抗損失,而為了減少改善前後的差異,引入1範數的正則項。

值得注意的是,r的輸入和輸出尺寸相同,實現了畫素級別上的修改。

以上是兩個網路的訓練過程。

前文提到本文對標準gan模型做了一定的改進,其一就是上圖的本地對抗損失函式。在訓練鑑別網路d的時候,我們不對全域性的輸入求loss,而是將其分割為w×h個小塊,每個小塊依次輸入網路d,得到該小塊屬於生成的概率。如此,我們的網路d引數可以減少,訓練樣本得到了增加。

在更新網路r的時候,我們則是講剛才的probability map每一格的值求和後作為第一項損失值(真實性成本)。

右圖是乙個實驗結果比較,用全域性的loss改善的,放大後在邊緣上有劇烈的抖動,而採用區域性損失值得到的改善圖就比較平滑,符合真實情況。

對模型的改進之二就是類似rnn,引入了歷史資訊。原來,我們在訓練網路d的時候,只要求它識別出當前輸入的合成和真實,更新引數,在這個過程中,d可能遺忘掉以前的一些特徵,這使得我們的網路r又會產生一些不合理的細節改善,因此本文提出加入乙個快取區buffer,尺寸固定為b,我們的batch size為b。

更新d的時候不僅有當前r的輸出,還有歷史的,結合右圖,可見增加了這個歷史資訊後,改善效果有明顯的提高。

這是文章中的實驗結果圖,關於手勢的深度圖,改善後在邊緣有了一些抖動和不平滑,作者的解釋是真實樣本在邊緣是存在雜訊的,而我們的改善網路r能夠學習到這一特徵並對合成樣本進行更改,使得生成的樣本更符合實際,但具體的效果還是要在實際訓練中看效果才行。

暑期集訓(首篇博文)

我曾經問過自己我為什麼要參加acm,因為我喜歡,那麼我為什麼喜歡 acm呢?我覺得我喜歡 acm的原因有二 第一,由於我所學習的數學是理科,缺乏明顯的與生活實際相連線的紐帶,因此一直以來我都希望能夠有一種東西在我所學習的數學和生活之間架起橋梁,這也是我當初參與acm相關活動的初衷,這次集訓過後更加堅...

首篇 開工啦

時至今日,離奔三越來越近。後來考研的時候,因為大四開了ic設計課程,才覺得還是蠻喜歡電路設計的 大二和大三開的半導體物理 固體物理 理論物理 器件物理 數學物理等各種物理課程,幾乎讓大家對這個專業絕望 就堅持了自己的本專業,報考了晶元設計專業。然而,研二開始,由於老闆的需要,又寫起了 不過這次是純粹...

UNIX及計算機思維及首篇博文

背景unix的學習,很大程度上就是歷史的學習 1.unix歷史,2.計算機作業系統的歷史,3.程式語言的歷史.引申開去,計算機行業,或者別的行業的學習,也是建立在歷史的基礎上的吧?舉個例子,在unix之前,程式設計師是怎麼程式設計的,他們用編譯器嗎?最近狠看了些資料,才一點點地發現這其中的 端倪 k...