Caffe2新增RNN支持,Facebook全面轉向神經機器翻譯

2020-12-14 機器之心Pro

本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。

近日,Facebook 共享了 Caffe2 在支持循環神經網絡(RNN)方面的最新成果。在 Caffe2 RNN 中,最突出的亮點是幾乎零開銷的 RNN 引擎,它不僅可執行任意 RNN 單元且難以置信地靈活,還可以進行束搜索;Caffe2 RNN 還允許每塊 GPU 使用大批量數據進行訓練,並實現了所謂的靜態 RNN。通過 Caffe2 RNN,Facebook 的神經機器翻譯的效率提升高達 2.5x,Facebook 全部的機器翻譯模型從基於短語的系統轉換為所有語言的神經模型。這意味著 Facebook 可在產品中部署神經機器翻譯了。

我們很高興共享 Caffe2 在支持循環神經網絡(RNN)方面的最新成果。今年 4 月推出 Caffe2 時,它並不支持 RNN;為此,在過去的幾個月,我們開發出了當前最優的 RNN 構件以支持 RNN 用例(比如機器翻譯、語音識別)。

通過 Caffe2,我們顯著提升了 Facebook 機器翻譯系統的效率和質量,效率提升達 2.5x,使得 Facebook 可在產品中部署神經機器翻譯。因此,Facebook 全部的機器翻譯模型從基於短語的系統轉換為所有語言的神經模型。此外,還有若干個產品團隊,包括語音識別和廣告排名團隊在內,已經開始使用 Caffe2 訓練 RNN 模型。

我們邀請了機器學習工程師和研究者體驗 Caffe2 對 RNN 的支持,下面是更多關於 RNN 支持的實現和開源細節:

Caffe2 RNN 的獨特特徵

Caffe2 提供了一個通用的 RNN 庫,其中 RNN 引擎是用於執行任意 RNN 單元(cell)的幾乎零開銷的虛擬框;在底層,一個單元就是一個袖珍版的 Caffe2,具備 Caffe2 所有的主要性能。同樣還有一組豐富的 API,允許人們使用現有的 RNN 單元,並可通過 Python 部署新單元。MultiRNNCell 允許將現有單元輕鬆組合成更複雜的單元。例如,你可以整合 LSTMCell 的若干個層,然後將 AttentionCell 放到頂部。

RNN 引擎難以置信地靈活。它允許你選擇哪些輸出有梯度,並需要通過時間傳播;允許你定義單元彼此連接的方式,以及如何與外在世界相連接。每一個輸入接收到了通過時間傳播回來的正確梯度。

除了零開銷的引擎之外,Caffe2 RNN 的另一個核心優勢是內存,它允許我們每塊 GPU 都使用大批量數據進行訓練。RNN 引擎支持回收跨時間步的中間結果,並使你有權力決定要回收什麼。關於計算的交易內存的更多分析細節請參閱 https://arxiv.org/abs/1606.03401。

在上圖中,後向傳遞的中間結果可以跨時間步重複使用。前向結果如果需要重複使用,則需要在後向傳遞中重新計算。Caffe2 允許你指定要丟棄的前向 blob 對象以節省計算資源。

靜態 RNN

Caffe2 也實現了所謂的靜態 RNN。它可以在序列長度已知的情況下通過時間反向傳播來使用。另外,循環網絡也成為了圖形的一部分,這可以讓全局神經網絡執行器 DAGNet 找到最佳的 RNN 並行執行方式。靜態 RNN 引擎支持所有現有的 RNNCell,幾乎無需更改代碼即可插入使用。在多層 LSTM 模型中,我們可以看到靜態 RNN 的速度比動態 RNN 高出 25%。

用於束搜索的 RNN 引擎

