運用深度學習教機器人理解自然語言

2020-12-05 雷鋒網

雷鋒網按:本文作者Jonathan是21CT的首席科學家。他主要研究機器學習和人工智慧如何使用在文本和知識中讓計算機變得更智能。他在德克薩斯農工大學獲得心理學學士學位和工商管理碩士,在德克薩斯大學獲得計算機博士學位。譯者/趙屹華 審校/劉帝偉、朱正貴 責編/周建丁。

在深度學習出現之前,文字所包含的意思是通過人為設計的符號和結構傳達給計算機的。本文討論了深度學習如何用向量來表示語義,如何更靈活地表示向量,如何用向量編碼的語義去完成翻譯,以及有待改進的地方。

在深度學習出現之前,我們書寫的文字所包含的意思是通過人為設計的符號和結構傳達給計算機的。其符號方法包括WordNet、ConceptNet和FrameNet,通過對比來更好地理解深度學習的能力。然後我會討論深度學習如何用向量來表示語義,以及如何更靈活地表示向量。接著我將探討如何用向量編碼的語義去完成翻譯,甚至為圖片添加描述和用文字回答問題。最後,總結了用深度學習技術真正地理解人類語言還需要哪些改進。

WordNet可能是最著名的象徵意義的語料庫,由普林斯頓大學研發。它將意思相近的單詞歸為一組,並且表示組與組之間的層次聯繫。舉個例子,它認為「轎車」和「汽車」指的是同一個物體,都是屬於一類交通工具。

ConceptNet是來自麻省理工學院的語義網絡。它表示的關係比WordNet更廣。例如,ConceptNet認為「麵包」一詞往往出現在「烤麵包機」附近。然而,詞語間的這種關係實在是不勝枚舉。理想情況下,我們會說「麵包機」不能被「叉子」插入。

FrameNet是伯克利大學的一個項目,它試圖用框架對語義歸檔。框架表示各種概念及其相關的角色。例如,孩子生日聚會框架的不同部分有著不同的角色,比如場地、娛樂活動和糖源。另一個框架是「購買」這個行為,包括賣方、買方和交易商品。計算機能夠通過搜索觸發框架的關鍵詞來「理解」文字。這些框架需要手動創建,它們的觸發詞也需要手動關聯。我們可以用這種方式來表示大量知識,但是很難一五一十地明確寫出來。因為內容實在太多,完完全全寫出來也太費神了。

符號也可以用來創建語言模型,計算某個單詞將會出現在句子中的概率。舉個例子,假設我剛剛寫下「我吃了」,那麼下一個詞語是「慶豐包子」的概率,可以用語料庫中「我吃了慶豐包子」出現的次數除以「我吃了」出現的次數來計算。此類模型相當有用,但我們知道「慶豐包子」與「狗不理包子」非常相似,至少比「電飯鍋」相似,但是模型並沒有利用這種相似性的優勢。使用的詞語有千千萬萬,若是存儲所有三詞短語需消耗(詞語數量 x 詞語數量 x 詞語數量)存儲空間,這也是使用符號所帶來的問題,因為詞語以及詞語的組合實在太多。所以,我們需要一種更好的方式。

使用向量表示語義

深度學習使用向量來表示語義,因此概念不再是由一個龐大的符號來表示,而是由特徵值表示的一個向量來表示。向量的每個索引代表神經網絡訓練得到的一個特徵,向量的長度一般在300左右。這是一種更加有效的概念表示方法,因為這裡的概念是由特徵組成的。兩個符號只有相同或者不同兩種情況,而兩個向量可以用相似性來衡量。「慶豐包子」對應的向量與「狗不理包子」對應的向量很接近,但是它們和「轎車」對應的向量差別很大。如同WordNet處理方式一樣,相似的向量被歸為同一類。

向量還存在內部結構。如果你用義大利向量減去羅馬向量,得到的結果應該與法國向量減去巴黎向量的結果非常接近。我們可以用一個等式來表示:

義大利 - 羅馬 = 法國 - 巴黎

另一個例子是:

國王 - 皇后 = 男人 - 女人

我們通過訓練神經網絡來預測每個詞語附近的詞語,得到帶有這些屬性的向量。你可以從谷歌或者是斯坦福直接下載已經訓練好的向量,或是用Gensim軟體庫自己訓練。令人驚訝的是這種方法竟然有效,而且詞向量有如此直觀的相似性和聯繫,但事實上確實是有效。

由詞向量構成語義

我們已經有了原來表示單個詞語的向量,該如何用這些詞表示語義,甚至形成完整的句子呢?我們使用一種稱為遞歸神經網絡(recurrent neural network, RNN)的技術,如下圖所示。用RNN把句子「The woman ate tacos.」編碼為向量,記作h4。單詞「the」的詞向量記作h0,然後RNN把h0與表示「woman」的詞向量結合,生成新的向量h1。然後向量h1繼續與下一個單詞「ate」的詞向量結合,生成新的向量h2,以此類推,直到向量h4。向量h4則表示了完整的句子。

