生成對抗網絡 GAN 02:條件生成 Conditional Generation

Brief 概述

上一個章節提到的模型訓練方法是輸入一個向量值,經由神經網絡的運算與傳遞後,產生一個數據類型的結果,如上節舉例則是二次元人物圖像,而第二節課提到的情況生成器則是以文字轉圖片的模式展開。換言之,這個舉例是一個典型的監督學習方法。步驟如下:

  1. 設定好一個神經網絡,輸入爲文字輸出爲圖片
  2. 準備好一個數據庫,充滿着文字對應圖片的結果
  3. 訓練這個神經網絡,讓輸出的圖片越接近數據庫的圖片越好

但是隨着訓練的時間拉長,神經網絡學習到一件事情: 一個標籤名稱其背後的圖片意義可以是多種多樣的形態,橫看成領側成峯的感覺一傳達給了神經網絡後,下一次出現的照片就會是所有角度的總和,急於表現自己所有的理解於一時的結局就是該結果什麼都不是,模糊的一次呈現了所有圖片的特徵。

 

Conditional Generation 條件生成器

遇到了會讓生成的圖片模糊的問題後,我們需要使用生成對抗網絡的方法來解決問題,原先只使用一個簡單的向量作爲輸入是不夠的,需要另一個條件式,把將要對應圖片的文字一同考慮進去,如下圖:

而修正不僅限於生成器本身,分辨器也要一起被調整,因爲如果單純評判生成的圖片結果是否與數據庫的圖片一樣真實,那麼機器直接讓圖片產生出非常清晰與銳利就可以得到很高的分數,甚至無需考慮是否產生的內容與關鍵的文字有關聯。爲此這個分辨器需要辛苦一點,同時考慮生成器的文字輸入部分和圖像輸出部分,然後纔給出一個評分,如下圖:

唯有文字和圖片正確的被匹配在一起的時候,纔會產生一個高分的輸出,如果文不對題,或者文對上了一個很醜的圖片,那麼輸出的分數都應該要非常低。

The Mechanism of The Algorithm 演算法的機制

上面提及到的內容如果落實到數學公式,乃至代碼的話,則步驟如下:

  1. 每一筆示例都是一對元素,包含了一串正確的文字與圖片
  2. 窮舉 m 比隨機分佈的數值作爲生成器的另一個輸入單元
  3. 利用上面兩個條件,生成出 m 比數據
  4. 用這些數據作爲新的輸入放到分辨器裏面尋找最大值
  5. 固定找到的分辨器的最大值後,從數據庫中窮舉 m 比條件式
  6. 利用這些條件式和固定好的分辨器的參數,找到最終生成器和分辨器組成的大神經網絡輸出爲最大值
  7. 做完步驟二至六後算是迭代完一輪,不斷迭代直到產生出優異結果

 

Another Mechanism 另一種架構

但是另外一中演算法機制也同樣值得我們參考,其流程圖如下:

由於我們分別有下面幾種條件對應到不同評分標準:

  • 文字符合美麗的圖片,則高分
  • 文字符合不美離得圖片,則低分
  • 文字不符合美麗的圖片,則低分
  • 文字不符合不美麗的圖片,則低分

在這個機制之前,我們都是一股腦兒的把數值放入神經網絡中,讓它自己學習什麼情況是什麼原因,然而這個新的方法,可以在更加精巧的設計中回傳情況,到底是圖畫得不好還是文不對題的問題。其機制流程如下:

  1. 第一個神經網絡接收了一個向量後,輸出了一個判斷的結果,初步篩選是否足夠真實
  2. 並把判斷結果連同條件式一起傳入第二個神經網絡中,二度篩選結果是否足夠完美匹配

這樣的方法下,可以讓電腦更清楚的判斷出其自身問題爲何,更有效率的去修改問題,朝向好的方向走。

 

Higher Level: Stack GAN

這是一個挑脫初階生成對抗網絡的方法,生成圖像的方式並不是像上面介紹的方法一般一步到位,而是先產生小張的圖,之後再產生大張的圖,這樣就可以解決像素大小帶來的硬件計算限制,如下圖:

概念上的邏輯步驟如下陳列:

  1. 上半部分先輸入一段文字進來,搭配上隨機的向量值後,輸出一個比較小的圖片結果
  2. 使用這個縮小版的圖片重新作爲輸入,放到上半部的分辨器中得出一個評分
  3. 如果該圖片輸入合適,則就繼續以該圖片搭配上原來的那段文字重新作爲一個輸入,放到二階段的生成器中,產生一個更大的圖像
  4. 最後再以該圖像作爲新的輸入,放到分辨器中看最後的結果是否同樣的令人滿意

 

Image to Image and More

同樣的道理可以被應用在:輸入一張圖片產生一張圖片中,如果不用生成對抗網絡的話,整個輸出的結果很容易就變成一個模糊的樣子,如果加上了生成器與分辨器的機制之後,其結果就會好很多,但是有些時候會自動被添加一些神經網絡異想天開的裝飾,如下圖:

解決方式就是在限制條件的代碼部分,讓輸出的圖像跟數據庫內的目標圖片越相似越好,那麼就會最終產生一個符合我們預期的圖像數據。

Patch GAN

下面附上相關技術的 [論文鏈接],其中使用的分辨器機制也是經過改良的方法,原本一次輸入一整張圖片到神經網絡的方法現在被分割成多個小的部分,一方面提高計算效率,另一方面預防整個神經網絡過擬合造成的功虧一簣。從多個小塊圖片分辨好壞的過程,來確定整張圖片的良率。

而小塊區域的圖片需要多小,它的結果纔是比較好的,則需要自行嘗試。

 

Other Applications

  • Speech Enhancement 聲音信號增強
  • Video Generation

 

Speech Enhancement

生成對抗網絡還可以使用在剔除聲音雜訊的問題上,如下面的圖片,把聲音信號與雜訊用圖像化的方式表現:

訓練神經網絡解決此問題的方法則是找來一堆的聲音信號,把這些聲音信號套上隨機的雜訊作爲輸入,目標的輸出則是生成一個沒有雜訊的聲音訊號,使其與標準的數據庫差距越小越好,最後就可以讓神經網絡獨立運作去解一個充滿雜訊的隨機數據。

但是過程中還是需要輸入一串加上雜訊的聲音信號,和生成器輸出的信號到一個分辨器裏面,然後給與一個評分作爲輸出用來評判生成器的好壞。

 

Video Generation

同理上面的聲音案例,此技術也可以用在視頻預測的應用中,我們可以讓生成器看一段視頻並預測接下來發生的事情,而用來評判生成器預測結果好壞的分辨器則以生成器的輸出結果與前面的視頻片段作爲自己的輸入,經過神經網絡的計算得出一個評判分數,促使生成器產生出來的預測結果越來越“合理”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章