自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Transformer的核心理解起來也不難,但為什么這么強(qiáng)呢?

人工智能 智能汽車
傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)在處理序列數(shù)據(jù)時需要按順序逐步計(jì)算,無法并行。而Transformer可以做到”同時計(jì)算所有位置的輸出”!它是怎樣做到的呢?

本文經(jīng)自動駕駛之心公眾號授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

Transformer的強(qiáng)大在于它的設(shè)計(jì)。高票答案已經(jīng)詳細(xì)講解了Transformer在長距離依賴建模方面的能力,我就試著從設(shè)計(jì)方面補(bǔ)充一下“Transformer能夠work很好”的其他幾個原因吧。拋磚引玉,大家輕拍。

并行計(jì)算 + 強(qiáng)大的表達(dá)與泛化能力

傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)在處理序列數(shù)據(jù)時需要按順序逐步計(jì)算,無法并行。而Transformer可以做到”同時計(jì)算所有位置的輸出”!它是怎樣做到的呢?

圖片

上圖是論文中 Transformer 的內(nèi)部結(jié)構(gòu)圖,左側(cè)為 Encoder block,右側(cè)為 Decoder block。

首先,Transformer使用位置編碼(Position Encoding)來記錄各單詞在語句中的位置或次序,位置編碼的值遵循一定規(guī)則(如由三角函數(shù)生成),每個源單詞(或目標(biāo)單詞)的Word Embedding與對應(yīng)的位置編碼相加(位置編碼向量與Word Embedding的維度相同)得到自己的編碼,并最終成為Encoder的輸入。

圖片

Transformer的Encoder組件由6個相同結(jié)構(gòu)的Encoder串聯(lián)而成,Decoder組件也是由6個結(jié)構(gòu)相同的Decoder串聯(lián)而成。最后一層Encoder的輸出將傳入Decoder的每一層。

圖片

進(jìn)一步看,每個Encoder中的Multi-Head Attention,通過多個獨(dú)立的注意力頭并行計(jì)算,可以從不同的子空間中學(xué)習(xí)到不同的表示,從而使模型擁有關(guān)注語言不同方面的能力。下面是Multi-Head Attention的內(nèi)部結(jié)構(gòu),

圖片

從上圖可以看到 Multi-Head Attention 包含多個 Self-Attention 層,首先將輸入X分別傳遞到 h 個不同的 Self-Attention 中,計(jì)算得到 h 個輸出矩陣。

然后,Multi-Head Attention 將它們拼接在一起 (Concat),傳入一個Linear層,得到 Multi-Head Attention 最終的輸出Z

圖片

Linear層(全連接的神經(jīng)網(wǎng)絡(luò)層)的映射是非線性變換,它的作用是對輸入進(jìn)行維度變換和特征提取。線性變換只能進(jìn)行簡單的比例縮放和平移操作,而非線性變換可以引入更多的復(fù)雜性,例如曲線形狀、峰值和谷底等。這樣可以使模型更加靈活,能夠更好地適應(yīng)不同類型的數(shù)據(jù)分布,從而增加模型的表達(dá)能力。

Multi-Head Attention 上方還包括一個 Add & Norm 層,Add 表示殘差連接 (Residual Connection) 用于防止網(wǎng)絡(luò)退化(這也是RNN的頑疾),而Norm 表示 Layer Normalization,用于對每一層的激活值進(jìn)行歸一化,也就是將每一層神經(jīng)元的輸入都轉(zhuǎn)成均值方差都一樣的,這樣可以加快收斂。

除了多頭機(jī)制,Transformer還使用了Feed Forward前饋網(wǎng)絡(luò),它由兩個線性變換和一個非線性激活函數(shù)(通常是ReLU)組成。輸入的詞向量經(jīng)過一個線性變換,將其映射到一個更高維度的空間。然后,通過ReLU進(jìn)行非線性變換。最后,再經(jīng)過一個線性變換,將其映射回原始的詞向量維度。通過多層前饋網(wǎng)絡(luò)的堆疊,模型可以學(xué)習(xí)到更復(fù)雜的特征表示,從而更好地捕捉輸入序列中的語義信息。

Transformer架構(gòu)強(qiáng)大的表達(dá)與泛化能力使之成為GPT等大語言模型的底層核心,如果你也對Transformer和大模型感興趣,想掌握使用和開發(fā)大模型的必備技巧,最終進(jìn)入這一領(lǐng)域,那么選擇一門相應(yīng)的網(wǎng)課是比較快的路徑。

自注意力模型的設(shè)計(jì)

傳統(tǒng)序列模型在處理長序列時,由于信息的傳遞是依次進(jìn)行的,容易出現(xiàn)梯度消失或梯度爆炸的問題,同時也無法充分捕捉到序列中不同位置之間的依賴關(guān)系。

通過引入注意力機(jī)制,我們可以對每個位置的注意力權(quán)重進(jìn)行獨(dú)立計(jì)算,不需要像傳統(tǒng)序列模型那樣依次進(jìn)行計(jì)算,從而實(shí)現(xiàn)全局的信息交互。這也使得自注意力模型在處理長序列時具有更高的效率。

圖片

在這個模型中,MatMul是矩陣乘法的操作。具體來說,MatMul將查詢矩陣Q與鍵矩陣K相乘,得到一個注意力分?jǐn)?shù)矩陣。這個注意力分?jǐn)?shù)矩陣表示了查詢與每個鍵之間的相關(guān)性或相似度,從而決定在注意力機(jī)制中分配多少注意力權(quán)重給每個鍵對應(yīng)的值(Value)。通過將注意力分?jǐn)?shù)矩陣與值矩陣V相乘,可以得到最終的注意力表示。

