今年夏天,雷鋒網(公眾號:雷鋒網)將在深圳舉辦一場盛況空前的「全球人工智慧與機器人創新大會」(簡稱GAIR)。大會現場,雷鋒網將發布「人工智慧&機器人Top25創新企業榜」榜單。目前,我們正在四處拜訪人工智慧、機器人領域的相關公司,從而篩選最終入選榜單的公司名單。如果你的公司也想加入我們的榜單之中,請聯繫:2020@leiphone.com。
圖片來源:spaCy
編者註:spaCy是一個免費開原始碼庫,Matthew Honnibal是spaCy公司創始人及CTO。他在本科時學習語言學,從未想到未來自己會成為程式設計師。Honnibal獲得雪梨大學計算機科學PHD學位並進行研究員工作後,在2014年離開學術界開始編寫spaCy。本文中,Hobbibal深度解讀了谷歌的自然語言處理模型。
上周,谷歌開源了其基於人工智慧系統Tensorflow的自然語言解析模型分析庫SyntaxNet。在過去的兩年時間裡,谷歌研究人員利用這個分析庫發布了一系列神經網絡分析模型。自從SyntaxNet發布以來,筆者就一直關注它,當然也一直也期待這個軟體能夠開源。不過,本文嘗試圍繞本次開源的相關背景做一些探討,比如本次開源有什麼新料,開源又有何重要意義?
在自然語言文本處理庫中(比如spaCy),SyntaxNet提供了非常重要的模型。如果你把自然語言處理的概念」縮小」一點,就會意識到,這種你正在關注的技術可以拓展計算機的應用範圍。即便是現在,你依然無法編寫軟體去控制一輛汽車,也無法用你的語氣來回復電子郵件,更無法用軟體來分析客戶反饋,或為規避重大商業風險去監測全球新聞。誠然,自然語言處理無法操控無人駕駛汽車,但等下先,語言是人類最與眾不同的能力,人類已經不可避免地掌握了這種技能,但是自然語言處理技術也很優秀,我們甚至難以預測它的潛力。谷歌搜索就是一種自然語言處理應用,所以你會發現這項技術其實已經在改變世界。不過,在筆者看來,自然語言處理還有很大發展空間。
在更大的價值鏈裡,SyntaxNet其實算是一種較低級別的技術,它就像是一個改良的鑽頭,鑽頭本身無法給你石油,石油本身無法給你提供能量和塑料,能量和塑料本身也無法自動形成某種產品。但如果整個價值鏈的瓶頸是石油開採效率,那麼大幅提高鑽頭技術(雖然是一種底層技術)也是非常重要的。
在筆者看來,在自然語言處理中語法解析就是一個瓶頸技術,如果它有四、五年時間做優化改進,將會對自然語言處理產生巨大影響。現在你可能會說,我之所以覺得這是個問題,是因為這項技術正從學術研究轉變為商業化應用。但我所能說的就是,這其實是一種逆轉因果關係:正是因為我理解問題的重要性,所以我投入其中,而不是相反。
好了,我知道即便某個技術遇到瓶頸,但也無法否定其重要性。SyntaxNet如何向前邁一大步呢?如果你已經在Stanford CoreNLP中使用了神經網絡模型,那麼可以肯定的是,你正在使用的其實是一種算法,在設計層面上這種模型和算法其實是完全一致的,但在細節上卻不一樣。使用spaCy語法解析模型也是如此。從概念上講,SyntaxNet的貢獻可能會讓人覺得沒那麼大,畢竟它主要用於試驗,優化和改進。然而,如果谷歌不做這項工作,可能就沒有人會去做。可以說,SyntaxNet為神經網絡模型打開了一扇窗,人們從中看到了一個充滿各種想法創意的美麗風景,研究人員也正忙於探索這一切。當然啦,行業內也會有一種偏見,認為SyntaxNet會讓研究人員看上去(感覺上)更聰明。可能,我們最終會有一個非常準確的語法分析模型,但是這個模型無法實現正確的假設(當然在系統設計的角度準確性是十分重要的),繼而導致未來神經網絡模型的發展越來越慢。在CoreNLP模型說明推出後的六個月,首個SyntaxNet論文才發布出來,他們使用了更大的網絡,更好的激活函數,以及不同的優化方法,不僅如此,SyntaxNet還應用了更具原則性的定向搜索方法,進而取代了目前更多工作。使用 LSTM模型可以實現同樣準確的並行工作,而不是按照SyntaxNet論文裡描述的那樣,同時發布前饋網絡。
SyntaxNet用來做什麼?SyntaxNet語法解析器可以描述一個句子的語法結構,幫助其他應用程式理解這個句子。自然語言會產生很多意想不到的歧義,人們通常可以利用自己的知識過濾掉那些產生歧義的。舉個大家比較喜歡的例子:
他們吃了加鳳尾魚的披薩(They ate the pizza with anchovies)
圖片來源:spaCy
正確的語法分析是將「with」和「pizza」聯繫在一起,也就是他們吃了加鳳尾魚的披薩;
圖片來源:spaCy
而不正確的語法分析是將「with」和「eat」聯繫在一起,他們和鳳尾魚一起吃了披薩。
圖片來源:spaCy
如果你想要更形象地感受這個技術,不妨可以看下我們的displaCy demo,或是看一個簡明的,基於規則方法的例子,去了解語法樹是如何計算出來的。「單詞與單詞」關係熟也可以用來識別一些簡單的語法語義,這樣可以便於擴展形成「單詞包」技術(比如word2vec,它是一個將單詞轉換成向量形式的工具。可以把對文本內容的處理簡化為向量空間中的向量運算,計算出向量空間上的相似度,來表示文本語義上的相似度。)舉個例子,我們解析去年Reddit論壇上的每一個評論,相比於嚴格限制空格分割單詞的方法,使用word2vec顯然更有幫助,因為後者可以分析短語,實體和單詞生成一個很不錯的概念圖。
SyntaxNet是一個訓練和運行句法依賴解析的模型庫。這個模型可以較好地權衡語義分析速度和準確度。可能是為了顯得更時髦些,谷歌給這個模型起了個很酷的名字——Parsey McParseface。希望他們能夠繼續延續這種時髦的命名方式,我覺得未來應該有個更好的方式,讓模型發展時間軸顯得更清楚一些,自然語言處理技術也應如此。
SyntaxNet帶來多大進步?雖然打上了「當今世界上最準確的語義分析」標籤,但Parsey McParseface其實只比最近的相關語義分析研究領先了一點點而已,如今的語義分析模型使用了更加複雜的神經網絡架構,但有更多限制性的參數調整。因此,很多相似的技術也將不再會局限在學術圈。另一方面,如果你關心這種模型是否能夠實實在在做一些事情,那麼現實可能會讓你有些失望了,目前這些技術還無法真正去「做事」。自從去年SyntaxNet論文發布之後,筆者本人一直在斷斷續續的研究神經網絡模型spaCy,但是效果並不太好,我們想要讓spaCy便於安裝,我們想要它在單CPU上快速運行,我們還想要它保持多線程,不過所有這些要求目前都很難實現。
對於語義分析基準,Parsey McParseface在每秒600個單詞的速度下,準確度可以超過94%。同樣地,spaCy每秒識別1.5萬字的精準度為92.4%。這個準確度可能聽上去不是很高,但對於應用程式來說,其實已經算非常好的了。
任何預測系統,通常最重要的考慮因素就是基準預測的差異,而不是絕對進度。一個預測天氣的模型,今天和昨天的準確度可能是一樣的,但是它不會增加任何價值。關於依存關係語法分析,大約80%的依賴關係都很簡單明確,這意味著,一個只正確預測那種依附關係的系統正在注入少量額外信息,這種能力不是只查看每個單詞就能做到的,而是要考慮詞和詞之間的關係。
總而言之,我認為在目前人工智慧的大趨勢下,Parsey McParseface是一個非常好的裡程碑。重要的是,它可以實現多快的速度,以及能實現多麼先進的自然語言處理技術。我覺得以前有很多想法不能實現,但是肯定會有那一刻的到來,一瞬間所有都變得可行了。
下一步是什麼?最讓我興奮的是,通過Parsey McParseface模型設計,自然語言處理技術有了一個非常清晰的方向,這時你可能會說:「好的,如果它有作用就太好了。」2004年,語義分析領域的領軍人物之一 Joakim Nivre表示,這種類型的語法解析器可以一次性讀句子,繼而減少錯誤理解。它適用於任何狀態表達,任何行為集合,任何概率模型架構。舉個例子,如果你解析一個語音識別系統的輸入,你可以讓語法解析器優化語音識別器,在基於句法環境下猜測對方要說的話。如果你使用知識庫,那麼可以擴展狀態表達,使其中包含你的目標語義,讓它學習語法。
聯合模型和半監督學習一直是自然語言理解研究最完美的體現。從來沒有人懷疑它們的優點——但是如果沒有一個具體的方法,這些技術也只是陳詞濫調罷了。很明顯,理解一個句子需要正確地拆分單詞,但這樣做會帶來很多問題,更難以找到一個滿意的解決方案。此外,一個自然語言理解系統應該可以利用現有的大量未標註文本,這同樣需要不同類型的模型支持。我認為,針對上述兩個問題,一個過渡的神經網絡模型能夠給出答案。你可以學習任何架構,你看到的文本越多,你學習的就越多,而且神經網絡模型也不需要添加任何新參數。
顯然,我們想要在Parsey McParseface和spaCy模型之間構建一座橋梁,這樣在spaCy應用程式接口的支持下,你才能使用更加準確的模型。不過,對於任何單獨用例,讓這種技術真正發揮作用總是會出現一些變數。特別是每一個應用程式中總會存在不同類型的文本,如果數據模型能調整到域,準確度才能夠有實質提升,比如一些完整編輯的文本,像財務報告,你必須要讓語義分析模型把「市值」這個詞考慮成決定性指標,才能更好地理解全文;但是如果在理解Twitter上的推文時,你讓語義分析模型將「市值」理解成決定性指標,通常是沒有什麼意義的。
我們的目標就是要提供一系列預先訓練模式,去解決這一問題,讓語義分析模型適應不同的語言和風格。我們也有一些令人非常興奮的想法,儘可能輕鬆地幫助每個用戶訓練屬於自己的自定義模型。我們認為,在自然語言處理中,算法總是衝在最前面,而數據往往滯後。我們希望解決這個問題。
via spaCy
雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。