開發團隊遵循在機器翻譯中常見的在解碼時使用束搜索(beam search)來提高模型輸出預測表現的方法。我們使用 Caffe2 中 RNN 抽象的泛化性能來直接實現束搜索——使用單一前向網絡計算(single forward network computation),這樣可以提供快速而有效率的推理。無論底層模型的架構如何(RNN、CNN……),束搜索都可以作為循環網絡解碼器使用。束搜索推斷功能已在 Caffe2 庫中提供。

主頁: https://caffe2.ai/GitHub: https://github.com/caffe2/caffe2Facebook: https://facebook.com/Caffe2AI

為了提高翻譯質量,Facebook 近日決定將所有產品中基於短語的機器翻譯模型轉換成神經網絡翻譯系統。該公司稱,目前所有業務中,每天會收到 2000 種翻譯方向(translation direction),約 45 億個翻譯請求。新模型將提供更為準確和流暢的翻譯,改善 Facebook 產品的用戶體驗。

帶有注意力機制的序列到序列 LSTM:結合上下文

我們之前的基於短語的統計技術很有用,但也有其局限性。基於短語的系統最主要的缺點是它們將句子拆分成獨立的單詞或詞組,系統在輸出翻譯結果時一次只考慮幾個單詞。這使得詞序差別顯著的語言間的翻譯非常困難。為改進該系統、構建我們的神經網絡系統,我們開始使用一種循環神經網絡,叫作帶有注意力機制的序列到序列 LSTM(長短期記憶)。該網絡可以考慮到源語言句子的上下文和已經生成的所有內容,以創建更準確、流暢的譯文。該網絡允許長距調序,正如在英語和土耳其語翻譯中遇到的那樣。我們來看一下基於短語的土耳其語-英語翻譯系統輸出的譯文:

再比較一下基於新型神經網絡的土耳其語-英語翻譯系統輸出的譯文:

我們看到,新系統在所有語言對上的 BLEU 值與基於短語的系統相比平均增長了 11 個百分點。

解決未知單詞

在許多案例中,原句子中的單詞並沒有直接對應於目標詞彙表中的翻譯。這種情況下,神經系統將為未知單詞生成佔位符。所以我們採用注意力機制在源單詞和目標單詞中產生軟對齊,從而將單詞彙傳遞到目標句子中。然後,我們從使用訓練數據構建的雙語詞典中查找該單詞的翻譯,並替代目標句子中的未知詞。這個方法要比使用傳統詞典的方法更加魯棒,特別是對於有噪聲的輸入。例如,在英語到西班牙語的翻譯中, 我們能夠將"tmrw(tomorrow)"翻譯為「maana」。雖然添加一個詞典在 BLEU 分值上只有少量的提升,但是它令人們在 Facebook 翻譯上有更高的評分。

詞彙量簡化

典型的神經機器翻譯模型會計算所有單詞在目標詞彙表中的概率分布。該分布包含的單詞量越大,計算所用的時間就越多。我們使用一種詞彙量簡化(vocabulary reduction)的建模技術在訓練和推理時間上修正該問題。通過詞彙量簡化,我們將目標詞彙中最常出現的單詞與給定句子單個詞彙的一組可能翻譯相結合,以減少目標詞彙的大小。過濾目標詞彙會減少輸出映射層的大小,這有助於使計算更快,而且不會使質量降低太多。

模型調參

神經網絡基本上總是具有可調整的參數以控制模型的學習速率等模型性質。選擇這些超參數的最優集非常有益於性能的提升。然而,調參對於大規模機器翻譯提出了重大的挑戰,因為具有獨特超參數的唯一模型才能表徵一個翻譯方向。因為每個模型的最優值可能不同,因此我們必須獨立地對生產中的每個系統進行超參數調整。我們在數月內進行了數千次端對端翻譯實驗,並利用 FBLearner Flow 平臺微調超參數(如學習速率,注意力類型和集成大小等)。這對一些系統有重大影響。比如說我們僅基於調優模型超參數就可以令英語到西班牙語的 BLEU 分值相對提高了 3.7%。

使用 Caffe2 調整神經機器翻譯的規模

