計算機能否真正理解人類語言?目前還無法理解語言的原因是什麼?

本題已收錄至知乎圓桌:機器之能 X 語言之美,更多「人工智慧」相關話題歡迎關注討論。

理論上最終能理解,但現在缺乏理論創新?


語言是人類交流的重要方式。通過語言,我們可以向他人傳達信息,表達自己的想法 ,或者讓別人做些什麼。正因為語言,我們才擁有抽象思考和推理的能力。因此,自然語言與我們的認知和情感過程密切相關。

對於某些任務,計算機表面上可以完成的和人類一樣好。但事實上,它們處理信息的方式,和我們截然不同。對計算機而言,理解人類語言是一個需要額外學習才能處理的任務,而不是計算矩陣這種,它們天生就擅長的東西。整個自然語言處理領域在做的事情,就是用演算法結構(或近幾年來開始流行的機器學習)的角度,解析語句結構、分析句子的情緒,或翻譯為其他語言等。

計算機理解自然語言最大的一個障礙,就是自然語言缺乏「精確定義的結構」。當然, 每種語言都有自己的語法規範,但人類的日常對話非常複雜,難以嚴格定義。我們有數不清的方式,來表達同一件事情。用計算機可以理解的嚴格規則,將所有這些方式都記錄下來,幾乎是不可能的任務。

更具體地說,要理解人類語言,需要事先儲備很多背景信息,並且經常需要用到常識。舉個例子,這句話:

「The sofa didn"t fit through the door because it was too narrow.」 「這個沙發過不去這扇門,因為它太窄了。」

這裡,我們知道「it」(它)指的是門,是門太窄了。但如果我們稍稍改變一下說法,只替換一個詞:

「The sofa didn"t fit through the door because it was too wide.」 「這個沙發過不去這扇門,因為它太寬了。」

在這句話中,「it」(它)則指的是沙發,而不是門。哪怕是這樣一個簡單的句子,要理解它,我們也用到了有關物體大小的物理知識:也就是更寬的東西不能穿過更窄的東西。要讓計算機理解這一點,我們需要把這個常識編碼到它的「腦袋」里,而且它能在恰當的時候使用。但我們還沒有很好的辦法。因此,要讓計算機正確理解任意一個句子,是非常困難的。

既然理解人類語言這麼難,那麼計算機可以做些什麼?首先,我們需要回過頭去想想 ,「理解一個句子的含義」,到底是指什麼?我們常常會把「含義」這個詞,理解成一個有 標準答案的東西。但實際上,一句話對於我們的含義,與我們的自身經歷,以及我們 如何把新概念與自己已知的概念相類比密切相關。例如,我們會把「derivative(導數)」想成一個函數在某一點的斜率;或者把「Atom」(原子)想成一個圓形的粒子,很多更小的粒子繞著它運動。有些類比較為準確,有些則不那麼準確,但說到底,它們都是模型。所以,理解一句話的含義的過程,也可以被認為是構建模型的過程。

這個模型不需要很完美,只需要對眼前的使用場景足夠精確就可以了。我們可以把自然語言處理的過程,仍然看成一個普通的計算任務,只需要定義一個模型,然後用機器學習演算法,迭代地訓練計算機來執行該任務。例如,識別垃圾郵件就可以被當作一 個分類任務。其中,郵件是輸入,「是垃圾郵件」或「不是垃圾郵件」的標籤是輸出;再例如,機器翻譯可以被當作一個序列到序列預測任務;而語言的情緒分析,則需要同時用到分類和回歸。

但使用這種方式有一個缺點,就是我們無法知道計算機得到最終結果的具體步驟,也就無法知道它是否真地理解了句子。大多數情況下,人們更在乎結果的準確率,不在乎計算機是否真地理解。但一些研究者也開始設計一些工具,可以更好地分析機器學習(入門)系統,分析演算法在訓練/學習過程中是如何構建結構和模型的。