一旦信息被編碼為一個向量,我們就能將其解碼為另一種形式,如下圖所示。比如,RNN隨後可以將向量h4表示的句子翻譯(解碼)成西班牙語。它先根據已有向量h4生成一個最有可能的單詞。向量h4與新生成的單詞「La」一起又產生了向量h5。在向量h5的基礎上,RNN推出下一個最有可能出現的單詞,「mujer」。重複進行這個過程直到產生句號,網絡結構也到此為止。

使用這種編碼器—解碼器模型來做語言轉換,需要用一個包含大量源語言與目標語言的語料庫,基於這個語料庫訓練RNN網絡。這些RNN通常含有非常複雜的內部節點,整個模型往往有幾百萬個參數需要學習。

我們可以將解碼的結果以任何形式輸出,例如解析樹(parse tree),或是圖像的描述,假設有足夠多包含描述的圖像素材。當給圖片添加描述時,你可以用圖片訓練一個神經網絡來識別圖像中的物體。然後,把神經網絡輸出層的權重值作為這幅圖像的向量表示,再將這個向量用解碼器解析出圖像的描述。

從合成語義到關注、記憶和問答

剛才的編碼器—解碼器方法似乎像是小把戲,我們接著就慢慢的來看看其在實際場景的應用。我們可以把解碼的過程想像成回答問題,「這句話該怎麼翻譯?」或者,已經有了待翻譯的句子,並且一部分內容已經翻譯了,那麼「接下去該怎麼寫?」

為了回答這些問題,算法首先需要記住一些狀態。在之前提到的例子中,系統只記住當前向量狀態h以及最後寫下的單詞。若是我們想讓它能運用之前全部所見所學該怎麼辦?在機器翻譯的例子裡,這就意味著在選擇下一個單詞時,要能夠回溯之前的狀態向量h0、h1、h2和h3。創造了能滿足這種需求的網絡結構。神經網絡學習如何在每個決策點確定之前哪個記憶狀態是最相關的。我們可以認為這是一個關註記憶的焦點。

它的意義在於,由於我們可以將概念和語句編碼為向量,並且我們可以使用大量的向量作為記憶元素,通過搜索能找到問題的最佳答案,那麼深度學習技術就能用文字來回答問題了。舉一個最簡單的例子,用表示問題的向量與表示記憶的向量做內積運算,把最吻合的結果作為問題的最佳回答。另一種方法是把問題和事實用多層神經網絡進行編碼,並把最後一層輸出傳給一個函數,函數的輸出即為答案。這些方法都是基於模擬問答的數據來訓練,然後用下文Weston所示的方法回答問題。

下一個前沿方向是準確理解語義

剛剛討論的方法是關於如何以讀故事的方式回答問題,但是故事的一些重要情節一目了然,我們不必都寫下來。設想桌上放著一本書。計算機如何才能知道你挪動桌子的同時也挪動了書本?同樣的,計算機怎麼知道屋外只是下雨了呢?就如Marvin Minsky所問,計算機如何知道你能用一根繩索拉箱子而不是推箱子呢?因為這些事實我們不會都寫下來,故事將只限於能被我們算法所表示的知識。為了獲取這部分知識,我們的機器人(robot)將通過實景體驗或者模擬體驗來學習。

機器人必須經歷這種實景體驗,並用深度神經網絡編碼,基於此可以構建通用語義。如果機器人總是看到箱子從桌上掉下來,它則會根據這一事件創建一條神經迴路。當媽媽說「天啊,箱子跌落下來了」,這條迴路將會和單詞「跌落」結合。然後,作為一個成熟的機器人,當它再遇到句子「股票跌落了10個點」,根據這條神經迴路,它就該理解其中的意思了。

機器人還需要把一般的實景體驗與抽象推理相結合。試著來理解這句話的含義「他去了垃圾場。」(He went to the junkyard.)WordNet只能提供一組與「went」相關的單詞。ConceptNet能把「went」和「go」聯繫在一起,但是永遠也不明白「go」的真正意思是什麼。FrameNet有一個self-motion的框架,已經非常接近了,但還是不夠。深度學習能把句子編碼成向量,然後回答各種問題,諸如用「垃圾場」回答「他在哪兒」的問題。然而,沒有一種方法能夠傳遞出一個人在不同位置這層意思,也就是說他既不在這裡,也不在其它地方。我們需要有一個連接自然語言和語言邏輯的接口,或者是用神經網絡對抽象的邏輯進行編碼。

實踐:深度學習的入門資源

