引言
2016年3月,AlphaGO橫空出世,擊敗人類頂尖職業棋手,引爆了人工智慧熱潮。之後AlphaGO Master和AlphaGO Zero更是無情的碾壓人類棋手,人們終於認識到,人類迎來了可怕的對手。在這之前,人類還抱有一點幻想,某個英雄會應運而生,為人類而戰,然而現實很殘酷。人工智慧最可怕的地方在於,其進步神速,在突破了一個瓶頸後,會引起裂變。
人工智慧的出現,也普遍引發了人類的恐懼。比如著名的“鋼鐵俠”特斯拉創始人馬斯克直言:“AI將是人類文明面臨的最大風險”。而普通民眾,則更擔心人工智慧會取代人,每年都會有“10大會被AI取代的工作以及10大不會被取代的工作”這樣的話題。
在討論人工智慧無法取代的人類工作時,大家普遍認為具有創造性的工作將不會被人工智慧所取代,比如作家、畫家、藝術家。然而,真是這樣的麼?來看一組訊息。
2016年3月22日,日本共同社報導了由人工智慧創作的小說作品《機器人寫小說的那一天》入圍日本第三屆“星新一文學獎”初審的訊息。這一獎項是以被譽為“日本微型小說之父”的科幻作家星新一命名的。提交小說的是“任性的人工智慧之我是作家”(以下簡稱“我是作家”)團隊。該專案團隊負責人是公立函館未來大學教授松原仁。
來源:《中國計算機學會通訊》2017年第1期《專欄》
根據《Gigazine》報導,由於能使AI藉由GANs方式學習大量的影像,NVIDIA研究團隊正在研發一款「名流風肖像」自動產生器。為了讓在實驗中所開發的生成器網路與判別器網路雙方漸漸成長茁壯,設計成最初僅能生成低解析度的馬賽克影像,隨著訓練進行,漸漸生成高解析度的影像。
來源:人工智慧學習網
在綜藝節目《機智過人》中,微軟的聊天機器人小冰以一曲中國風歌曲《桃花夢》“險勝”人類對手。當歌手唱出“茫茫夜雨中,往事如風,耳邊桃花笑春風,夢裡你我相逢”這般古風濃郁的句子,很多觀眾以為這是人類所作。
來源:新華網
寫詩、作曲、繪畫,人工智慧創作的春天悄然到來……
生成對抗網路(Generative Adversarial Networks,GAN)
近年來,人工智慧的飛速發展,離不開深度神經網路,深度學習的核心思想就是不斷的增加層級、增加模型的深度,在影像分類、語音和文字識別等監督學習領域得到了廣泛的應用,但這些還談不上具有創造性。
但是生成對抗網路(GAN)的出現,讓事情發生了變化。GAN採用半監督學習的方式,自動從源資料中學習。從維基百科的詞條學習專業知識,然後寫出一個令普通人可以理解的科普文章,模仿知名畫家的作品並學習他們的風格進行再創作,這種看似只有人類才會做的事情,人工智慧現在真的可以做到了!
GAN在剛提出時並沒有晦澀的數學推演,可以想象成造假幣者與警察間展開的一場貓捉老鼠遊戲,造假幣者試圖造出以假亂真的假幣,警察試圖發現這些假幣,對抗使二者的水平都得到提高。
GAN契合了東方哲學中的太極圖 - 萬物在相生相剋中演化。“太極生兩儀”,“兩儀”好比生成器和判別器,生成器負責生,判別器負責滅,一生一滅間有了萬物。生成器在初始混沌中孕育有形萬物,判別器甄別過濾有形萬物,扮演一種末日審判的角色。
GAN的組成
GAN的主要框架如下圖所示:
它包括生成器(Generator)和判別器(Discriminator)兩個部分。其中,生成器以隨機的噪聲作為輸入並試圖生成樣本資料。判別器以真實資料或者生成資料作為輸入,並試圖預測當前輸入是真實資料還是生成資料。生成器和判別器是一對“冤家”,生成器儘可能造出樣本迷惑判別器,而判別器則儘可能識別出來自生成器的樣本。理想情況下,生成器和判別器最終能達到一種平衡,雙方都趨於完美。
GAN的訓練過程
具體訓練時,採用生成器和判別器交替優化的方式。
- 在訓練判別器時,先固定生成器G; 然後利用生成器隨機模擬產生樣本G(z)作為負樣本,並從真實資料集中取樣獲得正樣本X; 將這些正負樣本輸入到判別器D中,根據判別器的輸出(即D(X)和D(G(Z)))和樣本標籤來計算損失; 最後根據反向傳播演算法來更新判別器D的引數。
- 在訓練生成器時,先固定判別器D; 然後利用當前生成器G隨機模擬產生樣本G(z),並輸入到判別器D中; 根據判別器的輸出D(G(Z))和樣本標籤來計算損失,最後利用反向傳播演算法來更新生成器G的引數。
小結
僅從原理上看,GAN比較容易理解,實際上GAN還是有數學理論基礎的,但沒有一定數學基礎的人,估計也很難理解。本著從工程的角度,我還是想探討其實現以及在現實中的應用。
在後續的文章中,我將從一個最簡單的生成手寫數字開始,探索GAN的應用,預期將包含如下內容:
- 採用DCGAN(深度卷積生成對抗網路)優化手寫數字的生成
- 使用SSGAN(半監督學習生成對抗網路)實現影像生產生成
- 利用CGAN(條件生成對抗網路)生成時尚衣櫃
- 利用CycleGAN(迴圈一致生成網路)實現影像風格的轉換
- 從文字構建逼真的影像
我的數學能力有限,因此主要以程式碼例項為主,不會過多深入理論,敬請關注。