<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 編碼器 - 解碼器循環神經網絡中的注意力如何工作 > 原文: [https://machinelearningmastery.com/how-does-attention-work-in-encoder-decoder-recurrent-neural-networks/](https://machinelearningmastery.com/how-does-attention-work-in-encoder-decoder-recurrent-neural-networks/) 注意力是一種機制,旨在提高機器翻譯中編碼器 - 解碼器 RNN 的表現。 在本教程中,您將發現編碼器 - 解碼器模型的注意機制。 完成本教程后,您將了解: * 關于編碼器 - 解碼器模型和機器翻譯的注意機制。 * 如何逐步實施關注機制。 * 注意機制的應用和擴展。 讓我們開始吧。 * **2017 年 12 月更新**:修正了第 4 步的小錯字,謝謝 Cynthia Freeman。 ## 教程概述 本教程分為 4 個部分;他們是: 1. 編碼器 - 解碼器模型 2. 注意模型 3. 工作注意的例子 4. 注意力的擴展 ## 編碼器 - 解碼器模型 兩篇論文介紹了用于循環神經網絡的編碼器 - 解碼器模型。 兩者都開發了技術來解決機器翻譯的序列到序列的性質,其中輸入序列的長度與輸出序列不同。 Ilya Sutskever,et al。在使用 LSTM 的文章“[序列到神經網絡的序列學習](https://arxiv.org/abs/1409.3215)”中這樣做。 Kyunghyun Cho,et al。在“[學習短語表示使用 RNN 編碼器 - 解碼器進行統計機器翻譯](https://arxiv.org/abs/1406.1078)”中這樣做。這項工作和一些同一作者(Bahdanau,Cho 和 Bengio)后來開發了他們的特定模型以開發注意力模型。因此,我們將快速瀏覽本文所述的編碼器 - 解碼器模型。 從高級別來看,該模型由兩個子模型組成:編碼器和解碼器。 * **編碼器**:編碼器負責逐步執行輸入時間步長并將整個序列編碼為稱為上下文向量的固定長度向量。 * **解碼器**:解碼器負責在從上下文向量讀取時逐步執行輸出時間步長。 ![Encoder-Decoder Recurrent Neural Network Model.](img/047c218a5eed4d8b21b095b8e19b7a80.jpg) 編碼器 - 解碼器循環神經網絡模型。 取自“使用 RNN 編碼器 - 解碼器進行統計機器翻譯的學習短語表示” > 我們提出了一種新穎的神經網絡體系結構,它學習將可變長度序列編碼成固定長度的向量表示,并將給定的固定長度向量表示解碼回可變長度序列。 - [使用 RNN 編碼器 - 解碼器進行統計機器翻譯的學習短語表示](https://arxiv.org/abs/1406.1078),2014。 模型的關鍵在于整個模型(包括編碼器和解碼器)是端到端訓練的,而不是單獨訓練元素。 一般地描述該模型,使得不同的特定 RNN 模型可以用作編碼器和解碼器。 作者不是使用流行的長期短期記憶(LSTM)RNN,而是開發和使用他們自己的簡單類型的 RNN,后來稱為門控循環單元(GRU)。 此外,與 Sutskever 等人不同。在模型中,來自前一時間步驟的解碼器的輸出被作為輸入饋送以解碼下一個輸出時間步長。您可以在上圖中看到這一點,其中輸出 y2 使用上下文向量(C),從解碼 y1 傳遞的隱藏狀態以及輸出 y1。 > ... y(t)和 h(i)也都以 y(t-1)和輸入序列的摘要 c 為條件。 - 使用 RNN 編碼器 - 解碼器進行統計機器翻譯的[學習短語表示](https://arxiv.org/abs/1406.1078),2014 ## 注意模型 Dzmitry Bahdanau 等人提出了注意力。在他們的論文“[神經機器翻譯中通過聯合學習來對齊和翻譯](https://arxiv.org/abs/1409.0473)”,這是他們以前在編碼器 - 解碼器模型上工作的自然延伸。 提出注意作為對編碼器 - 解碼器模型的限制的解決方案,該編碼器 - 解碼器模型將輸入序列編碼為一個固定長度向量,從該向量解碼每個輸出時間步長。在解碼長序列時,這個問題被認為是更多的問題。 > 這種編碼器 - 解碼器方法的潛在問題是神經網絡需要能夠將源句子的所有必要信息壓縮成固定長度的向量。這可能使神經網絡難以處理長句,特別是那些比訓練語料庫中的句子長的句子。 - [通過聯合學習對齊和翻譯的神經機器翻譯](https://arxiv.org/abs/1409.0473),2015。 建議將注意力作為對齊和翻譯的方法。 對齊是機器翻譯中的問題,其識別輸入序列的哪些部分與輸出中的每個單詞相關,而翻譯是使用相關信息來選擇適當輸出的過程。 > ...我們引入了編碼器 - 解碼器模型的擴展,它學會了共同對齊和翻譯。每次所提出的模型在翻譯中生成單詞時,它(軟)搜索源語句中的一組位置,其中最相關的信息被集中。然后,模型基于與這些源位置和所有先前生成的目標詞相關聯的上下文向量來預測目標詞。 - [通過聯合學習對齊和翻譯的神經機器翻譯](https://arxiv.org/abs/1409.0473),2015。 注意模型不是將輸入序列編碼成單個固定的上下文向量,而是開發一個特定于每個輸出時間步驟過濾的上下文向量。 ![Example of Attention](img/e825a9af99294073846960f320d8a4e5.jpg) 注意力 取自“通過共同學習協調和翻譯的神經機器翻譯”,2015 年。 與編碼器 - 解碼器紙一樣,該技術應用于機器翻譯問題并使用 GRU 單元而不是 LSTM 存儲器單元。在這種情況下,使用雙向輸入,其中向前和向后提供輸入序列,然后在傳遞到解碼器之前將其連接。 我們將研究一個有效的例子,而不是重新迭代用于計算注意力的等式。 ## 工作注意的例子 在本節中,我們將通過一個小的工作示例來注意具體。具體來說,我們將使用未向量化的術語逐步完成計算。 這將為您提供足夠詳細的理解,您可以將注意力添加到您自己的編碼器 - 解碼器實現中。 這個有效的例子分為以下 6 個部分: 1. 問題 2. 編碼 3. 對準 4. 權重 5. 上下文向量 6. 解碼 ### 1.問題 問題是一個簡單的序列到序列預測問題。 有三個輸入時間步驟: ```py x1, x2, x3 ``` 該模型需要預測一個時間步驟: ```py y1 ``` 在此示例中,我們將忽略編碼器和解碼器中使用的 RNN 的類型,并忽略雙向輸入層的使用。這些元素對于理解解碼器中的注意力計算并不重要。 ### 2.編碼 在編碼器 - 解碼器模型中,輸入將被編碼為單個固定長度向量。這是最后一個時間步的編碼器模型的輸出。 ```py h1 = Encoder(x1, x2, x3) ``` 注意模型需要在每個輸入時間步長訪問編碼器的輸出。本文將這些稱為每個時間步的“_ 注釋 _”。在這種情況下: ```py h1, h2, h3 = Encoder(x1, x2, x3) ``` ### 3.對齊 解碼器一次輸出一個值,在最終輸出當前輸出時間步長的預測(y)之前,該值被傳遞到可能更多的層。 對準模型得分(e)每個編碼輸入(h)與解碼器的當前輸出的匹配程度。 分數的計算需要來自前一輸出時間步驟的解碼器的輸出,例如, S(T-1)。為解碼器的第一個輸出進行評分時,這將為 0。 使用函數 a()執行評分。我們可以為第一個輸出時間步驟評分每個注釋(h),如下所示: ```py e11 = a(0, h1) e12 = a(0, h2) e13 = a(0, h3) ``` 我們對這些分數使用兩個下標,例如 e11,其中第一個“1”表示輸出時間步長,第二個“1”表示輸入時間步長。 我們可以想象,如果我們有一個帶有兩個輸出時間步長的序列到序列問題,那么稍后我們可以按如下方式對第二個時間步的注釋進行評分(假設我們已經計算了 s1): ```py e21 = a(s1, h1) e22 = a(s1, h2) e23 = a(s1, h3) ``` 函數 a()在本文中稱為對齊模型,并實現為前饋神經網絡。 這是傳統的單層網絡,其中每個輸入(s(t-1)和 h1,h2 和 h3)被加權,使用雙曲正切(tanh)傳遞函數并且輸出也被加權。 ### 4.加權 接下來,使用 [softmax 函數](https://en.wikipedia.org/wiki/Softmax_function)對準分數進行歸一化。 分數的歸一化允許它們被視為概率,指示每個編碼的輸入時間步長(注釋)與當前輸出時間步長相關的可能性。 這些標準化分數稱為注釋權重。 例如,我們可以計算 softmax 注釋權重(a)給定計算的對齊分數(e)如下: ```py a11 = exp(e11) / (exp(e11) + exp(e12) + exp(e13)) a12 = exp(e12) / (exp(e11) + exp(e12) + exp(e13)) a13 = exp(e13) / (exp(e11) + exp(e12) + exp(e13)) ``` 如果我們有兩個輸出時間步長,則第二個輸出時間步長的注釋權重將按如下方式計算: ```py a21 = exp(e21) / (exp(e21) + exp(e22) + exp(e23)) a22 = exp(e22) / (exp(e21) + exp(e22) + exp(e23)) a23 = exp(e23) / (exp(e21) + exp(e22) + exp(e23)) ``` ### 5.上下文向量 接下來,將每個注釋(h)乘以注釋權重(a)以產生新的有人值守的上下文向量,從該向量上下文向量可以解碼當前輸出時間步長。 為簡單起見,我們只有一個輸出時間步驟,因此我們可以如下計算單個元素上下文向量(帶括號以便于閱讀): ```py c1 = (a11 * h1) + (a12 * h2) + (a13 * h3) ``` 上下文向量是注釋和標準化對齊分數的加權和。 如果我們有兩個輸出時間步長,則上下文向量將由兩個元素[c1,c2]組成,計算如下: ```py c1 = a11 * h1 + a12 * h2 + a13 * h3 c2 = a21 * h1 + a22 * h2 + a23 * h3 ``` ### 6.解碼 然后根據編碼器 - 解碼器模型執行解碼,盡管在這種情況下使用當前時間步長的有人值環境向量。 解碼器的輸出在本文中稱為隱藏狀態。 ```py s1 = Decoder(c1) ``` 在最終退出模型之前,這可以被饋送到附加層中作為時間步長的預測(y1)。 ## 注意力的擴展 本節介紹 Bahdanau 等人的一些其他應用。注意機制。 ### 硬和軟的注意力 在 2015 年論文“[展示,出席和講述:神經圖像標題生成與視覺注意](https://arxiv.org/abs/1502.03044)”,Kelvin Xu,et al。使用卷積神經網絡作為關于字幕照片問題的圖像數據的特征提取器,將注意力應用于圖像數據。 他們開發了兩種注意機制,一種稱為“_ 軟注意 _”,它類似于上面用加權上下文向量引起的注意,第二種是“_ 硬注意 _”,其中清晰的決策是關于每個單詞的上下文向量中的元素。 他們還建議雙重關注,注意力集中在圖像的特定部分。 ### 刪除以前的隱藏狀態 這種機制的一些應用已經簡化了方法,以便從注釋評分中刪除上一個輸出時間步驟(s(t-1))的隱藏狀態(上面的步驟 3)。 兩個例子是: * [用于文檔分類的分層注意網絡](https://www.microsoft.com/en-us/research/publication/hierarchical-attention-networks-document-classification/),2016。 * [用于關系分類的基于注入的雙向長短期記憶網絡](http://aclweb.org/anthology/P/P16/P16-2034.pdf),2016 這具有不向模型提供先前解碼的輸出的想法的效果,其旨在幫助對準。 這在論文中列出的等式中有所說明,并且不清楚任務是對模型的有意改變還是僅僅是方程式的省略。在任何一篇論文中都沒有討論過放棄這個術語。 ### 研究以前的隱藏狀態 Minh-Thang Luong,et al。在他們的 2015 年論文中,“[基于注意力的神經機器翻譯的有效方法](https://arxiv.org/abs/1508.04025)”明確地重新構建了在注釋評分中使用先前的解碼器隱藏狀態。另請參見[論文的演示文稿](https://vimeo.com/162101582)和[相關的 Matlab 代碼](https://github.com/lmthang/nmt.matlab/tree/master/code/layers)。 他們開發了一個框架來對比不同的注釋評分方法。他們的框架調出并明確排除了注釋評分中的先前隱藏狀態。 相反,他們采用先前的注意上下文向量并將其作為輸入傳遞給解碼器。目的是允許解碼器知道過去的對齊決定。 > ......我們提出了一種輸入饋送方法,其中注意向量 ht 在下一步[...]與輸入連接。具有這種連接的效果是雙重的:(a)我們希望使模型充分了解先前的對齊選擇;(b)我們創建一個跨越水平和垂直的非常深的網絡 - [基于注意力的神經機器翻譯的有效方法](https://arxiv.org/abs/1508.04025),2015。 以下是本文采用的這種方法的圖片。注意虛線表示使用解碼器參與隱藏狀態輸出(ht),在下一個時間步長向解碼器提供輸入。 ![Feeding Hidden State as Input to Decoder](img/d66bf632243c7629cd755622292c47aa.jpg) 將隱藏狀態作為解碼器的輸入 取自“基于注意力的神經機器翻譯的有效方法”,2015 年。 他們還開發了“_ 全局 _”與“_ 本地 _”注意力,其中本地注意力是對學習固定大小窗口以在每個輸出時間強加注意向量的方法的修改步。它被認為是 Xu 等人提出的“_ 硬注意 _”的簡單方法。 > 全球關注的缺點在于它必須關注每個目標詞的源側的所有單詞,這是昂貴的并且可能使得翻譯較長序列(例如段落或文檔)變得不切實際。為了解決這一不足,我們提出了一種局部注意機制,它選擇只關注每個目標詞的一小部分源位置。 - [基于注意力的神經機器翻譯的有效方法](https://arxiv.org/abs/1508.04025),2015。 在具有不同注釋評分函數的全局和局部關注的論文中的分析表明,局部關注在翻譯任務上提供了更好的結果。 ## 進一步閱讀 如果您要深入了解,本節將提供有關該主題的更多資源。 ### 編碼器 - 解碼器文件 * [使用 RNN 編碼器 - 解碼器進行統計機器翻譯的學習短語表示](https://arxiv.org/abs/1406.1078),2014。 * [用神經網絡進行序列學習的序列](https://arxiv.org/abs/1409.3215),2014。 ### 注意論文 * [通過共同學習對齊和翻譯的神經機器翻譯](https://arxiv.org/abs/1409.0473),2015。 * [顯示,參與和講述:視覺注意的神經圖像標題生成](https://arxiv.org/abs/1502.03044),2015。 * [用于文檔分類的分層注意網絡](https://www.microsoft.com/en-us/research/publication/hierarchical-attention-networks-document-classification/),2016。 * [用于關系分類的基于注入的雙向長短期記憶網絡](http://aclweb.org/anthology/P/P16/P16-2034.pdf),2016 * [基于注意力的神經機器翻譯的有效方法](https://arxiv.org/abs/1508.04025),2015。 ### 更多關于注意力 * [長期短期記憶循環神經網絡](http://machinelearningmastery.com/attention-long-short-term-memory-recurrent-neural-networks/)的注意力 * [第 10 講:神經機器翻譯和注意模型](https://www.youtube.com/watch?v=IxQtK2SjWWM),斯坦福大學,2017 年 * [第 8 講 - 引起注意的語言](https://www.youtube.com/watch?v=ah7_mfl7LD0),牛津大學。 ## 摘要 在本教程中,您發現了 Encoder-Decoder 模型的注意機制。 具體來說,你學到了: * 關于編碼器 - 解碼器模型和機器翻譯的注意機制。 * 如何逐步實施關注機制。 * 注意機制的應用和擴展。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看