向神經系統過渡的一個挑戰是使模型運行的速度和效率適用於 Facebook 的規模。我們在深度學習框架 Caffe2 中實現了該翻譯系統。Caffe2 追根溯源和靈活的本質使得我們可以在我們的 GPU 和 CPU 平臺上進行訓練和推斷時,能夠調整翻譯模型的性能。

對於訓練,我們實現了記憶優化,如 blob 循環(blob recycling)和 blob 再計算(blob recomputation),幫助我們訓練更大規模的數據,更快地完成訓練。關於推斷,我們使用專門的向量數學庫和加權量化來提高計算效率。現有模型的早期基準顯示能夠支持 2000 多個翻譯方向的計算資源已經相當高了。但是,Caffe2 的靈活性本質和已經實現的優化使我們在效率上實現了 2.5x 的提升,這使得我們可以將神經機器翻譯應用到產品中。

我們在解碼時間使用束搜索來改善我們對模型輸出的最高似然句子的評估,這是機器翻譯中的常見做法。我們利用 RNN 抽象在 Caffe2 中的泛化性能來實現束搜索,將其作為單一前向網絡計算,以獲得快速高效的推斷。

在整個過程中,我們開發了 RNN 構件,如 LSTM、乘法積分 LSTM(multiplicative integration LSTM)、注意力機制。我們很高興能夠將該技術作為 Caffe2 的一部分來分享,以及和開源社區共享我們的研究成果。

正在進行的工作

實現從基於短語的翻譯系統向神經機器翻譯的轉變是我們向每個用戶提供在 Facebook 上使用常用語言的經歷的裡程碑。我們將繼續擴展神經機器翻譯技術的邊界,向每一個使用 Facebook 的用戶提供更高質的翻譯。

