問題匯總
- Transformer的結構
- 自注意力機制(Self-Attention)
- 多頭自注意力
- 前饋神經網絡(Feed-Forward Network, FFN)
- 位置編碼
- 編碼器(Encoder)和解碼器(Decoder)
- Multi-Query Attention(多查詢注意力機制)
- Grouped-query Attention(分組查詢注意力機制)
- FlashAttention
- 與注意力機制相關的問題
- 為什么要除以dk的開根號?
- Transformer為何使用多頭注意力機制?
- 為什么Q和K使用不同的權重矩陣生成,為何不能使用同一個值進行自身的點乘?
- Transformer計算attention的時候為何選擇點乘而不是加法?兩者計算復雜度和效果上有什么區別?
- CNN用注意力機制也可以提取全局特征,為什么用Transformer
- 與transformer架構相關的問題
- tokenizer的作用?為什么bert要用專門的tokenizer?
- Transformer為什么優于RNN和LSTM,好在哪?
Transformer的結構
Transformer 的整體結構是一個編碼器-解碼器架構,每個編碼器和解碼器都由多個層堆疊而成。每層都由自注意力機制和前饋神經網絡(Feed-Forward Network, FFN)組成。此外,還有殘差連接(Residual Connection)和層歸一化(Layer Normalization)
自注意力機制(Self-Attention)
自注意力機制是 Transformer 的核心創新,它的主要作用是對輸入序列中的每個詞進行加權求和,考慮到其他所有詞對當前詞的影響,從而獲得詞與詞之間的全局關系。
具體而言,對于輸入的每個單詞,生成三個向量:查詢(Query),鍵(Key),值(Value)。然后計算查詢和鍵的相似度(通過點積計算),并根據這個相似度給值加權,最后生成輸出。
時間和空間復雜度是 O(N^2),其中 N 是序列長度。