歡迎來到長春三峰光電儀器制造有限公司!

長春三峰光電儀器制造有限公司

高精度編碼器成功進入中國航天領域

被列為重點攻關計劃并已多次榮獲科技創新項目基金!

咨詢熱線
0431-85102283
新聞中心
您的位置:首頁 > 行業新聞 > 詳細內容

NLP深度學習的高級介紹RNN和變換器的工作原理

發布者:長春三峰光電儀器制造有限公司2019-07-21

就在幾年前,RNN及其門控變體(增加了乘法交互和更好的梯度轉移機制)是用于NLP的最流行的架構。

像安德烈·卡爾帕西(Andrey Karpathy)這樣的著名研究人員正在為RNN的不合理效力唱歌,而大公司則熱衷于采用模型將其納入虛擬代理商和其他NLP應用程序。

現在變形金剛(BERT,GPT-2)已經出現,社區甚至很少提到經常性的網絡。

在本文中,我們將為您提供NLP深度學習的高級介紹; 我們將簡要解釋RNN和變壓器如何工作以及后者的哪些特定屬性使其成為適用于各種NLP任務的更好架構。


開始了!

讓我們從RNN開始,為什么,直到最近,它們才被認為是特殊的。

遞歸神經網絡是一系列神經架構,具有很酷的屬性 - 循環機制 - 使其成為處理可變長度序列數據的自然選擇。與標準NN不同,RNN可以在接收新輸入時掛起來自先前層的信息。

這是它的工作原理

假設我們正在構建一個電子商務聊天機器人,它包含一個處理文本的RNN和一個預測其背后意圖的前饋網絡。機器人收到這條消息:“嗨!你們這件襯衫有不同的顏色嗎?”

作為我們的輸入,我們有11個單詞(11個字嵌入)和序列,切入標記,看起來像這個I1,I2 ...... ..I11。

RNN背后的核心思想是它將相同的權重矩陣應用于每個單獨的輸入,并且還產生一系列隱藏狀態(它們將具有與我們輸入一樣多的數據),其攜帶來自先前時間步驟的信息。

基于先前隱藏狀態(Ht-1)和當前輸入(It)計算每個隱藏狀態(Ht); 正如我們所提到的,它們實際上是在每個時間步都不斷修改的狀態。

因此,處理開始于第一個單詞嵌入(I1)與初始隱藏狀態(H0)一起進入模型; 在RNN的第一個單元內,對I1和H0進行線性變換,增加偏差,最終值通過某種非線性(sigmoid,ReLU等) - 這就是我們得到H1的方式。

之后,模型吃I2與H1配對并執行相同的計算,然后I3與H2進入,接著是I4與H3,依此類推,直到我們完成整個序列。

由于我們一遍又一遍地使用相同的權重矩陣,因此RNN可以使用冗長的序列而不會增加大小本身。另一個優點是,理論上,每個時間步都可以訪問許多步驟之前的數據。

問題

RNN的獨特之處 - 它多次使用相同的層 - 也使它極易受到消失和爆炸漸變的影響。實際上,這些網絡很難通過多個步驟保存數據。

此外,RNN在序列中看不到任何層次結構。每次處理新輸入時,模型都會改變隱藏狀態,盡管它可能無關緊要。因此,來自較早層的數據可能在網絡到達序列結束時被完全洗掉。

這意味著在我們的例子中“嗨!你們有這種襯衫有不同的顏色嗎?“前饋網可能只是試圖根據”任何不同的顏色來預測意圖?“即使是人類也不容易做到。

另一個固有的缺點在于順序處理的本質:由于輸入的一部分是一次處理一個(除非我們有H1,否則我們無法計算H2)網絡的計算總體來說非常慢。

門控變種

為了解決上面討論的問題,已經提出了不同的架構修改來改進RNN,最流行的是長短期記憶(LSTM)和門控循環單元(GTU)。

大致來說,LSTM背后的主要思想是除了隱藏狀態之外,每個單元內都有一個單元狀態 - 一個存儲器存儲器(它們都是相同大小的矢量)。

此外,這些模型具有三個門(忘記門,輸入門,輸出門),用于確定從單元狀態寫入,讀取或擦除哪些信息。

所有的門都是與隱藏狀態長度相同的向量,這正是它們的用途:

忘記門確定應保留什么與應從前一時間步驟擦除的內容。輸入門確定應該將哪些新信息放入單元狀態。輸出門確定應將來自單元的哪些數據合并到隱藏狀態。它們都是使用sigmoid函數計算的,因此它們總是輸出0到1之間的值。

