你好,游客 登錄
背景:
閱讀新聞

六合图库彩图118万众:深度學習在自然語言處理的應用

[日期:2015-11-11] 來源:21CT  作者:Jonathan Mugan [字體: ]

六合图库118万众图库 www.xorsm.icu   Jonathan Mugan寫了兩篇博文來解釋計算機如何理解我們在社交媒體平臺上使用的語言,以及能理解到何種程度。本文是其中的第二篇。

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

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

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

  FrameNet是伯克利大學的一個項目,它試圖用框架對語義歸檔??蚣鼙硎靖髦指拍羆捌湎喙氐慕巧?。正如我在上一篇博文里寫到的,孩子生日聚會框架的不同部分有著不同的角色,比如場地、娛樂活動和糖源。另一個框架是“購買”這個行為,包括賣方、買方和交易商品。計算機能夠通過搜索觸發框架的關鍵詞來“理解”文字。這些框架需要手動創建,它們的觸發詞也需要手動關聯。我們可以用這種方式來表示大量知識,但是很難一五一十地明確寫出來。因為內容實在太多,完完全全寫出來也太費神了。

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

  使用向量表示語義

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

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

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

  另一個例子是:

  國王 - 皇后 = 男人 - 女人

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

  由詞向量構成語義

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

  

 

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

  

 

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

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

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

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

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

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

  

 

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

  剛剛討論的方法是關于如何以讀故事的方式回答問題,但是故事的一些重要情節一目了然,我們不必都寫下來。設想桌上放著一本書。計算機如何才能知道你挪動桌子的同時也挪動了書本?同樣的,計算機怎么知道屋外只是下雨了呢?就如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。

  總結

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

推薦 打印 | 錄入: | 閱讀:
相關新聞      
本文評論   
評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款