Plagiarism Debate

沒有村上春樹的文筆,那就看這裡。揭開人工智慧如何幫你寫作

typewriter-407695_1280

本文作者:林快。來自雲書苑教育科技公司。致力於:一,光劍注音輸入法,二,快刀中文原創性比對系統設計開發工作, 都是「大數據深度學習的人工智慧系統」,在商業界的淺薄應用,希望跟同好研究交流心得。

日本以人工智慧寫小說的研究計畫召集人、教授松原仁表示,以人工智慧書寫微型小說投稿文學獎,有作品通過了第一關審查。(取自NHK 2016-3-21)

2016開始,電腦除了打敗人類棋王,成為下棋高手同時,人工智慧寫出的小說在日本入圍大獎賽。2016年無疑最熱的科技概念就是「人工智慧」。

人工智慧很強大,能下棋,能搜索,能聊天,能辨識人臉。討論人工智慧應用的報導也很多,我們不僅在議論「人工智慧能做些什麼」,更在心中憂慮:我們的職業還能存在多久?到底電腦是如何學到人類的能力,然後輔助,甚至取代人類來完成這些的呢?

知己知彼,身為人類的我們,才能善用電腦強項,針對人工智慧的弱點,提高自己的價值。讓電腦成為我們的好夥伴,而不是變成跟電腦競爭,甚至反被電腦取代。

以人工智慧的深度學習理論,讓電腦去學寫武俠小說、網路連載小說、政府報告,論文,新聞稿,電腦是如何破解這些任務的呢?
本文將一步步揭開這面紗。

人工智慧的第一步,電腦首要解決的,就是詞語 Word 的問題。那就是理解人類的言語。

一、電腦到底要怎麼學習人類語言

語言是人類的關鍵特徵,它不僅是人類有別於動物,也是人類區別於機器的獨特能力。人工智慧著名的「圖靈測試」,鑑別機器是否具備人類智能,就是以語言為指標。

NLP(Natural Language Processing,自然語言處理)是一門研究如何讓機器理解人類語言、識別人類文字含義的學科。這學科目前至少有兩個主流派別。一種是「符號派」,由人類建立語言模式,歸納出語法、詞性,標注單詞含義,然後教會機器人這套原理,讓它根據語法去書寫處理文字。——這種方法很熟悉:不就是背單字、學語法、然後考作文嗎?對,這就是我們人類在學校裡學英語的方法。(不過機器人學的沒人類靈活)

另一種是「統計派」。跟透過老師去教學生的方式完全相反。這方法更注重「自習」:捧一大堆大部頭書籍文章給機器去讀,讓它自己去尋找文章規律,然後機器人自己練習寫作。

其實,這種方法我們更熟悉。每個孩子不都是這樣學習母語的嗎?
沒有哪個父母會告訴孩子什麼是名詞、什麼是動詞、什麼是副詞,什麼是疑問句,孩子只是天天聽、天天說,自然而然就掌握了一門語言。

當然,這兩派並不是對立的,很多商業等級的人工智慧系統,都同時包含兩種做法。

不過在以前電腦硬體價格喔昂貴,無法便宜的提供「統計派」所需的超級計算能力。一直都是「符號派」佔上風。直到近年來,隨著INTEL,台積電,以及一大堆跟在後面的硬體製造商努力,電腦計算能力大幅提高,價格卻一直往下掉(當然硬體公司的股價也是)。深度學習理論終於找到可成本化實現的機會,因此開始崛起,「統計派」就越來越嶄露頭角。

深度學習是通往真正人工智慧很重要的一步。如今聲名鵲起的AlphaGo,即是基於深度學習理論而設計的。(可參考拙作:AlphaGo 研究筆記)它並不理解圍棋中諸如「勢」、「厚薄」、 「打劫」等繁多的圍棋理論,它只是學習了大量棋譜,從中歸納出圍棋的規律,最終就擊敗了頂尖棋手李世石。

天下文章說到底,不過是文字的組合排列。寫作風格這件事從數學角度而言,也就是文字的排列規則統計。如果電腦能夠破解這個規則,掌握其規律,從理論上來說,它也能夠產生這樣的文字排列,寫出一篇類似文章。

二、外掛一款超級軟體來寫金庸

