當(dāng)下如火如荼的大模型,其中的關(guān)鍵技術(shù)就是注意力機(jī)制(Attention),于2015年提出。2017年的“Attention is all you need”一文提出了Transformer模型,去掉RNN,只保留注意力,性能吊打所有機(jī)器翻譯模型,是NLP發(fā)展的一個(gè)里程碑。
Attention的最主要的用途是自然語(yǔ)言處理,比如機(jī)器翻譯、情感分析;也有學(xué)者將其用于圖像處理,比如Vision Transformer(ViT),用了自注意力機(jī)制進(jìn)一步提高了模型在ImageNet的分類(lèi)性能。
含義
注意力機(jī)制(Attention)最初用于改進(jìn)循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),提高Sequence-to-Sequence (Seq2Seq) 模型的表現(xiàn),主要是為了緩解模型對(duì)于長(zhǎng)序列的遺忘問(wèn)題。注意力機(jī)制允許模型在處理數(shù)據(jù)時(shí),動(dòng)態(tài)地關(guān)注數(shù)據(jù)的某些部分,而非靜態(tài)地處理整個(gè)輸入。
自注意力機(jī)制 (Self-Attention) 是注意力機(jī)制的一種擴(kuò)展,不局限于 Seq2Seq 模型,可以用于任意的 RNN。它允許模型在處理一個(gè)序列時(shí),計(jì)算序列內(nèi)各個(gè)元素之間的相互關(guān)系。
后來(lái) Transformer 模型將 RNN 剝離,只保留注意力機(jī)制。 與 RNN + 注意力機(jī)制相比,只用注意力機(jī)制居然表現(xiàn)更好,在機(jī)器翻譯等任務(wù)上的效果有大幅提升。
自注意力層的輸入是序列(x1,…,xm),其中向量的大小都是din * 1。
其有兩個(gè)顯著優(yōu)點(diǎn),
第一,序列的長(zhǎng)度 m 可以是不確定的,可以動(dòng)態(tài)變化。但是神經(jīng)網(wǎng)絡(luò)的參數(shù)數(shù)量保持不變。
第二,輸出的向量 ci 不是僅僅依賴(lài)于向量 xi,而是依賴(lài)于所有的輸入向量 (x1, …, xm)。
自注意力層有三個(gè)參數(shù)矩陣,分別表示query、key、value:
計(jì)算步驟
輸入x映射到三元組(q,k,v)
首先,對(duì)于所有的 i = 1, · · · , m,把輸入的 xi 映射到三元組 (qi, ki, vi):
計(jì)算權(quán)重向量 α
計(jì)算輸出向量 c
注意力的意義
公式總結(jié)
dk是K的維度,用來(lái)縮放點(diǎn)積,避免得到太大的數(shù)值。
非常推薦大家去閱讀一個(gè)白話解釋這個(gè)公式的博客,講得非常好,包括為什么要有Q、K、V三個(gè)矩陣,為什么Transformer能做到并行數(shù)據(jù)處理等?!禨elf-attention 公式解釋》
多頭自注意力
上面介紹的是單頭自注意力層,實(shí)踐中更常用的是多頭自注意力層,它是多個(gè)單頭的組合。
設(shè)多頭由 l 個(gè)單頭組成。每個(gè)單頭有自己的 3 個(gè)參數(shù)矩陣,所以多頭一共有 3l 個(gè)參數(shù)矩陣。它們的輸入都是序列 (x1, · · · , xm),它們的輸出都是長(zhǎng)度為 m 的向量序列。
多頭的意義
1、并行學(xué)習(xí)多種關(guān)系:
多頭自注意力通過(guò) 并行地運(yùn)行多個(gè)自注意力“頭” 來(lái)實(shí)現(xiàn)。每個(gè)“頭”學(xué)習(xí)序列中不同的特征或關(guān)系。這允許模型在不同的表示子空間中同時(shí)捕獲序列的多種方面,學(xué)習(xí)更多樣化的特征,如不同類(lèi)型的語(yǔ)義和句法信息。
2、提高模型的表達(dá)能力:
多頭機(jī)制增加了模型的表達(dá)能力。不同的注意力頭可以關(guān)注序列的不同部分,使模型能夠更全面地理解和表示數(shù)據(jù)。
總的來(lái)做,與單頭相比,多頭能提供更豐富的信息捕獲能力和更好的泛化能力,提高了模型在處理復(fù)雜序列數(shù)據(jù)時(shí)的表達(dá)能力和性能。
本文內(nèi)容為看完王樹(shù)森和張志華老師的《深度強(qiáng)化學(xué)習(xí)》一書(shū)的學(xué)習(xí)筆記,十分推薦大家去看原書(shū)!