什么是self-attention、Multi-Head Attention、Transformer
本文緊接《什么是Encoder-Decoder、Seq2Seq、Attention?》,目的是從輸入輸出、以及內部數據流和詳細的計算過程角度,去剖析self-attention、Multi-Head Attention、Transformer的原理。
- self-attention、Multi-Head Attention內部結構和計算原理,我參考的是:《詳解Transformer中Self-Attention以及Multi-Head Attention》
- Transformer全貌結構和Attention結構之外的一些模塊原理,我參考的是:《Transformer--論文理解:transformer結構詳解》
目錄
1 概述
2 Transformer全貌
3 Self-Attention內部結構圖
4 Multi-Head Attention內部結構圖
5 Transformer其他模塊原理
1 概述
- self-attention:attention機制的一種。
- Multi-Head Attention:attention機制的一種(其實就是對self-attention做了更多改進)。
- Transformer:一種模型,它和ResNet分類器模型、Yolo檢測器模型平級,都能用這種模型端到端的解決一種問題(它解決的是端到端翻譯問題),只是Transformer里面既沒有用RNN也沒有用CNN,主要用的是Multi-Head Attention以及全連接層等東西。
問題:為什么會提出Transformer模型?
- RNN:記憶能力有限、無法并行化。
- LSTM:相對RNN提升了記憶能力,但無法并行化!必須一個時序一個時序的計算。
基于上述難題,谷歌在《Attention is all you need》中,提出transformer:記憶長度可以無限長,且可以并行化。
2 Transformer全貌
論文中原圖架構:
《Transformer--論文理解:transformer結構詳解》中繪制的結構:
(備注:下圖encoder部分是6個encoder的堆疊串聯,decoder部分也是6個堆疊串聯,圖中打字錯了,右邊方塊中應該是“decoder”)
3 Self-Attention內部結構圖
- Q代表query,后續會去和每一個K進行匹配。
- K代表key,后續會被每個Q匹配。
- V代表value,從輸入向量中提取得到的信息。
?
仔細研究觀察輸入輸出的計算過程,你會發現,很多地方,計算是可以用矩陣計算并行完成的。我們知道,RNN它需要一個一個的去計算輸入向量,但self-attention,可以一次性將所有輸入向量同時輸入,這就解決了計算并行問題。
4 Multi-Head Attention內部結構圖
Multi-Head Attention和Self-Attention沒有太多區別,唯一不同的是,Multi-Head Attention中根據定義的head數,會將輸入向量形成的Q,K,V向量均分為幾等分。后續獨立的對這些均分的東西進行self-attention處理,然后再把出來的結果進行向量長度方向的拼接。
5 Transformer其他模塊原理
在《Transformer--論文理解:transformer結構詳解》文章中,非常詳細的講解了Transformer中其他模塊的原理和計算過程,具體講解內容如下(每個紅色序號都是他會分章節講解的內容):
?由于上述博客已經講的非常詳細了,我這里就不重復剖析了,想進一步了解的,特別是Positional Embedding位置編碼部分,后續可以去深入研究。
總結
以上是生活随笔為你收集整理的什么是self-attention、Multi-Head Attention、Transformer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CenterNet算法快速入门
- 下一篇: 生成式对抗网络的原理和实现方法