介紹一種在自然語言處理方面,開放原始碼的深度學習模型:Karpathy 模型。
這模型的程式非常精煉,一共只有幾千行的程式。但模型功能非常強大,它不用設定什麼語法,也沒有什麼單詞庫,更沒有指定只能處理英文、法文、或某一種特定語言。它唯一的要求,只是文章輸入。你餵給它大量的文字段落,它就會用遞迴神經網路分析段落,尋找出字與字之間的關係。

實戰效果如何?現在,讓我們假設有一個機器人,外掛了 Karpathy 模型,他立志要成為一名中文小說家,他的表現會怎麼樣呢?

首先,要找一個學習對象。機器人找來的是中文世界最成功的流行小說:金庸的《射鵰英雄傳》。
(很抱歉,由於有版權的中文書籍文字檔,網上能找到的都是簡體字,因此以下所有輸出結果都是簡體)

機器人學習了一遍教材。《射鵰英雄傳》只有八十萬字,學起來不費多少時間,一台普通的台式電腦,只要五六秒鐘就可以學完。然後,機器人寫出了如下文字:
001_副本

呃,完全不知所云,是吧?

機器人所寫的文字,只是一些中文的隨機組合。顯然,他還沒有找出任何規律。此刻的機器人,如同一個初生嬰兒,只會發出一些毫無意義的音調,完全不知語言為何物。

幸好,機器人有的是時間,他最擅長的就是重複性工作。才不過一分鐘時間,他又學習了十遍,再次交出一篇作文:
002_副本

還是看不懂。不過,比起上一篇也有進步,機器人寫出來的字不再是隨機的,而是教材中出現頻率較高的文字,如靖、黃、鋒、全真等,都是書中主要人物的名號。可見嬰兒正在注意聆聽周圍的語言,開始牙牙學語了。

機器人繼續成長。十多分鐘後,他已學習到一百遍:
003_副本

這篇作文裡的標點符號大幅增多。雖然其用法一塌糊塗,比如引號放在冒號之前,還常常會連用兩個標點符號。但看來機器人已經意識到句子的存在,試圖用句子來組織文字了。

當機器人學習到一千遍:
004_副本

這篇作文簡直是令人驚喜,就好像不知什麼時候小孩子突然學會了說話,機器人對語言的領悟也突然有了一個飛躍。

最明顯的變化是,他識別出了常用詞彙,人物名字全部寫對,連《九陰真經》也認識了。

更了不起的進步,則是機器人學會了句法,他會用標點符號了!每句話用逗號分隔,用句號結尾,雙引號一一對應,而且全都位於冒號之後。

同樣,他領會了「主詞+動詞」的句法結構,每句話都是以主語開頭,後接人物動作。他也識別出了許多詞彙的詞性,並把它們放在正確的位置,形容詞位於名詞之前,副詞位於動詞之前。

總體而言,這篇文章還是看不懂,但已經順眼很多,開始像一篇真正的人類文字了。可以說,現在機器人的語言水平相當於一歲多的孩子,能夠咿咿呀呀說幾句話了。

這充分顯示了機器學習的威力。在沒有預設任何語法庫、詞語庫的情況下,機器人硬是用功反覆學習,並掌握了中文語言的規律!

再接再厲,機器人學習到一萬遍:
005_副本

很遺憾,一萬遍的學習並沒有帶來明顯進步,這次寫出來的作文跟上一篇區別不大,仍然不太通順,也仍然是詞法、語法基本正確,而句子的含義還是讓人無法理解。

機器人不知道什麼叫挫折和放棄,他繼續埋頭苦幹,又學習到十萬遍。但這一次,他的文章依舊沒有起色。新的一份作業,通順程度還是跟一萬遍的一樣。

堅持一天一夜,當機器人學習到上百萬遍,又交出若干份類似的作業,我們不得不失望地發現,機器人的金庸之路到此為止,他的《射鵰英雄傳》沒法寫得更好了。

三、古龍小說也該拜讀一下

不過,中文文學世界很大,作家除了金庸,還有很多。機器人又踏上古龍之路,學習了數萬遍《古龍全集》之後,他拿出一份練習作業:
006_副本