對於計算機業內人士而言,人工智慧歸根結底並不真正「智能」,電腦思考的方式和人類的思考模式依舊大相徑庭。科學家們在做的只是盡量抽象出知識網路和語義網路,讓計算機有個合理的,類人的方式在網路中搜索,並利用「投機取巧」的關鍵字匹配,使得計算機能夠理解一些人類慣常使用的問句,達到回答問題的目的。最極端的例子是最近很火的某遜出品的某cho,可以匹配到絕大多數用戶關於音樂的問題,比如Lady Gaga最近的音樂,Taylor Swift好聽的歌,等等。然而如果你問它「Lady Gaga在與第八任男友分手後創作的第二首歌」,機器就會當場懵逼。至少某cho目前是會懵逼的。

好在用戶也很寬容,沒人會真的這樣去為難人工智慧,畢竟為難半天,最先厭倦的必然是用戶自己。因此現今市場上流通的交互助手型AI的使用過程,本質上是用戶在人肉探索AI的底線,也可以說是用戶在試探AI,以及學習AI的使用方法。正如某前輩戲言,大家買來AI是當遙控器來用的,而遙控器上不存在的按鈕是不會讓絕大多數用戶產生「按它」的想法的。

想想看,如果是你被問到這種問題,你會怎樣思考和回答?

當然是想想Lady Gaga的第八任男友是誰,然後看看他們什麼時候分的手,再根據分手日期來給之後的音樂排序,最後選擇其中的第二首。

實際上,這個思索模式利用目前的搜索引擎是可以做到的,但各大公司作為盈利機構,會首先做出一些用處比較大的、比較討巧的、能很快在市場上取得資本的產品。如今各國科學家以及各大公司都在鑄造龐大的知識庫和知識圖譜,該過程可能持續數十年之久。有理由相信,未來的AI可以越來越聰明,越來越博學。但我個人的觀點是,除非生物領域和AI領域同時取得突破,使得機器獲得有機體的運作模式,最終具備人類嬰兒的學習能力,否則讓人工智慧真正智能起來,還有很長一段路要走。每一個AI正確回答的你的古怪問題,背後都凝聚著各個數據團隊的心血。


感謝邀請。

看到不少朋友已經很好地回答了這個問題,我再補充一點個人想法。

首先約定下怎樣算是理解。語言的理解有多個層面和深度,我們自己也經常不能完全明白別人的意思,那麼對於機器而言,明白到什麼程度算是理解呢?這個問題沒有標準答案,所以我這裡提的是「約定」而不是「定義」。一個看起來比較合理的衡量辦法,就是N多年前提出的圖靈測試:機器能否成功地偽裝人。這裡不得不再次仰慕一下圖靈老爺子,過了70多年還是無人能夠提出更好的測試辦法。

採用圖靈測試並不表示讓語言理解這個問題簡單化了,我們還要加條件。大家可能也聽到過某某某某系統通過了圖靈測試,這裡不評價他們的測試過程是否合理,我們再約定下:1)機器的對比對象應該是個沒有語言障礙的正常成人,2)測試時間要足夠長。

我們預測下能通過這樣的圖靈測試的機器會具備的特徵:1)不需要知識全面,但要自成體系,符合基本邏輯;2)不能具備普通人沒有的能力,如快速計算;3)具有鮮明的個性特徵,包括弱點;4)具有情感表達能力;5)大家來補充。

所以構建這樣一個語言模型,難點不在於大量的普適知識,而是個性化的知識體系、性格特徵和思維方式。

說到這裡,是不是已經背離了自然語言理解的主要目的?我們最需要的是能夠幫助到我們的,至少在現階段,而不是一個有性格有脾氣有缺點的機器。

回到主題,機器能否真正理解人類語言,目前還沒有一個好的判別標準和方法。:-)


現在閱讀理解能力為0的,在知乎上都一大片。

分不清舉例和比喻,分不清誇張和描述。

經典說法不懂,稍微暗含兩層到三層的意思就是神級對話。

人都不行,更何況機器。


