<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 如何配置神經機器翻譯的編碼器 - 解碼器模型 > 原文: [https://machinelearningmastery.com/configure-encoder-decoder-model-neural-machine-translation/](https://machinelearningmastery.com/configure-encoder-decoder-model-neural-machine-translation/) 用于循環神經網絡的編碼器 - 解碼器架構在標準機器翻譯基準上實現了最先進的結果,并且正在用于工業翻譯服務的核心。 該模型很簡單,但考慮到訓練它所需的大量數據,調整模型中的無數設計決策以獲得最佳表現問題可能實際上難以處理。值得慶幸的是,研究科學家已經使用 Google 規模的硬件為我們完成這項工作,并提供了一套啟發式方法,用于如何配置編碼器 - 解碼器模型進行神經機器翻譯和一般的序列預測。 在這篇文章中,您將了解如何最好地配置編碼器 - 解碼器循環神經網絡以進行神經機器翻譯和其他自然語言處理任務的詳細信息。 閱讀這篇文章后,你會知道: * Google 研究調查了編碼器 - 解碼器模型中的每個模型設計決策,以隔離它們的影響。 * 設計決策的結果和建議,如字嵌入,編碼器和解碼器深度以及注意機制。 * 一組基本模型設計決策,可用作您自己的序列到序列項目的起點。 讓我們開始吧。 ![How to Configure an Encoder-Decoder Model for Neural Machine Translation](img/f51461220fc281d9dea38cd12d3be911.jpg) 如何配置神經機器翻譯的編碼器 - 解碼器模型 照片由 [Sporting Park](https://www.flickr.com/photos/sporting_su/34385197705/) ,保留一些權利。 ## 神經機器翻譯的編碼器 - 解碼器模型 用于循環神經網絡的編碼器 - 解碼器架構正在取代基于經典短語的統計機器翻譯系統,以獲得最先進的結果。 作為證據,他們的 2016 年論文“[谷歌的神經機器翻譯系統:縮小人機翻譯之間的差距](https://arxiv.org/abs/1609.08144)”,谷歌現在將這種方法用于他們的谷歌翻譯服務的核心。 這種架構的一個問題是模型很大,反過來需要非常大的數據集來訓練。這具有模型訓練的效果,需要數天或數周并且需要通常非常昂貴的計算資源。因此,關于不同設計選擇對模型的影響及其對模型技能的影響的工作很少。 [Denny Britz](http://blog.dennybritz.com/) 等人明確解決了這個問題。在他們的 2017 年論文“[大規模探索神經機器翻譯架構](https://arxiv.org/abs/1703.03906)。”在本文中,他們設計了標準英語 - 德語翻譯任務的基線模型,并列舉了一套不同的模型設計選擇和描述它們對模型技能的影響。他們聲稱完整的實驗耗時超過 250,000 GPU 計算時間,這至少可以說令人印象深刻。 > 我們報告了數百次實驗運行的經驗結果和方差數,相當于標準 WMT 英語到德語翻譯任務的超過 250,000 GPU 小時數。我們的實驗為構建和擴展 NMT 架構提供了新穎的見解和實用建議。 在這篇文章中,我們將看一下本文的一些發現,我們可以用來調整我們自己的神經機器翻譯模型,以及一般的序列到序列模型。 有關編碼器 - 解碼器架構和注意機制的更多背景信息,請參閱帖子: * [編碼器 - 解碼器長短期存儲器網絡](https://machinelearningmastery.com/encoder-decoder-long-short-term-memory-networks/) * [長期短期記憶循環神經網絡](https://machinelearningmastery.com/attention-long-short-term-memory-recurrent-neural-networks/)的注意事項 ## 基線模型 我們可以通過描述用作所有實驗起點的基線模型來開始。 選擇基線模型配置,使得模型在翻譯任務上表現得相當好。 * 嵌入:512 維 * RNN Cell:門控循環單元或 GRU * 編碼器:雙向 * 編碼器深度:2 層(每個方向 1 層) * 解碼器深度:2 層 * 注意:巴達瑙式 * 優化者:亞當 * dropout:投入 20% 每個實驗都從基線模型開始,并且不同的一個元素試圖隔離設計決策對模型技能的影響,在這種情況下,BLEU 分數。 ![Encoder-Decoder Architecture for Neural Machine Translation](img/38abff20be7b017cc50576763f7328b3.jpg) 用于神經機器翻譯的編碼器 - 解碼器架構 取自“神經機器翻譯架構的大規模探索”。 ## 嵌入尺寸 [字嵌入](https://machinelearningmastery.com/what-are-word-embeddings/)用于表示輸入到編碼器的字。 這是一種分布式表示,其中每個單詞被映射到固定大小的連續值向量。這種方法的好處是具有相似含義的不同單詞將具有類似的表示。 通常在將模型擬合到訓練數據上時學習該分布式表示。嵌入大小定義用于表示單詞的向量的長度。人們普遍認為,較大的維度將導致更具表現力的表現形式,從而產生更好的技能。 有趣的是,結果表明,測試的最大尺寸確實達到了最佳效果,但增加尺寸的好處總體上是微不足道的。 > [結果顯示] 2048 維嵌入產生了總體最佳結果,它們只是略微提高了。即使是小型的 128 維嵌入也表現出色,而收斂速度幾乎快了兩倍。 **建議**:從小型嵌入開始,例如 128,可能會稍后增加尺寸,以提高技能。 ## RNN 細胞類型 通常使用三種類型的循環神經網絡細胞: * 簡單的 RNN。 * 長期短期記憶或 LSTM。 * 門控循環單元或 GRU。 LSTM 的開發是為了解決簡單 RNN 的消失梯度問題,這限制了深 RNN 的訓練。 GRU 的開發旨在簡化 LSTM。 結果顯示 GRU 和 LSTM 均明顯優于 Simple RNN,但 LSTM 總體上更好。 > 在我們的實驗中,LSTM 細胞始終優于 GRU 細胞 **建議**:在您的模型中使用 LSTM RNN 單位。 ## 編碼器 - 解碼器深度 通常,深層網絡被認為比淺層網絡具有更好的表現。 關鍵是要在網絡深度,模型技能和訓練時間之間找到平衡點。這是因為如果對技能的好處很小,我們通常沒有無限的資源來訓練非常深的網絡。 作者探討了編碼器和解碼器模型的深度以及對模型技能的影響。 當涉及編碼器時,發現深度對技能沒有顯著影響,更令人驚訝的是,1 層單向模型僅比 4 層單向配置略差。雙層雙向編碼器的表現略優于其他測試配置。 > 我們沒有發現明確的證據表明超過兩層的編碼器深度是必要的。 **建議**:使用 1 層雙向編碼器并擴展到 2 個雙向層,以提高技能。 解碼器出現了類似的故事。具有 1,2 和 4 層的解碼器之間的技能在 4 層解碼器略微更好的情況下有所不同。 8 層解碼器在測試條件下沒有收斂。 > 在解碼器方面,較深的模型以較小的幅度優于較淺的模型。 **建議**:使用 1 層解碼器作為起點,并使用 4 層解碼器以獲得更好的結果。 ## 編碼器輸入方向 源文本序列的順序可以通過多種方式提供給編碼器: * 前進或正常。 * 逆轉。 * 前進和后退都在同一時間。 作者探討了輸入序列順序對模型技能的影響,比較了各種單向和雙向配置。 通常,他們證實了先前的發現,即反向序列優于正向序列,并且雙向略好于反向序列。 > ...雙向編碼器通常優于單向編碼器,但不是很大。具有反向源的編碼器始終優于其未反轉的對應物。 **建議**:使用反向順序輸入序列或移動到雙向以獲得模型技能的小升力。 ## 注意機制 樸素的編碼器 - 解碼器模型的問題在于編碼器將輸入映射到固定長度的內部表示,解碼器必須從該表示產生整個輸出序列。 注意是對模型的改進,其允許解碼器在輸出序列中輸出每個字時“注意”輸入序列中的不同字。 作者研究了簡單注意機制的一些變化。結果表明,注意力會比沒有注意力的情況下產生明顯更好的表現。 > 雖然我們確實期望基于注意力的模型明顯優于沒有注意機制的模型,但我們對[無注意]模型的表現有多么驚訝。 Bahdanau 等人描述的簡單加權平均風格注意。在他們的 2015 年論文中,“[神經機器翻譯通過聯合學習對齊和翻譯](https://arxiv.org/abs/1409.0473)”被發現表現最佳。 **推薦**:使用注意力并更喜歡 Bahdanau 式加權平均風格的關注。 ## 推理 在神經機器翻譯系統中通常使用波束搜索來對模型輸出的序列中的單詞的概率進行采樣。 光束寬度越寬,搜索越詳盡,并且據信,結果越好。 結果表明,3-5 的適度波束寬度表現最佳,通過使用長度懲罰可以非常輕微地改善。作者通常建議在每個特定問題上調整波束寬度。 > 我們發現,良好調諧的光束搜索對于獲得良好的結果至關重要,并且它可以導致多個 BLEU 點的一致增益。 **推薦**:從貪婪搜索開始(波束= 1)并根據您的問題進行調整。 ## 最終模型 作者將他們的研究結果匯總到一個“最佳模型”中,并將該模型的結果與其他表現良好的模型和最先進的結果進行比較。 該模型的具體配置總結在下表中,摘自論文。在為 NLP 應用程序開發自己的編碼器 - 解碼器模型時,這些參數可以作為一個好的或最好的起點。 ![Summary of Model Configuration for the Final NMT Model](img/c508993d3836a302efe11a3c00a0861d.jpg) 最終 NMT 模型的模型配置總結 摘自“神經機器翻譯架構的大規模探索”。 該系統的結果顯示令人印象深刻,并且通過更簡單的模型獲得了接近最新技術的技能,這不是本文的目標。 > ...我們確實表明,通過仔細的超參數調整和良好的初始化,可以在標準 WMT 基準測試中實現最先進的表現 重要的是,作者將所有代碼作為一個名為 [tf-seq2seq](https://github.com/google/seq2seq) 的開源項目提供。由于其中兩位作者是 Google Brain 駐留計劃的成員,他們的工作在 Google Research 博客上公布,標題為“[介紹 tf-seq2seq:TensorFlow 中的開源序列到序列框架](https://research.googleblog.com/2017/04/introducing-tf-seq2seq-open-source.html)” ,2017 年。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 * [神經機器翻譯架構的大規模探索](https://arxiv.org/abs/1703.03906),2017。 * [Denny Britz 主頁](http://blog.dennybritz.com/) * [WildML 博客](http://www.wildml.com/) * [介紹 tf-seq2seq:TensorFlow 中的開源序列到序列框架](https://research.googleblog.com/2017/04/introducing-tf-seq2seq-open-source.html),2017。 * [tf-seq2seq:Tensorflow](https://github.com/google/seq2seq) 的通用編碼器 - 解碼器框架 * [tf-seq2seq 項目文件](https://google.github.io/seq2seq/) * [tf-seq2seq 教程:神經機器翻譯背景](https://google.github.io/seq2seq/nmt/) * [神經機器翻譯通過聯合學習調整和翻譯](https://arxiv.org/abs/1409.0473),2015。 ## 摘要 在這篇文章中,您了解了如何最好地配置編碼器 - 解碼器循環神經網絡,用于神經機器翻譯和其他自然語言處理任務。 具體來說,你學到了: * Google 研究調查了編碼器 - 解碼器模型中的每個模型設計決策,以隔離它們的影響。 * 設計決策的結果和建議,如字嵌入,編碼器和解碼器深度以及注意機制。 * 一組基本模型設計決策,可用作您自己序列的起點,以對項目進行排序。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看