新的學習結果很有趣。熟悉武俠小說的朋友都知道,同為武俠大師,金庸、古龍的風格卻是迥然不同。實際上,他們二人只不過恰好都寫了武俠題材而已,從文學理論來看,金庸是一個古典作家,而古龍是一個現代作家。

四、從機器人仿作解讀兩位大師的風格

古龍的段落更短,一般一段就一句話,而金庸的一個段落通常包含許多動作和對話。

古龍有更多心理描寫,他的語言更現代,而金庸就顯得古色古香。

古龍喜歡裝酷,人物語言總是酷斃,恨不得不用動手,一開口就把人K死。

作為人類,我們可以評論,機器人的作文還不是很通順。然而神奇的是,他一不懂詞彙,二不懂語法,更不瞭解句子含義,不認識金庸古龍是誰,但他卻照樣表現出了人類作家的細微差異。他所寫出的作文,同樣具備段落短、語言酷、深入人物心理這些典型的古龍式文風。

這就是機器學習的威力所在,他不再需要人類專家去煞費苦心地提煉模型,他自己就能從資料中歸納出模式。這是人類認識世界的一個重大進步。以往,科學發展的典型流程是,克卜勒這樣的科學家觀測、實驗、收集數據,牛頓這樣的科學大師研究、發明科學體系。而今後,我們或許不需要、至少是不那麼依賴牛頓級別的天才,只要有一批克卜勒提供資料,電腦就能幫我們完成最後的臨門一腳,挖掘出人類想像不到的科學規律。

再檢查一遍作文,我們還可以看出,同樣是模仿之作,「古龍」也比「全庸」寫得更加通順一些。結合機器學習的特點,我們不難找到原因。首先,機器人學習的兩份材料樣本,一個是《射鵰英雄傳》,八十萬字,另一個是《古龍全集》,高達一千七百萬字,是前者的二十倍。這方面機器和人是一樣的,都是學得越多,寫得越好。

另一方面,古龍的語言也比金庸簡單,他的句子短,段落短,語法結構也較為簡單。《射鵰英雄傳》篇幅不長,卻用到三千多個中文單字,而厚厚的《古龍全集》,才用到兩千多個。可以說,金庸小說的複雜性較高,更有利於人類審美,而古龍小說的規律性較強,更有利於機器人學習。

前面我們歸納出,機器學習的長處,在於從大量數據中尋找特徵,總結模型。短處則是他並沒有真正理解數據,他只是按照自己找出來的規律,似是而非地寫作。經過兩次國文考試,機器人的寫作水平大致暴露在我們眼前。看起來,除了咿咿呀呀,他似乎寫不出什麼像樣的東西。那麼,只要你是寫現代文的,是不是就可以鬆一口氣呢?

也許,寫正經文章,機器人還差一口氣。但,不那麼正經的文章,機器人還是有用武之地的。

五、哪一種寫手更容易被機器取代?

為了驗證這個設想,這一次,他要學習的是含金量最高,可讓主人在家躺著收版稅的作品。

首先是網路小說。以大陸網路上最著名的網路小說之一《斗破蒼穹》為例:
007_副本

這篇作文讀起來仍然不太流暢,但相對金庸古龍的模仿之作而言,卻算得上大體通順,至少,大部分句子都讀得懂了。似乎機器人一旦學習網路小說,就突然悟性大增了。

為什麼呢?難道網路小說就特別適合機器寫作嗎?

答案是YES。
從語言文字而言,古龍比金庸單薄,而網路小說又比古龍大大地淺白。前面提到,《古龍全集》用到兩千多個中文單字,這已經比《射鵰英雄傳》少了許多,而《斗破蒼穹》用到的單字,只有可憐的一千多個。

簡單對比就知道,古龍先生寫了二十多年,也才寫到一千七百萬字,而《斗破蒼穹》只花了兩年,就寫到六百萬字,其中灌水程度也就可想而知。

大量重複,淺白的文字,或許會被真正的作家所鄙視,但這卻是機器人最喜歡的。越是單調重複,他越是能找出規律,模仿出類似的作品。也許,用不了多久,網路寫手就會發現他們多出一個高產量、全系列、永不疲倦的競爭對手。

第二種體裁,是黃色小說。機器人讀了《美魔女少婦白潔》之後,興奮地寫出以下文章:
008_副本