「理解」是一個很空泛的定義,事實上「人類是否能夠真正理解人類語言」這個問題都很難回答。舉個例子,詰屈聱牙的尚書中有四個字「曰若稽古」 (曰若稽古帝堯曰放勛, 尚書 堯典)。到底這是什麼意思?是「順從古代人的意思」,還是「從古籍中查考」?據說有人寫了三萬字來解釋這四個字。信息從發言者的大腦中經過編碼,書寫,傳遞,閱讀,其實是一個有損的過程。用文字完整地表達一個意思是極其困難的,更不用說理解了。理解一句話往往需要大量的背景知識和當時的環境知識,上下文知識等等。比如,「把書包放回去」,這一句簡單的話,我們需要知道場景中有幾個書包,如果有幾個書包,那麼說話者是對誰說的?「回」是回到哪裡去?這些都是通過上下文,背景知識與環境知識才能夠解答的問題。因此,為了執行這一個特定任務,就需要各種知識的表示——目前人類的計算機水平還沒有達到能夠全面表示這些知識並加以利用的地步。

如果我們從「完成任務」這個角度看這個問題,那麼計算機是否理解人類語言的評價標準就應該是計算機是否能夠從語言中獲得完成任務所需要的信息並正確地執行這個任務。在這個標準下,理解就是任務相關的——理解到什麼程度,需要多少世界知識等,都是由任務的特性決定的。例如,心理諮詢與控制空調這兩個任務其需求大不相同。計算機恐怕無法理解心理諮詢中的語言,但是控制空調這個任務下,計算機理解人類語言綽綽有餘。一些通用的任務,例如對話系統,對語言理解的要求很高。另一些任務,例如機器翻譯,往往不需要太深入的語言理解就能夠達到較好的效果。


分享和解讀一個Piero Sraruffi在《人類2.0》中的觀點,計算機能明白人類語言但無法理解。Bertard Russell曾說過,語言成為溝通的首要形式的原因是,說話是經由身體活動迅速產生大量符號的最經濟的辦法。Edward Sapir也表達過,語言最初不是為溝通而誕生的,溝通只是符號化的副產品,儀式、神化和音樂則是人類創造的符號系統的絕佳的例子,信仰則是一種終極的符號體系。

我們人類踐行的是一種【符號思維】。

而計算機/人工智慧基於神經網路的深度學習,踐行的是【機器思維】,前者包括了價值觀等精神方面的思維模式,後者則是嚴格執行規則以及制度。


人類真正理解了鳥為什麼會飛的空氣動力學原理之後,才逐漸製造出了飛機。鳥會飛並不是因為長了翅膀,而是翅膀扇動產生升力,然後飛機藉助高速氣流在上下表面壓強不同產生升力。

在理解人類語言機能之前,計算機恐怕無法真正理解人類語言。

希望有生之年能看到,人類語言機能這個科技樹能得到突破。


目前計算機不能理解人類語言的根本原因,是因為人類語言是人類智能的最高層的抽象表達。打個比方,目前人工智慧的水平就好像是在分子級別,看到好多各種各類的分子運動,從分子這個級別是無法理解汽車、飛機這樣的宏觀物理概念的運動規律的。


前面很多人已經提到了,目前我們對」理解語言「並沒有一個很好的定義,導致無法有效評估計算機是否真正理解了人類語言。假設我現在發布一個AI,告訴大家它能夠理解人類語言,我們應該如何測試呢?要理解語言往往還牽扯到對我們所處的世界的了解(world knowledge),比如 @優達學城(Udacity) 提到的Winograd Schema Challange,以及對非字面含義的推測(語用學,Pragmatics)。往大了說這裡的理解已經延伸到對人類知識,常識,文化等的理解。

