位置編碼在注意機制中的作用
閱讀本文的前置知識
神經網路知識。
有一種叫做注意機制的東西,但是你不需要知道注意力具體實現。
RNN/LSTM的不足。
A。 Vaswani等人的《Attention Is All You Need》被認為是解決了眾所周知的LSTM/RNN體系結構在深度學習空間中的侷限性的突破之一。本文介紹了transformers 在seq2seq任務中的應用。 該論文巧妙地利用了 D。Bahdanau 等人透過聯合學習對齊和翻譯的神經機器翻譯註意機制的使用。 並且提供一些示例明確且詳盡地解釋了注意力機制的數學和應用。
在本文中,我將專注於注意力機制的位置編碼部分及其數學。
假設您正在構建一個 seq2seq 學習任務,並且您想要開發一個模型,該模型將輸入英語句子並將其翻譯成其他 語言。
“All animals are equal but some are more equal than others ”→Badhā prāṇī’ō samāna chē parantu kēṭalāka an’ya karatā vadhu samāna chē
你的第一步是獲取這個輸入句子,執行一個分詞器,將它轉換成數字,然後將它傳遞給一個嵌入層,這可能會為這個句子中的每個單詞新增一個額外的維度。在執行 RNN 或 LSTM 時,隱藏狀態保留單詞在句子中的相對位置資訊。然而,在 Transformer 網路中,如果編碼器包含一個前饋網路,那麼只傳遞詞嵌入就等於為您的模型增加了不必要的混亂,因為在詞嵌入中沒有捕獲有關句子的順序資訊。為了處理單詞相對位置的問題,位置編碼的想法出現了。
在從嵌入層提取詞嵌入後,位置編碼被新增到這個嵌入向量中。
解釋位置編碼最簡單的方法是為每個單詞分配一個唯一的數字 ∈ ℕ 。或者為每個單詞分配一個在 [0,1] ∈ ℝ 範圍內的實數(如果輸入句子很長,這樣可以處理很大的值)。但是,上述兩種方法都沒有捕捉到單詞之間時間步長的準確性。為了克服這個問題,本文使用了 sin 和 cosine 函式形式的位置編碼。
打個比方,我們輸入模型的序列,無論是句子、影片序列還是股票市場價格資料,都將始終是時域訊號。表示時域訊號的最佳方式是透過正弦方程 sin(ωt)。如果我們巧妙地使用這個波動方程,我們可以在一次拍攝中捕獲詞嵌入的時間和維度資訊。
讓我們看一下這個等式,在接下來的步驟中,我們將嘗試把它形象化。
讓我們考慮一個簡單的句子,它被分詞,然後它的詞嵌入被提取。句子長度為5,嵌入維數為8。因此,每個單詞都表示為1x8的向量。
現在我們在時間維度上取一個序列把正弦PE向量加到這個嵌入向量上。
進一步,我們對沿dim維數的其他向量做類似的操作。
本文在嵌入向量中交替加入正弦和餘弦。如果dim是偶數,則sin級數相加,如果dim是奇數,則cos級數相加。
這很好地捕獲了沿時間維度(或等式中描述的 pos 維度。我將 pos 和 time 互換使用,因為它們意味著相同的事情)但是如何也捕獲沿dims維度的相對位置資訊呢? 這裡的答案也在於等式本身。 ω 項。
隨著 i 從 0 增加到 d_embedding/2,頻率也從 1/2π 減少到 1/(2π。10000)
因此我們看到,沿著無序方向的每個向量,位置的唯一性被捕獲。 該論文還描述了這種編碼的魯棒性。 但是我仍然無法找出為什麼特別使用數字 10000 進行位置編碼(它可能是一個超引數嗎?)。 這個解釋粗略地展示瞭如何使用正弦和餘弦對於模型理解是非常合理和有效的。 下面的圖表本身講述了位置編碼如何隨位置(時間)和尺寸變化。
人們可以很容易地看到,這些是簡單的時頻圖,其中位置代表時間,深度代表頻率。 時間頻率圖已被用於從射電天文學到材料光譜分析的許多應用中。 因此,從現有的現實世界系統構建類比確實可以更好地理解問題。
這是我對注意力機制中使用的位置編碼的看法。 在接下來的系列中,我將嘗試撰寫有關編碼器-解碼器部分的內容,並將注意力應用於現實世界的規模問題。
相關文章
- 2021-09-24張秀根講堂:關於寫作的技巧你知道多少?
- 2021-09-16曾被視為魯能前腰核心的不二選擇, 離隊後開始了漂泊而今泯然眾人矣
- 2021-09-09新手一看就懂,老司機教你3招,如何判斷車輪的位置
- 2021-08-18中國女排陣容重組在即! 5人將是世錦賽核心, 新帥確定最佳人選
- 2021-07-25學不好中文,連玩《文字遊戲》的資格都沒有