Scale是指對注意力分?jǐn)?shù)進(jìn)行縮放的操作。在計(jì)算注意力分?jǐn)?shù)時,通常會將點(diǎn)積的結(jié)果除以一個縮放因子,這個縮放因子是注意力機(jī)制中的一個超參數(shù)??s放的目的是為了控制注意力分?jǐn)?shù)的大小,使其更穩(wěn)定和可解釋。

具體來說,計(jì)算注意力分?jǐn)?shù)的公式為:Attention(Q, K) = softmax(QK^T / sqrt(d_k)) * V

其中,Q表示查詢(Query),K表示鍵(Key),V表示值(Value),d_k表示鍵的維度。在計(jì)算注意力分?jǐn)?shù)時,將點(diǎn)積結(jié)果除以sqrt(d_k)來進(jìn)行縮放。這個縮放因子可以使得注意力分?jǐn)?shù)的范圍更合適,避免了點(diǎn)積結(jié)果過大或過小的情況。

較大的縮放因子可以增加注意力分?jǐn)?shù)的范圍,使得模型更加關(guān)注不同位置之間的差異;較小的縮放因子可以減小注意力分?jǐn)?shù)的范圍,使得模型更加平均地分配注意力權(quán)重。

這種注意力機(jī)制不依賴于外部的上下文信息,而是通過內(nèi)部的自我關(guān)注來計(jì)算注意力權(quán)重。因此,它被稱為self-attention自注意力機(jī)制。

Mask是一種用于控制注意力機(jī)制的操作。它被用來屏蔽或限制模型在計(jì)算注意力分?jǐn)?shù)時對某些位置的關(guān)注。在自注意力模型中,常見的mask操作有兩種:padding mask和sequence mask。

  1. Padding mask(填充掩碼):在處理變長序列時,為了保持序列的長度一致,通常會在序列的末尾添加一些特殊的填充符號(如0)。Padding mask的作用是將這些填充符號對應(yīng)的位置的注意力分?jǐn)?shù)設(shè)為一個很小的值(如負(fù)無窮),從而使模型在計(jì)算注意力分?jǐn)?shù)時忽略這些padding符號。這樣可以避免填充的內(nèi)容對計(jì)算產(chǎn)生干擾。
  2. Sequence mask(序列掩碼):在某些任務(wù)中,為了避免模型在生成序列時看到未來的信息,需要對注意力分?jǐn)?shù)進(jìn)行掩碼操作。Sequence mask的作用是將當(dāng)前位置之后的位置的注意力分?jǐn)?shù)設(shè)為一個很小的值,從而使模型只能關(guān)注當(dāng)前位置之前的信息。這樣可以保證模型在生成序列時只依賴于已經(jīng)生成的部分,而不會受到未來信息的影響。

通過使用mask操作,自注意力模型可以更好地處理變長序列和生成任務(wù),并且能夠控制模型在計(jì)算注意力分?jǐn)?shù)時的關(guān)注范圍。不同的任務(wù)和應(yīng)用場景可能需要不同類型的mask操作。

比如在機(jī)器翻譯任務(wù)中,我們希望將一個源語言句子逐步翻譯成目標(biāo)語言句子。使用sequence mask可以確保模型只能依賴于之前已生成的部分,逐步生成目標(biāo)語言句子。

而在文本分類任務(wù)中,輸入的文本長度可能不一致。使用padding mask可以將填充部分的注意力權(quán)重設(shè)為0,忽略填充部分的影響,確保模型只關(guān)注真實(shí)的文本內(nèi)容。

演化

如今當(dāng)我們談?wù)揟ransformer時,其實(shí)是在談?wù)撘粋€大家族。2018年年初,AllenNLP發(fā)布了一個新模型ELMo。ELMo是一種比Word2vec更好的訓(xùn)練詞向量的模型。而之后的BERT、RoBERTa、XLNet、T5、ALBERT、GPT-3等模型從自然語言理解及自然語言生成等角度,不斷刷新自然語言處理領(lǐng)域任務(wù)的SotA(State of the Art)表現(xiàn)。

Transformer架構(gòu)也像其他AI新技術(shù)一樣,會不斷迭代和更新,如果你也對Transformer大家族感興趣,想進(jìn)入大模型開發(fā)這一熱門領(lǐng)域,那么通過學(xué)習(xí)一門靠譜的網(wǎng)課會是比較快的路徑。

責(zé)任編輯:張燕妮 來源: 自動駕駛之心
相關(guān)推薦

2015-05-18 13:49:37

OpenStack云計(jì)算應(yīng)用

2020-02-21 16:43:00

C語言編程語言程序員

2024-09-04 10:44:19

2022-07-08 08:37:23

Nacos服務(wù)注冊動態(tài)配置

2024-05-27 09:01:22

2024-03-01 17:01:15

GraphQL后端

2021-01-26 05:39:57

Protobuf java

2021-03-10 18:05:16

JavaProtobuf序列化

2021-03-03 11:09:25

Windows鴻蒙系統(tǒng)操作系統(tǒng)

2021-08-01 22:32:59

加密貨幣貨幣比特幣

2018-08-16 08:03:21

Python語言解釋器

2020-02-27 15:44:41

Nginx服務(wù)器反向代理

2013-03-04 10:10:36

WebKit瀏覽器

2019-08-30 14:58:47

JavaScript程序員編程語言

2024-02-26 21:15:20

Kafka緩存參數(shù)

2022-06-02 08:03:19

PyCharmPython代碼

2011-01-18 15:27:30

Postfix

2020-02-27 21:03:30

調(diào)度器架構(gòu)效率

2022-06-13 21:52:02

CDN網(wǎng)絡(luò)節(jié)點(diǎn)

2016-12-28 11:28:19

.NET反射
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號