目前大部分自然語言處理的工作都是以完成一個具體任務為目標的,比如文本分類,問答,翻譯,閑聊等等。要注意的是,成功的完成某個特定任務也並不能說明AI在這個領域內理解語言。目前大部分基於統計的模型學到的都是數據里的pattern,也就是輸入的信息和我們要預測的輸出之間的相關性。這樣做有問題嗎?在現有的評估體系下(給定輸入求輸出)當然沒有問題。但是,相關不蘊涵因果。就好比小明做選擇題時發現一個「規律」:每當問題中有「球體」這個詞時答案都是C,如果考試時這個「規律」在80%的情況下成立,小明也能拿到不錯的成績。

這裡推廣一下我們實驗室最近的工作:Adversarial Examples for Evaluating Reading Comprehension Systems. Robin Jia and Percy Liang. EMNLP 2017。主要講的就是閱讀理解模型如何被文章中加入的一句毫不相干的話迷惑進而準確率直線下滑。在計算機視覺中也有類似的問題,比如因為「看到」背景里有雪就把前景中的動物分類為狼[1]。這些「規律」可能針對某個數據集有效,但離舉一反三(泛化,generalization---機器學習的終極目標)還差的太遠。

總之,「理解語言」所涵蓋的問題十分廣泛。目前的一個小目標還僅僅是學好給定數據上的pattern,希望能看到更多zero/one-shot learning在NLP上的應用。

[1] M. Tulio Ribeiro, S. Singh, C. Guestrin. "Why Should I Trust You?": Explaining the Predictions of Any Classifier. Knowledge Discovery and Data Mining (KDD). 2016.


不能理解,人類理解語言才是真正的理解,計算機沒有意識,怎麼理解,有個研究方向叫自然語言處理,就是干這個的,計算機是無法超過人類的,他們和人的本質區別是是否有意識。計算機就沒意識,壓根意識不到我是我。沒有自己的思想,計算機怎麼理解呢?其實就是建造一個資料庫,輸入計算機的東西與資料庫匹配,然後產生相應的動作。當然現實生活中要複雜的多。計算機其實就是一個加強版的工具。它不是一個生物,真正的生物有自己的意識,知道我是我。


回答這個問題前,可以先再問一個問題:"人工智慧真的智能嗎?"。從計算機科學的角度,可以說我們現在有了很多面向不同領域的智能化應用,如自動駕駛,自動工業製造,智能搜索引擎,智能醫療輔助,有些還深入到我們自己生活中,包括蘋果手機上的siri,微軟的小冰。

但從生物學角度來說,人工智慧一點也不"智能"。一句話,已有的AI始終受限於編程和訓練數據,一旦運行過程中出現未定義的新情況或新對象,則無法實時作出合理應對。目前的AI不具有生物具有的運用知識經驗來應付新問題的不間斷學習能力。

因此,AI並不是理解人類所說的話,原因正在於其利用海量語言數據,從中提取特徵構建統計模型來習得某種語言。簡單的說,也就是是對讀入的語音或文字進行分析,根據已有的數據搜索、推理後,給出大概率下合理的答案。要想和AI進行如人類間的語言交流,甚至情感交流,研究人員還有很多工作要做。

因此,自然語言理解是AI研究的一大方向,前面各位回答的已經十分詳細了。

另外值得注意的研究新進展還有近期OpenAI的一項研究,AI自己發明一種稱之為基礎合成語言(grounded compositional language )的類似彙編語言來進行相互交流,以後若能與英語鏈接這樣,或者可以讓AI更快理解人類語言。還有最近微軟創新杯里亞利桑那大學團隊運用增強現實和腦電圖技術來輔助機器人理解人類精神狀態和動作,從而更有效合作完成類似車間流水線零件裝配這類任務,來避免單純採用自然語言進行人機交流出現歧義的情況。

但是這樣的AI 始終只能做自己領域裡的事,比如現在家裡的掃地機器人沒法給你泡一杯咖啡,像科幻電影里那種萬能的機器人管家真的離我們距離還比較遠,針對特定目標讓AI做好一件事情才是研究者和業界覺得有效率的方式。但科學家們研究人工智慧的終極目標還是像人類一樣可以做很多類型的通用人工智慧。

