1
本文作者: 竹間智能 | 2017-06-02 11:40 |
雷鋒網(wǎng)編者按:本文作者竹間智能深度學(xué)習(xí)科學(xué)家趙寧遠(yuǎn)。本文從“人機(jī)交互的本質(zhì)”入手,重點(diǎn)解析自然語(yǔ)言處理中的難點(diǎn)及潛在機(jī)會(huì),竹間智能自然語(yǔ)言系列專欄文章第一篇,雷鋒網(wǎng)已獲授權(quán)。
人機(jī)交互的本質(zhì)是什么?AI能否真正理解人類的語(yǔ)言,甚至感情?
根據(jù)《圣經(jīng)·舊約》的記載,在很久以前,人類是使用相同的語(yǔ)言的。而當(dāng)人類逐漸壯大,在虛榮心的趨使下,他們想建造一座通天的巨塔,聳入云霄,并欲借此達(dá)到至神的領(lǐng)域。可上帝對(duì)人類的行為非常不滿,故令世人的語(yǔ)言互不相通,人類因此陷入無(wú)休止的爭(zhēng)端和混亂中,計(jì)劃也就此失敗。這就是有名的“巴別塔之謎”。
語(yǔ)言是人類社會(huì)合作的基石、知識(shí)傳承的載體,但語(yǔ)言又似乎是人類自身的優(yōu)點(diǎn)和局限的一面鏡子:既可以創(chuàng)造新世界、通達(dá)人心,卻又不總是那么可靠、時(shí)常會(huì)引起誤解;有時(shí)優(yōu)美純凈,有時(shí)又粗俗不堪。
對(duì)人工智能而言,征服語(yǔ)言似乎是通往終極智慧路上一個(gè)無(wú)法被忽視的目標(biāo)??墒鞘裁词钦Z(yǔ)言,語(yǔ)言背后承載了怎樣的智慧和秘密?冰冷的機(jī)器、縝密的邏輯是否可以穿透語(yǔ)言的表象,觸摸到人類的靈魂呢?在AlphaGo令所有圍棋大師俯首稱臣的今天,深度學(xué)習(xí)是否也能夠在語(yǔ)言領(lǐng)域展現(xiàn)同樣的能力?
在該系列文章里,竹間智能NLP及語(yǔ)言學(xué)專家組,將帶大家回顧人類對(duì)語(yǔ)言認(rèn)識(shí)的不斷演進(jìn),討論自然語(yǔ)言處理的重難點(diǎn)、最新的進(jìn)展,以及未來(lái)發(fā)展的方向。也許在不久的將來(lái),人類語(yǔ)言本身也會(huì)隨著AI的進(jìn)步而進(jìn)步吧!
第一道難題
讓我們把思緒從宏大的歷史中抽離出來(lái)。如果我們希望人工智能可以“征服語(yǔ)言”,那么也許我們應(yīng)該從征服小學(xué)課本開始。
對(duì)于計(jì)算機(jī)來(lái)說(shuō),相比于其他所有的學(xué)科,它最擅長(zhǎng)的也許就是最抽象、最理性的數(shù)學(xué)了。
數(shù)學(xué)的語(yǔ)言,相較于別的科目,更強(qiáng)調(diào)精確。數(shù)學(xué)建立在毫不含糊的邏輯之上,那么用于描述數(shù)學(xué)的語(yǔ)言,當(dāng)然也就必須精準(zhǔn)無(wú)誤。事實(shí)上,對(duì)于用單純數(shù)字和符號(hào)表示的數(shù)學(xué),計(jì)算機(jī)是可以辨認(rèn)和理解的,這當(dāng)然也是計(jì)算機(jī)被創(chuàng)造出來(lái)的初衷。
可是如果我們對(duì)于計(jì)算的過(guò)程稍做修飾,將它用自然語(yǔ)言描述出來(lái)的時(shí)候,似乎計(jì)算機(jī)就很難去理解了。所以今天我們小試牛刀,看看人工智能在自己擅長(zhǎng)的科目能考多少分。
讓我們來(lái)算一道簡(jiǎn)單的數(shù)學(xué)題目,“小明上學(xué)期期末考試,語(yǔ)文、數(shù)學(xué)、自然、社會(huì)、英語(yǔ)的成績(jī)分別是88分、96分、94分、90分、82分。小明五科的平均成績(jī)是多少?”
當(dāng)然,很多程序員心中已經(jīng)開始納悶,這道題目真的很簡(jiǎn)單,一行代碼就可以搞定了。
我們暫時(shí)先不討論python解釋器如何將上面的代碼轉(zhuǎn)換為機(jī)器指令,以及底層的硬件如何運(yùn)作(雖然電腦能夠理解“高級(jí)”編程語(yǔ)言已經(jīng)是一個(gè)奇跡)——只要在自己的電腦上驗(yàn)證一遍,應(yīng)該就足以令人信服了:
我們想知道的是,人類的語(yǔ)言,和“給計(jì)算機(jī)看”的語(yǔ)言到底有什么差別,為什么計(jì)算機(jī)讀得懂計(jì)算機(jī)語(yǔ)言,卻讀不懂人類語(yǔ)言呢?最新的人工智能的技術(shù)到底能不能夠彌補(bǔ)這樣的差異?
語(yǔ)言的秘密
為了解釋清楚這個(gè)對(duì)程序員來(lái)說(shuō)似乎不成問(wèn)題的問(wèn)題(他們每天都在充當(dāng)人類和機(jī)器之間的翻譯官),我們需要先認(rèn)識(shí)一位對(duì)人工智能和語(yǔ)言學(xué)來(lái)說(shuō)都舉足輕重的學(xué)術(shù)巨擎:喬姆斯基。
嚴(yán)格說(shuō)來(lái),喬姆斯基是站在AI的對(duì)立面的。在人工智能“大躍進(jìn)”的60年代,喬姆斯基更多的是在給人工智能潑冷水。他認(rèn)為簡(jiǎn)單的電腦程序永遠(yuǎn)無(wú)法理解語(yǔ)言,因?yàn)槿祟愖约哼€尚未理解語(yǔ)言產(chǎn)生的機(jī)制。
喬姆斯基堅(jiān)信人類的語(yǔ)言可以被一種與生俱來(lái)的“普遍語(yǔ)法”所描述——在今天,喬姆斯基的大部分語(yǔ)言學(xué)理論已經(jīng)不再被奉為圭臬,但他在對(duì)語(yǔ)法的研究中所規(guī)劃出來(lái)的“喬姆斯基譜系”,依然是人們?cè)谘芯空Z(yǔ)言的復(fù)雜度之時(shí)所遵循的原理。
(上圖:?jiǎn)棠匪够V系;越靠近中心的語(yǔ)言越簡(jiǎn)單,越外層的語(yǔ)言越復(fù)雜)
語(yǔ)言具有表達(dá)形式和所描述的內(nèi)在邏輯兩種屬性。所以,我們?cè)谟懻撜Z(yǔ)言的復(fù)雜度的時(shí)候,一方面是在研究為了表達(dá)一定的語(yǔ)義,我們需要多么復(fù)雜的表達(dá)形式;而另一方面,我們想知道這種語(yǔ)言所能表達(dá)的概念,能夠達(dá)到怎樣的復(fù)雜度——形式非常復(fù)雜的語(yǔ)言也許只能表達(dá)非常簡(jiǎn)單的語(yǔ)義,而非簡(jiǎn)單的符號(hào)根據(jù)一定規(guī)則,就可以表達(dá)極其豐富的內(nèi)容。
在上面這道應(yīng)用題的例子當(dāng)中,計(jì)算機(jī)語(yǔ)言和自然語(yǔ)言所表達(dá)的意思是一樣的,可是表達(dá)的復(fù)雜程度差別很大。這樣的差異,在喬姆斯基譜系當(dāng)中,就表現(xiàn)為語(yǔ)言復(fù)雜度的不同。這也造成了計(jì)算機(jī)看得懂“計(jì)算機(jī)語(yǔ)言”,卻看不懂人類語(yǔ)言的現(xiàn)象。在圖上圓心最中間的,也就是最簡(jiǎn)單的語(yǔ)言,我們稱之為正則語(yǔ)言(regularlanguages)。
正如字面上的意思,正則語(yǔ)言相對(duì)比較“規(guī)范”。它可以由一定的“生成語(yǔ)法”來(lái)生成,并且,可以被一個(gè)“有限狀態(tài)機(jī)”接受。
讓我們用下面這個(gè)例子來(lái)解釋。我們考慮一個(gè)正則表達(dá)式a(bb)+a,它的意思是匹配任意由a開始,由a結(jié)束,而其中有至少兩個(gè),至多任意偶數(shù)個(gè)b的字符串(在這里不考慮開始和結(jié)束的約束符號(hào))。
所謂的“有限狀態(tài)機(jī)”,就是如下圖的一個(gè)“機(jī)器”,它有一個(gè)起始狀態(tài)(a),有一個(gè)結(jié)束狀態(tài)(最后的a后面的那個(gè)雙線的圈),當(dāng)輸入的字符串根據(jù)其狀態(tài)轉(zhuǎn)移規(guī)則能夠走到結(jié)束狀態(tài)時(shí),即說(shuō)明“接受”了這個(gè)字符串。在下圖中,當(dāng)輸入為abbbba的時(shí)候,這個(gè)“機(jī)器”會(huì)依次根據(jù)狀態(tài)轉(zhuǎn)移的規(guī)則,一步一步走到最后的結(jié)束狀態(tài):
所以我們認(rèn)為abbbba是符合這個(gè)規(guī)則的字符串,實(shí)際上也符合正則語(yǔ)言的要求。所有符合“正則”規(guī)范的字符串的合集,就是“正則語(yǔ)言”。
編程語(yǔ)言,通常是符合喬姆斯基譜系中“正則語(yǔ)言”或是“上下文無(wú)關(guān)語(yǔ)言”的規(guī)范的,因而我們有辦法制造出一種規(guī)范的方法來(lái)處理它們(即下圖中的“Non-deterministicpushdown automaton”——不用擔(dān)心這樣看起來(lái)很嚇人的術(shù)語(yǔ),我們?cè)谶@個(gè)系列中會(huì)慢慢介紹的),這就是計(jì)算機(jī)能夠理解編程語(yǔ)言的秘密。
(上表:不同類型的語(yǔ)言及其生成的語(yǔ)法規(guī)范)
如果將人類語(yǔ)言看成是一連串的字符串,那它符合這樣的規(guī)范嗎?我們是否可以制造出這樣一個(gè)“狀態(tài)機(jī)”?并“接受”所有的人類語(yǔ)言(例如:漢語(yǔ))呢?
很不幸,人類語(yǔ)言的復(fù)雜度是高于程序語(yǔ)言的;自然語(yǔ)言是屬于Type-0,也就是最復(fù)雜的那一種語(yǔ)言。
以我們所舉的這道應(yīng)用題的例子來(lái)說(shuō),如果我們把“平均成績(jī)”換成“總分”,這就涉及到語(yǔ)義理解的問(wèn)題。平均成績(jī)的意思是求平均數(shù),總分的意思是求和。電腦必須要具有這樣的常識(shí),才能夠正確地工作。
60年代第一次“AI寒冬”就是由于所謂commonsense knowledge problem引起的:人們發(fā)現(xiàn)如果要采用暴力方法一個(gè)一個(gè)去定義所謂的常識(shí),這樣的工作量過(guò)于巨大,超出了人類工作的能力。
或者,如果我們把最后一句話中的小明改成“他”,那么計(jì)算機(jī)需要通過(guò)查詢上下文才能正確理解“他”是指誰(shuí),這是一個(gè)指代消解的問(wèn)題,而計(jì)算機(jī)暫時(shí)還不具備這個(gè)能力。
最后,如果改為問(wèn)“請(qǐng)問(wèn)小明最需要給哪一門補(bǔ)課?”,這就是一個(gè)有常識(shí)推理的問(wèn)題,計(jì)算機(jī)需要理解一個(gè)常識(shí),即一般而言都會(huì)補(bǔ)習(xí)最差的那門課,并且進(jìn)行推理才能得到答案。
所以,我們?cè)谶@里理清了這樣一個(gè)概念:雖然現(xiàn)代的計(jì)算機(jī)聰明到可以理解“編程語(yǔ)言”,但是同樣的技巧還不足以讓它去理解更加復(fù)雜的人類語(yǔ)言。這正是為什么在今天我們還需要成千上萬(wàn)的程序員辛勤地工作的原因了。
上述這種通過(guò)嚴(yán)格的邏輯規(guī)則來(lái)解決AI問(wèn)題的方法,就是“符號(hào)主義”。符號(hào)主義正是AI的聯(lián)合創(chuàng)始人之一、Lisp語(yǔ)言的發(fā)明者M(jìn)cCarthy所堅(jiān)持的學(xué)派,這個(gè)學(xué)派主張:人類智能的問(wèn)題,歸根結(jié)底,是可以用符號(hào)邏輯的方式解決的,而人類的語(yǔ)言,可以映射到一些抽象的邏輯規(guī)則上去。
根據(jù)這些規(guī)則可以進(jìn)行推理,然后能夠幫助人類解決一些問(wèn)題。當(dāng)然我們?cè)谏厦嬉部吹搅?,符?hào)主義一個(gè)非常大的弊端就在于:在解決實(shí)際問(wèn)題的時(shí)候,總是需要一些人類手工編寫的規(guī)則,而窮盡世間所有的規(guī)則的復(fù)雜度非常高——這導(dǎo)致了符號(hào)主義暫時(shí)性的失敗。
而與“符號(hào)主義”相對(duì)的是“連接主義”。連接主義認(rèn)為解決復(fù)雜性的辦法就是學(xué)習(xí)人腦的結(jié)構(gòu),用“神經(jīng)元”以及神經(jīng)元之間的連接來(lái)表征世間萬(wàn)物,而深度學(xué)習(xí)正是這種理念的代表。如果傳統(tǒng)的符號(hào)主義還不能夠解決我們的問(wèn)題,那么近期取得了巨大進(jìn)展的連接主義是不是有望在這個(gè)問(wèn)題上取得突破呢?
神奇的深度神經(jīng)網(wǎng)絡(luò),以及不那么神奇的結(jié)果
首先讓我們來(lái)看一個(gè)好消息,這篇論文提出了:“神經(jīng)網(wǎng)絡(luò)可以模擬通用圖靈機(jī)”的論點(diǎn)。
(“圖靈機(jī)”的概念我們會(huì)在下一篇文章中具體介紹。)
現(xiàn)在我們只需要對(duì)照上面的“喬姆斯基譜系”,看到“圖靈機(jī)”是可以解析最復(fù)雜的“Type-0”語(yǔ)言的,就可以知道,如果神經(jīng)網(wǎng)絡(luò)可以模擬“圖靈機(jī)”,那么一定也可以用于處理非常復(fù)雜的語(yǔ)言,譬如說(shuō)人類的自然語(yǔ)言。
但是落實(shí)到實(shí)際的應(yīng)用當(dāng)中,如果我們希望利用監(jiān)督式的機(jī)器學(xué)習(xí)方式,也就是說(shuō)通過(guò)構(gòu)建一個(gè)足夠龐大、包羅萬(wàn)象的訓(xùn)練數(shù)據(jù)集來(lái)讓機(jī)器學(xué)習(xí)到“自動(dòng)編程”的方法,恐怕不太現(xiàn)實(shí)——我們?cè)趺纯赡艿玫竭@么充分的訓(xùn)練數(shù)據(jù)呢?
所以,也許我們可以將問(wèn)題稍作簡(jiǎn)化,先解決一個(gè)復(fù)雜度相對(duì)可控的問(wèn)題,然后再去考慮通用性。特別地,如果小明的各科成績(jī)都已經(jīng)儲(chǔ)存在一個(gè)數(shù)據(jù)庫(kù)里了,我們只需要針對(duì)這個(gè)表來(lái)回答一些問(wèn)題呢?
這樣的話,我們的神經(jīng)網(wǎng)絡(luò)在給定一個(gè)輸入的問(wèn)題的時(shí)候(比如說(shuō),小明的所有科目的平均分是多少?),會(huì)輸出以下的內(nèi)容:
1)列選擇。需要知道我們想要操作的列(是“分?jǐn)?shù)”那一列)
2)操作符選擇。這里我們想選一個(gè)“AVERAGE”的操作。
3)行選擇。這里我們想要選擇所有行。
只要這三個(gè)選項(xiàng)都選對(duì)了,我們的神經(jīng)網(wǎng)絡(luò)就可以輸出正確的答案了。
這正是ICLR2017上面Google發(fā)表的一篇文章Learninga Natural Language Interface with Neural Programmer吧(暫時(shí)可以譯為“神經(jīng)程序員”)所采取的思路。
這樣一個(gè)神經(jīng)網(wǎng)絡(luò),要怎樣來(lái)訓(xùn)練呢?我們是要針對(duì)每一個(gè)問(wèn)題,給他標(biāo)上這三個(gè)選項(xiàng)所應(yīng)該對(duì)應(yīng)的內(nèi)容嗎?這樣所需要的標(biāo)注數(shù)量,依然太過(guò)龐大了。
所以現(xiàn)實(shí)一點(diǎn),我們希望這個(gè)網(wǎng)絡(luò)能夠利用弱監(jiān)督的方式來(lái)進(jìn)行學(xué)習(xí),換句話說(shuō),只要對(duì)這個(gè)問(wèn)題進(jìn)行正確答案的標(biāo)注,這個(gè)網(wǎng)絡(luò)就會(huì)自動(dòng)去學(xué)習(xí)寫程序(而不是死記硬背答案)了。這樣的話我們只需要針對(duì)一些有針對(duì)性的問(wèn)題來(lái)標(biāo)注少量的答案,就可以訓(xùn)練出這樣的一個(gè)神經(jīng)網(wǎng)絡(luò)了。
但經(jīng)過(guò)這樣層層的簡(jiǎn)化,谷歌的研究人員也還是只取得了以下的成果。
就算用15個(gè)這樣的模型進(jìn)行Ensemble,在測(cè)試集上也只有37.7%的正確率——這已經(jīng)是state-of-the-art的結(jié)果了。
從這樣的結(jié)果看來(lái),在第一回合的較量中,人工智能落了下風(fēng)。
雖然看上去程序員們還不會(huì)面臨立刻失業(yè)的危機(jī),可是別忘了,在AlphaGo征服圍棋界之前,人們還一度以為電腦至少還需要10年才能在圍棋項(xiàng)目中擊敗頂尖的人類選手呢。
這其中的奧秘在于,AlphaGo能夠根據(jù)圍棋規(guī)則進(jìn)行左右互搏式的“自學(xué)習(xí)”。但在自然語(yǔ)言理解的問(wèn)題中,如果只是像上面介紹的這樣進(jìn)行有監(jiān)督的學(xué)習(xí),是不太可能取得最終的成功的——這也是“連接主義”所面臨的一個(gè)巨大問(wèn)題,即使在擁有巨大計(jì)算力和海量數(shù)據(jù)的今天,取得優(yōu)質(zhì)的人工標(biāo)注好的數(shù)據(jù)集也是很困難的一件事情。
那么如果我們能夠?qū)W習(xí)AlphaGo那樣,讓電腦自己去學(xué)習(xí)語(yǔ)言的規(guī)則呢?敬請(qǐng)期待【人機(jī)之間的巴別塔之謎】系列文章。
Reference
【1】Chomsky, Noam 1956,Three models for the description of language Stanford Encyclopedia of Philosophy 2013, Logic and Artificial Intelligence
【2】Hava T. Siegelmann, Eduardo D. Sontag1991, Turing Computability with Neural Nets of Computer Science
【3】Alex Graves, Greg Wayne, Ivo Danihelka 2014, Neural Turing Machines
【4】Scott Reed, Nando de Freitas 2016, Neural Programmer-Interpreters Arvind Neelakantan, Quoc V. Le, Martin Abadi, Andrew McCallum, Dario Amodei 2017
【5】Learninga Natural Language Interface with Neural Programmer
【6】Pengcheng Yin, Zhengdong Lu, Hang Li, Ben Kao 2016, Neural Enquirer: Learning to Query Tables with Natural Language
【7】Will Knight 2016, AI’s Language Problem
NLP實(shí)戰(zhàn)特訓(xùn)班:阿里IDST9大專家?guī)闳腴T
iDST 九大工程師首次在線授課,帶你快速入門NLP技術(shù)
課程鏈接:http://www.mooc.ai/course/83
加入AI慕課學(xué)院人工智能學(xué)習(xí)交流QQ群:624413030,與AI同行一起交流成長(zhǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。