入門的方法有很多種。斯坦福有一門用深度學習做NLP的公開課。也可以去看Hinton教授在Coursera Course的課程。另外,Bengio教授和他的朋友們也編寫了一本簡明易懂的在線教材來講解深度學習。在開始編程之前,如果你使用Python語言,可以用Theano,如果你擅長Java語言,就用Deeplearning4j。

總結

計算機性能的提升和我們生活的日益數位化,推動了深度學習的革命。深度學習模型的成功是因為它們足夠大,往往帶有上百萬的參數。訓練這些模型需要足夠多的訓練數據和大量的計算。若要實現真正的智能,我們還需要走得更深。深度學習算法必須從實景體驗中習得,並概念化這種經驗,然後將這些經驗與抽象推理相結合

雷鋒網註:本文由CSDN授權雷鋒網(公眾號:雷鋒網)發布,轉載請聯繫原作者。

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 實踐入門NLP:基於深度學習的自然語言處理
    特別是最近兩年,基於深度學習的自然語言處理逐漸取得了一定進展,在人機對話、問答系統、語言翻譯等方向的應用也一直是自然語言處理中的熱門話題,而這些應用的實現,基本依賴於底層技術和模型的進步,再加上自然語言處理領域也算是一個多學科交叉的行業,自然語言處理的未來發展對於很多相關學科和方向都具有深遠的影響力。
  • 號稱能夠理解自然語言的聊天機器人,在圖靈測試下被分分鐘打臉
    都說聊天機器人已經能夠與人正常交流了,可事實真是如此嗎? 近日,針對聊天機器人「自然語言理解」的「威諾格拉德模式挑戰賽」(Winograd Schema Challenge)落下帷幕。而在結果展示中,聊天機器人們的表現顯得不盡如人意,令人唏噓!
  • 自然語言處理深度學習的7個應用
    原文:7 Applications of Deep Learning for Natural Language Processing作者:Jason Brownlee翻譯:無阻我飛揚摘要:在這篇文章中,作者詳細介紹了自然語言處理深度學習的7種應用,以下是譯文。自然語言處理領域正在從統計方法轉變為神經網絡方法。
  • 從語言學到深度學習NLP,一文概述自然語言處理
    本文從兩篇論文出發先簡要介紹了自然語言處理的基本分類和基本概念,再向讀者展示了深度學習中的 NLP。這兩篇論文都是很好的綜述性入門論文,希望詳細了解自然語言處理的讀者可以進一步閱讀這兩篇論文。本文第一部分介紹了自然語言處理的基本概念,作者將 NLP 分為自然語言理解和自然語言生成,並解釋了 NLP 過程的各個層級和應用,這一篇論文很適合讀者系統的了解 NLP 的基本概念。
  • CNCC 2019 | 劉群:基於深度學習的自然語言處理,邊界在哪裡?
    近日,在北京語言大學舉辦的第四屆語言與智能高峰論壇上,華為諾亞方舟實驗室語音語義首席科學家劉群教授高屋建瓴,細緻分析了深度學習時代NLP的已知與未知。他從自然語言處理基於規則、統計到深度學習的範式遷移出發,探討了深度學習方法解決了自然語言處理的哪些問題以及尚未解決哪些問題。
  • 深度| 深度學習概覽之自然語言處理:從基本概念到前沿研究
    在這裡,機器之心隨帶推薦一篇之前發過的文章《總結 | 2016 年最值得讀的自然語言處理領域 Paper》自然語言處理介紹介紹自然語言處理(NLP)研究的問題是關於如何構建通過處理和理解語言來執行某些任務的系統。
  • 人工智慧與自然語言處理概述:AI三大階段、NLP關鍵應用領域
    「人工智慧」包含兩個關鍵點:自動化智能人工智慧的目標推理自動學習&調度機器學習自然語言處理計算機視覺機器人通用智能人工智慧三大階段階段 1——機器學習:智能系統使用一系列算法從經驗中進行學習。階段 2——機器智能:機器使用的一系列從經驗中進行學習的高級算法,例如深度神經網絡。
  • 自然語言處理(NLP)中的深度學習發展史和待解難題
    王小新 編譯自 sigmoidal量子位 出品 | 公眾號 QbitAI自然語言處理(NLP)是指機器理解並解釋人類寫作與說話方式的能力。近年來,深度學習技術在自然語言處理方面的研究和應用也取得了顯著的成果。技術博客Sigmoidal最近發布了一篇文章,作者是機器學習工程師Rafal。
  • 深度學習在NLP中的運用?從分詞、詞性到機器翻譯、對話系統
    自然語言是人類知識的抽象濃縮表示,而自然語言理解是人工智慧研究領域中極具挑戰的一個分支。上次,《自然語言處理在 2017 年有哪些值得期待的發展?》中,我們已經講到,2016 年是深度學習大潮衝擊 NLP 的一年,通過去年一年的努力,深度學習在 NLP 領域已經站穩了腳跟。
  • 閒談深度學習在自然語言處理領域的5大關鍵優勢
    在自然語言處理領域,深度學習將給予最大的幫助,深度學習方法主要依靠一下這五個關鍵優勢,閱讀本文將進一步了解自然語言處理的重要深度學習方法和應用。 在自然語言處理領域,深度學習的承諾是:給新模型帶來更好的性能,這些新模型可能需要更多數據,但不再需要那麼多的語言學專業知識。
  • 王海峰出席CCHI2018 深度解析「多模態深度語義理解」
    本屆大會邀請了認知建模與計算、混合智能、智慧機器人、智能駕駛等領域海內外知名專家作學術報告,交流相關研究領域的最新成果和發展趨勢。王海峰是人工智慧的領軍人物之一,在國內外有廣泛的影響力。他是自然語言處理領域最權威的國際學術組織ACL 50多年歷史上唯一出任主席(President)的華人,也是ACL亞太分會(AACL)創始主席。
  • 慢步學習,python語言編程,來扯扯語言的學習理解
    關於語言的共性——累積學習程式語言,跟一個人學習一門自然語言(英語、日語)是差不多的。學習在某種情景下使用語言的詞彙/語句來表達。比如表達善意的問候:「你好」、「hello」、「こんにちは(抗你知哇)」。語言的學習,就是不斷的累積相應情景下的語言表達。
  • 科普丨什麼是NLP(自然語言處理)
    自然語言處理(NLP)是一種專業分析人類語言的人工智慧。(下文皆簡稱為「NLP」),它的工作原理是這樣的:接收自然語言,這種語言是通過人類的自然使用演變而來的,我們每天都用它來交流轉譯自然語言,通常是通過基於概率的算法分析自然語言並輸出結果
  • 中國的自然語言處理領域的人工智慧公司
    自然語言處理的英文是Natural Language Processing,一般被簡寫為NLP,它實際上包括了三個方面:語音識別、自然語言理解與語音合成(有一些人把語音識別作為自然語言處理之外的技術,在本文中,我們將語音識別也包含在自然語言處理的技術範疇之內)。
  • 最常見的深度學習應用
    深度學習技術在人工智慧領域目前佔有絕對的統治地位,因為相比於傳統的機器學習算法而言,深度學習在某些領域展現出了最接近人類所期望的智能效果,同時也在悄悄的走進我們的生活,例如刷臉支付、語音識別、智能翻譯、汽車上的智能輔助駕駛等等,這讓我們的生活開始慢慢智能化,那具體在哪些方向深度學習表現的最為耀眼吶
  • 推薦算法系統/人臉識別/深度學習對話機器人高級實戰課
    3、深度學習對話機器人實戰對話機器人是一個用來模擬人類對話或聊天的電腦程式,本質上是通過機器學習和人工智慧等技術讓機器理解人的語言。它包含了諸多學科方法的融合使用,是人工智慧領域的一個技術集中演練營。在未來幾十年,人機互動方式將發生變革。
  • 麻省理工正在教機器人理解人類說話語境
    【TechWeb報導】8月31日消息,據Engadget報導,現在,要讓你對機器人發出指令,讓它做什麼,得到的結果可能會令你很沮喪,尤其是你還不是程式設計師。造成這樣結果的原因是,機器人不能真正理解上下文含義——當你叫它們「撿起這個」,他們通常不知道「這個」指的是什麼。
  • 看一遍人類動作就能模仿,能理解語義的谷歌機器人登上無監督學習的...
    在這篇文章中,谷歌的研究者討論了他們最近關於機器人學習的一些工作,它們結合了機器人自主收集的經驗和人工標註的數據,其中機器人的自主收集的數據很豐富,但缺乏人工提供的標註,而人工標註的數據能使機器人更好地理解語義。同時本文也描述了機器人如何使用它們的經驗來理解人工示範中的顯著事件,並且理解諸如「玩具」和「筆」之類的語義類別,以基於用戶命令拾取物體。
  • 復旦大學黃萱菁:自然語言處理中的表示學習
    復旦大學黃萱菁帶來報告《自然語言處理中的表示學習》。黃萱菁,復旦大學計算機科學技術學院教授、博士生導師。1998年於復旦大學獲計算機理學博士學位,研究領域為人工智慧、自然語言處理、信息檢索和社會媒體分析。兼任中國中文信息學會常務理事,社會媒體專委會副主任,中國計算機學會中文信息技術專委會副主任。
  • 對話UT Austin大學教授:未來5年自然語言處理最大的挑戰在哪裡?
    香儂科技: 近年來,深度學習模型的可解釋性受到了很多關注,領域中有很多方法被提出以解釋深度神經網絡的行為(解釋性熱圖 explanatory heat-map,自然語言等)。