思考和練習
請思考下面的問題抢韭。
Attention
- 你怎么理解Attention?
Attention(注意力機制)是一種在處理序列數(shù)據(jù)時的機制呼渣。序列中的每一部分(在NLP中為token铃彰,在CV中為patch)能“全局”地“關注”到自己以及自己以外的其他部分《么兀基于query (Q)和key (K)間的關系奏赘,計算權重矩陣,從而對不同部分的value (V)進行加權求和以更好地表示該部分太惠。
- 乘性Attention和加性Attention有什么不同磨淌?
計算注意力權重的方式不同。乘性Attention通過計算query和key的點積然后除以scaled factor來計算注意力權重凿渊,而加性Attention通過計算query和key的點積然后加上一個偏置項來計算注意力權重梁只。
- Self-Attention為什么采用 Dot-Product Attention?
Dot-Product Attention通過計算query和key的點積然后除以scaled factor來得到注意力權重嗽元,這種方法簡單且高效敛纲,能夠使得模型在處理每一個元素時能夠關注到序列中的其他元素喂击,從而更好地進行序列處理任務剂癌。
- Self-Attention中的Scaled因子有什么作用?必須是
sqrt(d_k)
嗎翰绊?
Scaled factor的作用主要是為了使得注意力權重能夠在不同的scale下進行計算佩谷,防止在計算過程中出現(xiàn)梯度消失或爆炸的問題。在Dot-Product Attention中监嗜,scaled factor通常是hidden dimension的平方根谐檀,即scaled factor = sqrt(d_k)。(以前好像看到過相關的公式推導(具體地址忘了)裁奇,證明sort(d_k)解決了梯度消失和爆炸的問題)
- Multi-Head Self-Attention桐猬,Multi越多越好嗎,為什么刽肠?
No, Multi-Head Self-Attention中的Multi-Head指的是將注意力機制分成多個頭溃肪,每個頭計算注意力權重時使用不同的權重矩陣,最后將各個頭的注意力權重進行 concatenate音五。Multi-Head Self-Attention能夠使得模型能夠關注到序列中的不同特征惫撰,提高模型的性能。但是躺涝,Multi-Head Self-Attention中的頭數(shù)(num_heads)并不是越多越好厨钻,頭數(shù)過多可能會導致計算復雜度增加,從而影響模型的性能坚嗜。在設計模型架構時夯膀,需要根據(jù)具體任務和數(shù)據(jù)集來選擇合適的頭數(shù)。
- Multi-Head Self-Attention苍蔬,固定
hidden_dim
诱建,你認為增加head_dim
(需要縮小num_heads
)和減少head_dim
會對結果有什么影響?
如果固定hidden_dim银室,增加head_dim意味著每個頭處理的特征維度減小涂佃,而減少head_dim意味著每個頭處理的特征維度增大励翼。在某些情況下,增加head_dim可能會提高模型的性能辜荠,因為它可以使得模型能夠關注到序列中的更細粒度的特征汽抚。然而,如果head_dim過大伯病,可能會導致模型過擬合造烁,從而影響模型的性能。因此午笛,在設計模型架構時惭蟋,需要根據(jù)具體任務和數(shù)據(jù)集來選擇合適的head_dim。
- 為什么我們一般需要對 Attention weights 應用Dropout药磺?哪些地方一般需要Dropout告组?Dropout在推理時是怎么執(zhí)行的?你怎么理解Dropout癌佩?
- Self-Attention的qkv初始化時木缝,bias怎么設置,為什么围辙?
偏置項通常設置為一個較小的正數(shù)我碟,如0.1,使模型在訓練過程中能夠更快地收斂姚建。
- 你還知道哪些變種的Attention矫俺?它們針對Vanilla實現(xiàn)做了哪些優(yōu)化和改進?
除了Vanilla Attention以外掸冤,還有一些變種的Attention厘托,如:
1. Scaled Dot-Product Attention:在計算注意力權重時,將query和key的點積除以scaled factor贩虾,從而使得注意力權重能夠在不同的scale下進行計算催烘。
2. Additive Attention:計算query和key的點積然后加上一個偏置項,從而得到注意力權重缎罢。
3. Location-Based Attention:引入一個位置編碼伊群,使得模型能夠更好地關注到序列中的特定位置的元素。
這些變種相對Vanilla Attention的改進是:
1. Scaled Dot-Product Attention:解決了在計算注意力權重時可能出現(xiàn)的梯度消失或爆炸問題策精。
2. Additive Attention:同樣解決了可能出現(xiàn)的梯度消失或爆炸問題舰始,同時提高了模型的性能。
3. Location-Based Attention:解決了在處理序列數(shù)據(jù)時咽袜,模型無法很好地處理序列中的位置信息的問題丸卷。
- 你認為Attention的缺點和不足是什么?
1. 計算復雜度較高:Attention機制在計算注意力權重時需要進行復雜的矩陣運算询刹,這可能會導致計算復雜度較高谜嫉,從而影響模型的性能萎坷。
2. 可能過擬合:如果Attention機制的參數(shù)過多,可能會導致模型過擬合沐兰,從而影響模型的性能哆档。
3. 無法處理序列中各部分的順序問題:Attention機制主要關注的是序列中的每一個部分(token/patch)間的關系,而無法處理它們間的順序問題住闯。
- 你怎么理解Deep Learning的Deep瓜浸?現(xiàn)在代碼里只有一個Attention,多疊加幾個效果會好嗎比原?
Deep Learning的Deep是指在模型中包含多層神經(jīng)網(wǎng)絡插佛,通過多層神經(jīng)網(wǎng)絡對數(shù)據(jù)進行抽象和特征提取,從而提高模型的性能量窘。在代碼中疊加多個Attention雇寇,可以使得模型能夠更好地關注到序列中的不同特征,提高模型的性能绑改。但是谢床,如果Attention層數(shù)過多兄一,可能會導致模型過擬合厘线,從而影響模型的性能。因此出革,在設計模型架構時造壮,需要根據(jù)具體任務和數(shù)據(jù)集來選擇合適的Attention層數(shù)。
- DeepLearning中Deep和Wide分別有什么作用骂束,設計模型架構時應怎么考慮耳璧?
在DeepLearning中,Deep和Wide分別指深度學習和廣度學習展箱。深度學習主要關注模型在特征空間中的抽象能力旨枯,而廣度學習主要關注模型在特征空間中的覆蓋范圍。在設計模型架構時混驰,需要根據(jù)具體任務和數(shù)據(jù)集來選擇合適的模型結構攀隔,從而達到更好的性能。
LLM
- 你怎么理解Tokenize栖榨?你知道幾種Tokenize方式昆汹,它們有什么區(qū)別?
- 你覺得一個理想的Tokenizer模型應該具備哪些特點婴栽?
- Tokenizer中有一些特殊Token满粗,比如開始和結束標記,你覺得它們的作用是什么愚争?我們?yōu)槭裁床荒芡ㄟ^模型自動學習到開始和結束標記映皆?
- 為什么LLM都是Decoder-Only的挤聘?
- RMSNorm的作用是什么,和LayerNorm有什么不同捅彻?為什么不用LayerNorm檬洞?
- LLM中的殘差連接體現(xiàn)在哪里?為什么用殘差連接沟饥?
- PreNormalization和PostNormalization會對模型有什么影響添怔?為什么現(xiàn)在LLM都用PreNormalization?
- FFN為什么先擴大后縮小贤旷,它們的作用分別是什么广料?
- 為什么LLM需要位置編碼?你了解幾種位置編碼方案幼驶?
- 為什么RoPE能從眾多位置編碼中脫穎而出艾杏?它主要做了哪些改進?
- 如果讓你設計一種位置編碼方案盅藻,你會考慮哪些因素购桑?
- 請你將《LLM部分》中的一些設計(如RMSNorm)加入到《Self-Attention部分》的模型設計中,看看能否提升效果氏淑?