如果一個門產生接近1的東西,它被認為是開放的(數據可以包含在單元狀態中),如果它給出一個接近0的值,則該信息將被忽略。

GRU的運行方式與LSTM類似,但它們在架構上更簡單; 它們消除了單元狀態并在隱藏狀態之前計算了兩個門而不是三個門。

GRU的要點是保持LSTM的功率和魯棒性(在減少消失的梯度方面)并擺脫其復雜性。GRU的大門是:

更新門確定應修改隱藏狀態的哪些部分以及應保留哪些部分。在某種程度上,它在LSTM中執行輸入和忘記門的操作。

重置門確定隱藏狀態的哪些部分現在很重要。如果它輸出一個接近1的數字,我們可以復制先前的狀態并使網絡免于更新權重(沒有重量調整 - 沒有消失的梯度。)

LSTM和GRU都能夠控制信息流,掌握遠程依賴性,并根據輸入使錯誤消息以不同的強度流動。

序列到序列(seq2seq)模型和注意機制

序列模型曾經在神經機器翻譯(NMT)領域如此受歡迎,它由兩個堆疊在一起的RNN(編碼器和解碼器)組成。

編碼器按順序處理輸入并生成一個思想向量,用于保存每個時間步的數據。然后,它的輸出被傳遞給解碼器,解碼器使用該上下文來預測適當的目標序列(翻譯,聊天機器人的回復等)


然而,vanilla seq2seq的問題在于它試圖將整個輸入的上下文填充到一個固定大小的向量中,并且它可以攜帶多少數據是有限制的。

這是注意機制有用的地方。它們允許解碼器網絡在產生輸出時關注輸入的相關部分。他們通過為編碼步驟中的每個解碼步驟添加額外的輸入來實現這一點。

RNN的墮落和變形金剛

是的,我們可以使用LSTM構建在RNN中延長短記憶,甚至使用注意力來記憶長記憶。但是我們仍然不能完全消除消失梯度的影響,使這些模型(其設計抑制并行計算)更快,或者讓它們明確地模擬序列中的長程依賴性和層次結構。

Transformer是2017年谷歌研究人員推出的模型,它克服了RNN的所有缺點。這種全新的革命性架構使我們能夠通過完全依賴注意機制來消除周期性計算并在各種NLP任務(NMT,問答等)中實現最先進的結果。

變壓器也包括編碼器和解碼器。它實際上在一側有一堆編碼器,在另一側有一堆解碼器(具有相同數量的單元)。

編碼器

每個編碼器單元由自關注層和前饋層組成。

自我關注是允許單元格將輸入的內容與序列中的所有其他輸入進行比較并將它們之間的關系包括在嵌入中的機制。如果我們在談論一個單詞,那么自我關注可以表示句子中哪些其他單詞與之有很強的關系。

在變壓器模型中,每個位置可以同時與輸入中的所有其他位置相互作用; 網絡的計算對于并行化來說是微不足道的。

自我關注層通過多頭注意機制得到進一步增強,該機制提高了模型聚焦于各種位置的能力,并使其能夠創建表示子空間(將不同的權重矩陣應用于相同的輸入)。

為了建立輸入的順序,變換器為每個嵌入添加另一個向量(這稱為位置編碼),這有助于它們識別序列中每個輸入的位置以及它們之間的距離。

每個編碼器將其輸出推送到其正上方的單元。

在解碼器側,單元也具有自注意層,前饋層和一個附加元件 - 編碼器解碼器注意層 - 在它們之間。變形金剛中的解碼器組件接收來自頂部編碼器的輸出 - 一系列注意向量 - 并在預測目標序列時將其用于聚焦于輸入的相關部分。

總的來說,變壓器比RNN更輕,它們更容易訓練,并且很適合并行化; 他們可以學習遠程依賴。

結論性說明

變壓器架構已成為許多突破性模型的基礎。

谷歌的研究使用了“注意就是你所需要的”論文來開發BERT - 一種強大的語言表示模型,可以很容易地適應各種NLP任務(通過增加一個微調輸出層)和OpenAI科學家設法創造了一個令人難以置信的連貫語言模型GPT-2,據他們說,這種模式太危險了,無法發布。

現在正在各種研究領域試用多頭注意力技術。很快,我們可能會看到它以一種深刻的方式改變了多個行業。這將是令人興奮的。

浙江11选5中奖规则 辽宁十一选五最大遗漏走势图 广东好彩一预测推荐 河南快赢481玩法介绍 上海快3开奖历史结果 000725京东方股票行情 贵州快三计划 手机炒股怎么炒 湖北新十一选五走势图 二分时时彩是哪里开的 福彩30选5走势图