這樣的研究不是沒有,今年3月DARPA開始招標的L2M lifelong learning machines項目,叫做終身學習機器,目的從根源上解決機器沒有持續學習能力的問題。通過借鑒生物系統的學習方式來構建相似原理的演算法並研發出實際的系統,從而使AI 具有依據舊有經驗在面對新情況時實時作出決策的自適應能力,而不依賴龐大的訓練數據。也就是AI可以用自身知識來解決不同種類問題。這種研究需要神經科學,計算機,數學,材料科學等多個領域的研究人員通力合作,這個其實並不容易,但研究期間出現的新技術也值得期待,畢竟不積跬步無以至千里嘛。


理解是通過應用來判斷的,就好像老師教了學生一個知識點,然後問理解了沒有,學生說理解了,怎麼證明呢,讓他做一些題目,如果都做出來了,說明真的理解了。語言是信息的載體,從這個意義上來說,語言有很多,光聲音這些是語言,漢語英語是語言,C++Java是語言,等等等等,這些語言要能被應用首先都是要理解,而能應用了說明必然是已經理解了。對於C++Java這些編程語言,我們人能應用,能用它們寫出各種各樣的程序,我們自然是理解的,而機器是否理解呢,自然也是理解的,不然它們怎麼可能正確地運行程序,展示給我們想要的結果呢?而對英語漢語這些自然語言,我們人自然是理解的,而電腦目前還無法理解,否則我們就可以直接用自然語言和電腦交流了,沒C++Java什麼事了。但電腦必然是可以理解自然語言的,只是因為自然語言太過複雜而還無法理解而已,電腦理解自然語言和理解編程語言在本質上是一樣的,自然語言並非是只有人類才能理解的。


我是個搞nlp的,具體是搞chatbot。可是我接下來說的話可能有點民科,但是也是算我個人閑暇的時候一點思考。

我們都知道dl在應對圖片上取得了不俗的效果,但是就我這塊領域,chatbot來說,效果還是很差。

有多差?檢索類機器人看看小冰什麼尿樣就知道了,生成式VHRED算目前seq2seq最強變種之一了,參數難調,結果還不好(待考證)。

有時候做著做著,忽然會心裡一緊,這麼trivial的條件概率建模真的是對話優化的目標嗎?如果不是,那又應該來怎麼建模整個問題?

大概坐久了這種成果很差的東西,會很羨慕搞cv的那群人,至少在某些專門的task上已經有了比人還好的state of the art方法。

現在回答一下題主的問題,目前dl在nlp上不work的原因我覺得可能有兩個

a.本身建模就錯了,再怎麼優化,也是白搭。

b.高質量dataset和模型的特徵抽取能力太弱,不足以學到sematic以上的特徵。只要有一天數據增多,模型變強,也是能學到這些data背後的structure的。

以上,是一個小菜鳥在不看論文時候瞎想的一本道,請大家隨意批判。


機器可以明白語言意思但是不能理解,為什麼這樣說呢,其實人類有絕大部分人,是不理解語言意思得,他們所會得就是知道,在什麼場合下,用什麼語言,或者辭彙,問他這個辭彙什麼意思,絕大部分人是解釋不出來得,所以人工智慧能夠得到在什麼場合用什麼辭彙(只要一個辭彙資料庫),但是不能理解辭彙意義,,


人類語言與時俱進,而且地方特色語言也較多,像中文中一個詞在不同語境不同場合皆能有表達不同的意思。


首先,就人類本身來說,完全了解一門自己的語言,那都不是一件容易的事情,比如我們在日常使用中,各種方言,各種俚語,各種口頭禪,各種流行辭彙,各種外來辭彙,更要命的是同樣的詞在不同的語境中有很多意思,還不算上人類那刷心機的各種黑,各種冷嘲熱諷,各種指桑罵槐。別說機器了,就算是一個外國人,那也是不可能100%掌握另一種語言的。

所以,推廣普通話,將語言標準化,將明令標準化,這才是人工智慧未來能理解的範疇。

比如,我說,卧槽,你真牛逼,請問,我是誇你牛逼呢,還是說你傻逼?