相關焦點

  • F8 2017 | 技術負責人為你解析 Facebook 神經機器翻譯
    但在最近的幾年,Facebook 正轉向 neural net machine translation 架構,即神經網絡機器翻譯。據雷鋒網(公眾號:雷鋒網)了解,去年 6 月,Facebook 部署了第一個基於神經機器翻譯的產品——德譯英;拉開了從「基於短語」切換到神經機器翻譯的大幕。
  • F82017|技術負責人為你解析Facebook神經機器翻譯
    但在最近的幾年,Facebook 正轉向 neural net machine translation 架構,即神經網絡機器翻譯。據雷鋒網了解,去年 6 月,Facebook 部署了第一個基於神經機器翻譯的產品——德譯英;拉開了從「基於短語」切換到神經機器翻譯的大幕。
  • 谷歌Google Translate新增13種語言支持 拍照即可翻譯
    ­  日前,谷歌宣布Google Translate擴展了支持的語言數量,增加了13種新語言(阿拉伯語,泰語,越南語,印地語,孟加拉語,古吉拉特語,卡納達語,馬拉雅拉姆語,馬拉地語,尼泊爾語,旁遮普語,泰米爾語,泰盧固語),並且該功能也即將同時支持Android 系統和iOS 系統。
  • Facebook宣布全面轉為神經網絡人工智慧翻譯
    為了繼續提高翻譯質量,Facebook團隊最近宣布從基於短語的機器翻譯模型切換到基於神經網絡的翻譯模型,來支持所有的後端翻譯系統。每個翻譯系統每天翻譯超過2000個翻譯方向和45億個翻譯。 這些新模型能夠提供更準確和更流暢的翻譯體驗,改善了人們在使用Facebook時,閱讀由非常用語言撰寫的內容時的閱讀體驗。雷鋒網 AI 科技評論根據 Facebook 文章對相關情況編譯介紹如下。
  • 什麼是神經機器翻譯(NMT)?
    機器翻譯翻譯行業不斷發展以滿足客戶的需求,神經機器翻譯(NMT)是這一進程的最新一步。由於能夠一次翻譯整個句子,NMT的輸出可以類似於人工翻譯。隨著越來越多的企業走向全球化,NMT可能會對翻譯行業產生巨大影響。什麼是神經機器翻譯?NMT使用基於神經網絡的技術來實現更多上下文精確的翻譯,而不是一次翻譯一個單詞的破碎句子。使用大型人工神經網絡計算單詞序列的概率,NMT將完整的句子放入一個集成模型中。
  • 神經機器翻譯工具 將首先用於中翻英
    據新華社消息 世界智慧財產權組織10月31日在日內瓦表示,中國國際專利申請量預計兩年內將居全球次席,因此該組織推出的最新基於人工智慧的神經機器翻譯工具將首先用在中文專利文檔轉化為英文的服務上。 神經機器翻譯是一個新興技術,建立在龐大的、能夠「學習」之前翻譯過的句子的神經網絡模型上。與之前「基於短語」的方法相比,神經機器翻譯可產生更為自然的語序,並在差異性較大的兩種語言的翻譯中,如日文-英文或中文-英文中有顯著進步。
  • Facebook開源多款AI工具,支持遊戲、翻譯
    、Caffe 等深度學習框架之外,此次開源的還包括 DensePose(可用於人體姿態估計)、Translate(可翻譯 48 種語言)、ELF(可通過遊戲來教機器推理)等諸多 Facebook 內部使用的庫和模型。
  • 神經機器翻譯的直觀解釋 | 留言送書
    來源 | Towards Data Science作者 | Renu Khandelwal 編譯 | VK什麼是神經機器翻譯?神經機器翻譯是一種將一種語言翻譯成另一種語言的技術。一個例子是把英語轉換成印地語。讓我們想想,如果你在一個印度村莊,那裡的大多數人都不懂英語。你打算毫不費力地與村民溝通。在這種情況下,你可以使用神經機器翻譯。
  • Google Translate新增13種語言支持 拍照即可翻譯
    【環球網科技綜合報導】10月16日消息,日前,谷歌宣布Google Translate擴展了支持的語言數量,增加了13種新語言(阿拉伯語,泰語,越南語,印地語,孟加拉語,古吉拉特語,卡納達語,馬拉雅拉姆語,馬拉地語,尼泊爾語,旁遮普語,泰米爾語,泰盧固語),並且該功能也即將同時支持Android 系統和iOS 系統。
  • 谷歌翻譯預言世界末日 神經機器翻譯或是故障原因
    當被要求將「dog dog dog dog dog dog dog dog dog」這個短語從夏威夷語翻譯成英語時,支持谷歌翻譯的人工智慧開始產生關於世界末日的荒謬警告。這個無意義的句子在翻譯時,會提及對世界末日和耶穌基督第二次降臨。一旦發現故障,谷歌翻譯的粉絲很快就會在社交媒體上大量使用這個短語,模仿人工智慧引發的怪異結果。
  • 史丹福大學 NLP 組開放神經機器翻譯代碼庫
    近日,史丹福大學自然語言處理組(Stanford NLP)發布了一篇文章,總結了該研究組在神經機器翻譯(NMT)上的研究信息。
  • 結合堆疊與深度轉換的新型神經翻譯架構:愛丁堡大學提出BiDeep RNN
    在神經機器翻譯問題中,不同的堆疊架構已經多次在不同研究中展現出了良好的表現,而深度轉換架構(Deep transition architecture)則成功地用於語言建模等用途中。然而,雖然人們已經提出了一些不同結構的變體,並不斷增加模型的深度,但是至今仍然沒有與之相關的全面對比研究。在這篇論文的工作中,我們描述並評價了幾個現存的在神經機器翻譯中引入深度的方法。此外,我們還探索了包括深度轉換循環神經網絡(RNN)在內的幾種新穎的結構變體,並且我們還改變了在深度解碼器中使用 attention 的方式。
  • 開源| 哈佛大學NLP組開源神經機器翻譯工具包OpenNMT:已達到生產...
    選自OpenNMT機器之心編譯參與:吳攀神經機器翻譯是近段時間以來推動機器翻譯發展的主要推動力。今天,哈佛大學自然語言處理研究組(Harvard NLP)宣布開源了其研發的神經機器翻譯系統 OpenNMT,該系統使用了 Torch 數學工具包。該研究組在官網上表示該系統已經達到生產可用的水平(industrial-strength)。
  • 號稱要砸翻譯飯碗,神經機器翻譯哪家強?
    Google新發布了神經機器翻譯(GNMT:Google Neural Machine Translation)系統,並稱該系統使用了當前最先進的訓練技術,能夠實現到當下機器翻譯質量上最大的提升。有從事翻譯職業的網友甚至這樣形容:作為翻譯看到這個新聞的時候,我理解了18世紀紡織工人看到蒸汽機時的憂慮與恐懼。
  • 重磅| Facebook提出全新CNN機器翻譯:準確度超越谷歌而且還快九倍...
    選自code.facebook作者:Jonas Gehring、Michael Auli、David Grangier、Denis Yarats、Yann N. Dauphin機器之心編譯參與:吳攀、微胖、蔣思源去年穀歌在機器翻譯上取得了連續不斷的突破,谷歌的方法用到了文本處理慣用的循環神經網絡。
  • 【重磅】谷歌發布 Zero-Shot 神經機器翻譯系統:AI 巴別塔有望成真
    過去10年中,谷歌翻譯已從僅支持幾種語言發展到了支持 103 種,每天翻譯超過了 1400 億字。為了實現這一點,我們需要構建和維護許多不同的系統,以便在任何兩種語言之間進行轉換,由此產生了巨大的計算成本。
  • 教程 | 入門Python神經機器翻譯,這是一篇非常精簡的實戰指南
    (MT)是一項極具挑戰性的任務,其研究如何使用計算機將文本或是語音從一種語言翻譯成另一種語言。本文藉助 Keras 從最基本的文本加載與數據預處理開始,並討論了在循環神經網絡與編碼器解碼器框架下如何才能構建一個可接受的神經翻譯系統,本教程所有的代碼已在 GitHub 開源。傳統意義上來說,機器翻譯一般使用高度複雜的語言知識開發出的大型統計模型,但是近來很多研究使用深度模型直接對翻譯過程建模,並在只提供原語數據與譯文數據的情況下自動學習必要的語言知識。
  • 從分詞、詞性到機器翻譯、對話系統
    本文將基於竹間智能的一些經驗和探索,從分詞、詞性等基礎模塊,到機器翻譯、知識問答等領域,列舉並分析一些深度學習在 NLP 領域的具體運用,希望對大家研究深度學習和 NLP 有所幫助。目前關於自然語言生成有一些比較有趣的研究,比如 https://github.com/karpathy/char-rnn 是一個基於 RNN 的文本生成器,可以自動生成莎士比亞的劇本或者 shell 代碼;https://link.zhihu.com/?
  • 百度翻譯Web+App全面升級 支持18種語言翻譯
    【天極網IT新聞頻道】7月1日,百度翻譯全面升級,手機客戶端 V2.0版及新版WEB頁面及同步更新閃亮登場。據了解,百度翻譯本次全面升級各項功能,不但支持十餘種語言方向的翻譯服務,還收錄海量權威柯林斯詞典釋義和相關例句,帶來了了優質、豐富的翻譯結果和新潮、炫酷的翻譯體驗。
  • 循環神經網絡(RNN)入門帖:向量到序列,序列到序列,雙向RNN,馬爾科夫化
    作者:David 9地址:http://nooverfit.com/rnn似乎更擅長信息的保存和更新,而cnn似乎更擅長精確的特徵提取;rnn輸入輸出尺寸靈活,而cnn尺寸相對刻板。聊到循環神經網絡RNN,我們第一反應可能是:時間序列 (time sequence)。