這篇小黃文當然也是看不懂,沒幾個通順的句子。但沒關係,文中充斥的那些敏感詞彙,到處都在挑逗讀者的下半身。不用看懂情節,讀者也知道他們在炒飯。

色情文學的讀者,不否認有一些是來看故事,看人物的,但大多數,只是看一個炒飯場景,尋求一點本能的刺激而已。堆砌一批人體器官的敏感詞,就足以激起他們的勃起神經。對於這些讀者,機器人上場也就足夠了。

至於文字通順的缺點,上一篇之所以寫得破,很大程度上是因為《美魔女白潔》非常短,只有區區六萬字,機器人不足以掌握色情文學的精髓。只要機器人再多學幾本描寫簡諧運動的專著,把句子寫得更加流暢一些,我們就可以期盼色情文學的春天來臨了。

還有一種文體,也具備嚴格的格式要求,其內容又包含大量單調、重複的段落,可預測性極強。這種體裁,自然也是機器人學習的絕佳對象。

009_副本
對,這篇流暢的作文,就是機器人學習了對岸政府機關的公文書《歷年政府工作報告(1954-2011)》後的結果。

不過,這我們就不評論了。

六、無聊就找 Siri 講話?你我都變成機器人訓練師了

好了,現在大致知道,當機器人寫作時,大概如何起步。就 Karpathy 模型而言,他有一個天花板。他能夠描繪出一種外表類似的文字風格,但卻無法寫出真正讓人理解、讓人心動的文章。

只要你不寫網路小說、不寫黃色小說、不寫公家機關八股文,暫時可以放心。目前機器人的語言能力,也就跟一兩歲孩子相當。

但這並不意味著,人工智慧永遠追不上正常人類的智力。如前所述,Karpathy 模型非常簡單,只有幾千行程式,也沒有語義庫、詞彙庫的定義,是一個純粹的「大數據統計」模型。它主要是用來展示遞迴神經網路的工作原理,教學意義更甚於實用意義。實際應用中的商業化語言機器人,遠遠比它複雜和強大得多。

另一方面,也許可注意到,Karpathy 模型的語言能力之所以上不去,是因為跟真正的孩子學說話相比,他還缺乏最重要的一環——外部互動反應。

孩子學說話不僅僅是聽,更重要的是說。語言學家指出,小 BB 需要跟父母親親密互動,需要與父母一起玩耍遊戲。孩子每一句有意無意的依依呀呀,都能得到父母的回應與反應,這種情境對於學習語言是最有利的。讓孩子每天看巧虎,看 iPad,雖然他也聽到了大量的對話,但由於缺乏雙向溝通,孩子仍然無法學到正常人類語言。

2015 年 3 月,微軟推出對話機器人Tay。她能夠學習、模仿用戶的語言,採取用戶喜歡的語言風格進行對話。Tay 立即引起了用戶的興趣,大量用戶蜂擁而上,用各種限制級言論訓練她,試圖誘導機器人突破下限。結果,在無數粗俗對話的刺激下,只花了一天功夫,Tay 就變成了一個滿口髒話、辱罵用戶、鼓吹納粹的不良少女。

微軟不得不將 Tay 緊急關閉,至今她還沒有歸來的跡象。但從另一方面來看,這也說明了互動對話,在語言學習中的威力。
如果機器人能夠與人類經常互動,從人類的反應中得知什麼句子是好的,什麼表達方式是對的,什麼文字是美的,那麼,他離真正掌握人類語言就不遠了。

這樣的研究工作,谷歌、臉書等大咖已在動手做了。他們不僅有最先進的人工智慧技術,還擁有世界上規模最多的用戶,能夠為機器人找到足夠多的人類充當老師,進行夠多的訓練。所以我們在不知不覺之中,已經成為訓練機器人的人肉材料。


— 史丹佛大學的 Andrej Karpathy 是深度學習領域的大咖。2015 年 5 月,他設計了一個基於遞迴神經網路的 NLP 模型,並將程式碼開放公佈。(原始程式 https://github.com/karpathy/char-rnn )

— The Unreasonable Effectiveness of Recurrent Neural
https://karpathy.github.io/2015/05/21/rnn-effectiveness/

— 執行 Karpathy 模型用到的框架 Torch 官方網址 www.torch.ch