真正理解。

比題主更理解。

不要抱著遮羞布自以為高機器一等了,人類智慧的結晶 怎麼可能比 作為智慧原料的普通人的智慧 更差呢?


這個問題首先需要明確「理解」這個詞的含義,如果此處的「理解」是只按照人類理解語言的方式讓計算機明白、了解、懂得人類語言所表達出來的含義的話,那計算機不光在目前的理論上不能甚至在可預見的未來的理論上都不能。

目前的計算機是無法理解任何自然語言符號的,不管是表意文字還是表音文字,甚至是C、C++等這些能夠被計算機直接執行的計算機語言,對於計算機來說也是無法理解的。

計算機的核心是CPU,而CPU這個超大規模集成電路能夠做到理解語言符號嗎?計算機語言之所以能夠調用計算機的硬體是因為這些語言在執行的過程中會被編譯成0和1的二進位串。這是CPU的工作原理,其實只要明白計算機是如何工作的以及計算機語言是如何被執行的就能很明白計算機能否理解自然語言了。

那麼我們有可能通過某種規則或者演算法讓計算機理解人類語言嗎?

答案也是很明顯的,不能。

目前的人工智慧和機器學習什麼的只是通過演算法來完成了某一項任務,對計算機來說它只是執行了一系列的二進位編碼串而已。事實上我們用電腦上網瀏覽網頁和Google用阿爾法狗下圍棋在計算機的CPU執行層面來說並沒有什麼區別,不同的只是代碼層面的演算法。

回到語言上,以市場上的各種語音助手為例子,當我問「明天XX(地名)天氣如何?」語音助手會回答「明天氣溫20度,balabalabala」,但是如果我問明天要去XX(地名)玩,需不需要穿厚一點,那語音助手估計就懵逼了,或者聯網給你推薦一堆旅遊攻略之類的。

那我們可以認為語音助手理解了第一句而沒有理解第二句嗎?事實上兩句都沒有理解。

語音助手能夠識別的語言指令都是程序類設定好了的,比如我要問天氣,那麼我可能會直接問天氣怎樣,或者問會不會下雨,在或者要不要出門帶雨傘之類的。那麼語言助手就可以在程序里設置關鍵字:雨傘、帶雨傘、下雨、會下雨等等,當你問的句子中有類似的關鍵字能夠匹配上的時候語音助手就會提供天氣信息。

所以計算機只能執行那些被事先編程好的代碼,超出的部分計算機是無法執行的,比如讓阿爾法狗一個為期軟體去下象棋、去導航、去自動駕駛等等。

所以計算機無法理解自然語言,它只是執行了編程好了代碼指令而已。


日常語言問題先要轉換為學術研究問題。計算機理解人類語言(自然語言理解)現在的解決方法和人類語言學沒什麼關係,和人工語言也沒有什麼關係,存粹是統計和特徵提取。因為現在統計樣本足夠大,所以大多數情況下已經夠用了。但是從生理學出發,人的發音器官總有那麼一些人很特別,還有喪失發音能力的人,就老老實實打字吧。

另外一個問題,計算機對於人類語言的認知是否可以做到和人類相同。從喬老爺子的那句斷言來看,人類的語言確實有某種生理機制,所以計算機想要獲得和人類一樣的認知,必須具備類似結構,起碼現在還沒有,也不必要。


要回答這個問題,首先要理解人類智能的真正原理,或者特性。

就目前來說我覺得有以下幾個方面

1 知識 跟人腦差太多了

2 抽象能力差很多

3 推理能力差很多


推薦閱讀:

一個時代的科技水平到底是頂尖科技還是大眾科技?
中國目前取得了較大的成就,面向未來,我們該怎麼做?
人類目前最高科技能達到什麼水平?
如何看待衛計委要求互聯網醫院 2 周內全部註銷重新註冊?
這艘航母的吃水為什麼這麼淺?

TAG:人工智慧 | 科技 | 自然語言處理 | 計算機科學 |