久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    第一次見有人能把生成式AI的“自注意力機制”講的這么通俗易懂!

     taotao_2016 2023-04-16 發布于北京

    本文將以通俗易懂的講解方式,帶你深入解析生成式AI Transformer架構下的“自注意力機制”背后的運行邏輯,注重向想了解AI算法的非專業人士也能深入的學習和理解人工智能背后的科學原理。

    大牛=10%天分+40%耐心+50%的長期努力

    這是帖子寫完成后加的一句,其實你能認真看完這帖子就說明你已經夠有耐心了。


    寫在前面

    在之前的文章中,我們已經學習過了“什么是生成式AI?”,對生成式AI的的三種模型“TransformerBERTGPT”也有了初步相對客觀、真實的認識。具體內容從下面藍色鏈接進行跳轉學習:

    愛了愛了!第一次見有人把生成式AI原理講的這么通俗易懂~

    第一次見有人把Transformer、BERT和GPT大模型講的這么通俗易懂!


    我們知道,Transformer是一個通用的模型框架,它可以用于解決一系列“序列到序列”的問題。而后面所提出的BERT和GPT模型勻是基于Transformer架構來進行設計的。為什么后提出的算法模型都要基于Transformer來構建?,而不能是循環神經網絡(RNN)和是卷積神經網絡的(CNN)?”,這所有的一切都要從Transformer架構下的一個神奇模塊說起。它就是self-attention mechanism,翻譯成中文叫做自注意力機制


    背景知識:

    本著知識一定要系統的來學的原則,我想先帶著大家了解一下在自然語音處理領域中,在“序列到序列化問題”上AI算法是如何演進的,以及Transformer為什么會被提出?它又解決了哪些痛點?

    早在Transformer模型被提出之前,人們處理序列化數據主要使用的是RNNCNN等模型。但這兩種模型在序列化數據上的應用存在一定的局限性。

    RNN的局限性:

    1. 難以并行化:RNN模型的計算過程需要順序進行,無法進行并行計算,因此訓練速度較慢。
    2. 難以捕捉長期依賴:由于每個時間步的隱藏狀態都與前一個時間步的隱藏狀態相關,因此模型難以捕捉長期依賴。在處理長序列時,模型容易出現梯度消失或爆炸的問題。

    CNN的局限性體:

    1. 由于CNN中窗口大小是固定的,因此無法處理不同長度的文本序列。
    2. CNN只能捕獲局部特征,無法捕獲序列中長距離的依賴關系。

    Transformer相比CNN和RNN所具備的優勢:

    1. 長序列建模能力強:Transformer模型中的自注意力機制可以直接獲取序列中任意位置的信息,從而有效地解決了長序列建模的問題;
    2. 預訓練表現優異:Transformer模型在在大規模無標簽數據上的預訓練表現上優秀,可以學習到句子級別和單詞級別的語義信息;
    3. 使用了自注意力機制:模型的每個時間步之間可以進行并行計算,可加速模型的訓練;
    4. 通過堆疊多個層可提高模型的表現能力,使用殘差連接和層歸一化等技術可以加速模型的收斂

    這里需要客觀認識一點,再好的模型它也會有缺點,不能因為它具備很多優點,就忽視掉它本身的不足。

    Transformer存在的缺陷:

    1. 訓練代價高昂: Transformer 模型通常需要巨大的訓練數據集和大量的計算資源才能訓練。
    2. 對序列長度敏感: Transformer 模型中的自注意力機制使得模型可以處理變長的輸入序列,但當序列長度增加時,模型的計算復雜度會增加,這會導致訓練時間和內存占用量的增加。
    3. 難以處理長期依賴關系: 如果序列過長,它其實也可能丟失序列中遠離當前位置的關鍵信息。
    4. 對詞匯表大小敏感: 由于嵌入層需要為每個單詞分配單獨的嵌入向量。當詞匯表很大時,模型需要更多的參數和計算資源,模型會變的復雜,在訓練中出現過擬合的問題。
    5. 無法處理復雜的結構信息: Transformer 模型的自注意力機制適用于序列數據,但當輸入數據是圖形或樹形結構時,需要使用更復雜的注意力機制來考慮節點之間的關系。

    這里大家如果對RNN和CNN不夠了解的話也沒關系,RNN、CNN與Transformer是AI發展下不同時代的產物,其擅長的領域各不相同。TransformerRNN擅長處理序列數據,CNN擅長處理圖像等空間數據。但他們都可以被應用在自然語言處理中,同樣Transformer也已經不再局限于自然語言處理領域,在圖像領域,如圖像分類、目標檢測和圖像生成等也取得了不錯的成績,感興趣的同學可以學習一下 “Image Transformer”這篇論文,該論文是最先將 Transformer 應用于圖像領域的論文之一。

    [論文鏈接1]: https://arxiv.org/abs/1802.05751

    由于本文主要側重的是對“自注意力機制”的解讀,所以不會過多的深入介紹其他不相關的模型,若大家對這部分算法模型很感興趣,可以持續關注本賬號發布的內容,這些內容的深入解析后續會為大家一一奉上。

    從宏觀角度介紹自注意力機制

    自注意力機制是在論文'Attention Is All You Need' 中提出的,論文題目翻譯過來就是“注意力機制是你所需要的一切”,該論文由Google Brain團隊于2017年發表在國際會議NIPS上。

    [論文鏈接2] : https://arxiv.org/abs/1706.03762
    文章圖片1

    圖源論文 Attention is all you need 論文首頁截圖

    這篇論文對于自然語言處理領域來說具有劃時代的意義:

    • 其創造性地提出了基于注意力機制的神經網絡模型( Transformer 模型)用于自然語言處理任務;
    • 通過實驗證明,Transformer 模型在機器翻譯任務中取得了最優的效果,并可應用在其他自然語言處理任務;
    • 極大程度的推動了機器學習領域的發展,為后續研究提供了新的思路和方法。
    文章圖片2

    圖源論文 Transformer模型在翻譯任務效果更好,訓練成本更低

    文章圖片3

    圖源論文 Transformer 的架構圖

    想要學習自注意力機制,我們先得了解Transformer的模型架構。如上圖所示,Transformer模型主要由① 位置編碼層、② 前饋網絡、③ 歸一化層等基礎組件構成。

    位置編碼層:其被引入是因為Transformer不像RNN那樣處理的是序列中單個元素,它處理的是并行輸入的整個序列元素,是一種可學習的編碼方法,它將位置信息與輸入向量相結合,為每個輸入向量添加一個唯一的編碼向量,表示其在序列中的順序和位置信息。

    前饋網絡:這個子層對自注意力子層的輸出進行非線性變換,并學習不同維度之間的關系。(注:非線性變換與線性變換相對,變換的函數關系不滿足加法和數乘的運算法則。也就是說,非線性變換對于輸入數據的變換不再是線性的,而可能是曲線形狀的。非線性變換非常重要,因為線性變換只能進行簡單的變換操作,而不能捕捉到輸入數據之間更為復雜的關系。通過引入非線性變換,以提高模型的表達能力。)

    歸一化層:這個層采用層歸一化或者批歸一化的方式對每個子層的輸出進行歸一化處理,以提高模型的訓練穩定性和泛化性能。(注:歸一化處理是指將數據進行線性縮放,將數據映射到特定的區間內,通常是將數據轉化為0到1或-1到1之間的值。歸一化處理在數據預處理和模型訓練中經常被使用,它可以使不同量級的數據處于同一個量級上,消除不同數據之間的量綱影響,提高模型的訓練效率和準確性。歸一化處理的目的是使不同特征之間具有可比性,同時可以消除數據間的噪聲和異常值,使得模型更具有魯棒性。)

    Transformer架構是由位置編碼層編碼器解碼器前饋網絡組成。其中編碼器又由多層子層組成,每個子層都包含多頭自注意力子層前饋子層歸一化子層三個組件。解碼器也由多層子層組成,每個子層包含多頭自注意力子層前饋子層編碼器-解碼器注意力子層歸一化子層四個組件。

    引入自注意力機制的原因是它可以讓編碼器在對特定元素進行編碼時使用輸入序列中其他元素的信息(可簡單理解為當需要翻譯一個詞時,不僅僅關注了當前的詞信息,還關注了其他詞的信息)。然后,Self-Attention 層的輸出會流入前饋網絡。

    舉個例子:假如,我們要翻譯下面這個句子:

    “This mushroom is so beautiful, but it looks poisonous.”

    請問這個句子中的 it 指的是什么?是指 mushroom還是 beautiful?對人來說,這無疑是一個簡單的問題,但是對于算法來說卻沒那么簡單。

    文章圖片4

    最后一層編碼器中it詞的編碼信息

    可以看到,在對'it’進行編碼時,有一部分注意力集中在'The mushroom'上,并將它們的部分信息融入到'it'的編碼中,顏色越深的部分表示注意力得分越多。


    從內部介紹自注意力機制

    文章圖片5

    點積縮放注意力機制 和 多頭注意力機制

    如圖所示,自注意力機制包括“縮放點積注意力機制”,和“多頭注意力機制”,點積縮放注意力機制是一種常見的注意力機制,它通過對查詢向量和鍵向量進行點積運算,得到注意力得分,并通過縮放系數對注意力得分進行調整。它在計算效率和表現效果上都有比較好的表現。

    多頭注意力機制則是通過將輸入同時進行多個線性變換,每個變換都有自己的QKV矩陣,并分別計算自己的注意力得分,最后綜合所有變換的輸出得到最終的輸出。因此,多頭注意力機制可以學習到更加豐富和多樣化的特征表示,更好的模型表現能力。

    這里有兩個形象的比喻:

    我們可以將點積縮放注意力機制比作一名學生,他通過思考和計算得到了某個問題的答案。而多頭注意力機制則可以將這個問題交給多個學生來解決,每個學生都有自己獨特的思考方式和解決方案,最后將所有方案綜合起來,得到更加全面和準確的答案。

    想象一下,你去看一部懸疑破案題材的電影,點積縮放機制相當于只看了一次,而多頭注意力機制看了N次電影,如果您只看一次這部電影,你非常有可能錯過一些重要的細節導致無法理解整個故事的全貌。而經過多次反復觀看,你也許就能兼顧到不同的微小細節,就能順理成章地推理出案情的發展走勢。

    看到這里,大家可能要說了,“你說的我都懂,可我現在就想知道Q(query)、K(key)和V(value)是干什么的?”,別著急,下面為大家解答疑惑。具體來說,給定輸入序列的查詢矩陣Q、鍵矩陣K和值矩陣V。這三個向量,是分別由輸入序列經過3次不同的線性變換得到。給定一個輸入序列X,假設其每個元素的向量表示為x_1, x_2, ..., x_n,則對于查詢序列Q、鍵序列K和值序列V,可以通過對同一輸入X的不同線性變換得到,而Transformer本質上是學習Q、K、V三個矩陣的線性變換矩陣:

    著名的Attention-function(注意力函數) 就是通過Q、K、V進行下面的公式計算啦:

    1. 首先計算 QK 之間的點積,為了防止其結果過大,會除以一個其中為d為K向量的維度, 因為如果維度d太大,點積值也會相應變大,這會導致softmax函數推到梯度極小的區域,需要加入縮放因子來盡可能的抵消這種影響,保證在反向傳播時,求梯度更加穩定。
    2. 然后利用softmax操作將其結果歸一化為概率分布,再乘以V就得到權重求和的表示。

    你可以把這個函數看作是一個權重分配函數,它能夠根據輸入的序列和當前處理的位置,計算出一個權重分布,用于表示不同位置的重要性。其中Q用于表示當前處理的位置,而V表示序列中的所有位置,這下應該明白了吧


    使用向量計算 Self-Attention

    下面通過一個例子,讓我們看一下如何使用向量計算 Self-Attention。計算 Self-Attention 的步驟如下:

    文章圖片6

    圖源網絡 詞向量求得其對應的q,k,v向量

    1. 對編碼器的每個輸入向量(每個詞的詞向量)創建三個向量:Query 向量 q、Key 向量 k和 Value 向量 v。它們是通過詞向量分別和 3 個矩陣、、相乘得到的,而這 3 個矩陣則是通過訓練獲得。(注意,這些向量的維數小于詞向量的維數。新向量的維數為 64,而 Embedding 和編碼器輸入/輸出向量的維數為 512。新向量不一定非要更小,這是為了使多頭注意力計算保持一致的結構性選擇。)
    2. 計算注意力分數。假設我們正在計算這個例子中第一個詞 “Thinking” 的自注意力。我們需要根據 “Thinking” 這個詞,對句子中的每個詞都計算一個分數。這些分數決定了我們在編碼 “Thinking” 這個詞時,需要對句子中其他位置的每個詞放置多少的注意力;
    文章圖片7

    圖源網絡 Thinking詞相對Machines 注意力得分是96

    1. 將每個分數除以縮放因子;
    2. 將這些分數進行 softmax 操作;
    文章圖片8

    圖源網絡 對位置詞的注意力分數進行處理

    1. 將每個 softmax 分數分別與每個 Value 向量相乘。這種做法背后的直覺理解是:對于分數高的位置,相乘后的值就越大,我們把更多的注意力放在它們身上;對于分數低的位置,相乘后的值就越小,這些位置的詞可能是相關性不大,我們就可以忽略這些位置的詞。
    2. 將加權 Value 向量(即上一步求得的向量)求和,這樣就得到了自注意力層在這個位置的輸出。
    文章圖片9

    圖源網絡 當前位置詞的注意力計算結果


    使用矩陣計算Self-Attention

    文章圖片10

    圖源網絡 對輸入向量矩陣X求Q、K、V矩陣

    如圖所示,具體計算步驟如下:

    1. 計算 Query,Key 和 Value 矩陣。首先,將所有詞向量放到一個X矩陣中,然后分別和 3 個訓練過的權重矩陣(,,)相乘,得到QKV矩陣。X中的每一行,表示輸入句子中的每一個詞的詞向量(長度為 512,在圖中為 4 個方框),本例中有兩個詞,所以矩陣X維度為(2, 512)。矩陣 Q,K 和 V 中的每一行,分別表示 Q向量,K向量和 V 向量(它們的長度都為 64,在圖中為 3 個方框),矩陣維度為(2, 64);
    2. 計算自注意力。由于這里使用了矩陣進行計算,可以將前面的第 2 步到第 6 步壓縮為一步;
    文章圖片11

    圖源網絡 求自注意力得分


    多頭注意力機制(Multi-head Attention)

    什么是多頭注意力機制?

    多頭注意力機制通過 h 個不同的線性變換對 Q、K 和 V 進行映射;然后,將不同的 Attention 拼接起來;最后,再進行一次線性變換。

    文章圖片12

    多頭注意力機制 論文截圖

    1. 在多頭注意力下,我們為每組注意力單獨維護不同的 Query、Key 和 Value 權重矩陣,從而得到不同的 Query、Key 和 Value 矩陣。
    文章圖片13

    圖源網絡 多頭注意力計算各自的Q,K,V矩陣

    1. 使用不同的權重矩陣進行 n 次自注意力計算,就可以得到 n個不同的Z矩陣。
    文章圖片14

    圖源網絡 8個注意力頭計算得到8個Z矩陣

    1. 將這 n 個矩陣整合為一個矩陣送入前饋神經網絡層。

    具體方法如下:

    ① 將n個矩陣拼接起來 得到;

    將拼接矩陣與權重矩陣與相乘;

    文章圖片15

    圖源網絡 拼接各個注意力頭計算得到的矩陣并與權重矩陣相乘

    以上就是多頭注意力計算的全過程了,感興趣的同學點開下面的圖看一下,數據是如何在多頭注意力機制被矩陣計算的。

    文章圖片16

    圖源網絡 多注意力頭計算Z矩陣的全過程


    總結

    Transformer是一種非常成功的深度學習模型,被廣泛應用于自然語言處理和其他序列相關的任務。其關鍵在于使用了一種新的注意力機制,使得模型能夠學習到不同位置之間的關系。Transformer的注意力機制是一種自注意力機制,它能夠根據輸入序列中的每個元素自適應地計算權重,從而更好地捕捉輸入序列中的信息。具體來說,注意力機制的計算分為三個步驟:

    1. 計算Q、K、V矩陣。將輸入序列分別映射到三個不同的向量空間,得到查詢向量Q、鍵向量K和值向量V。
    2. 計算注意力分數。將Q和K進行點積,然后將結果除以一個縮放因子,再通過softmax函數獲得注意力分數。這些分數用于加權V向量,產生加權和,這就是注意力表示。
    3. 計算最終輸出。將每個注意力表示連接起來,然后通過一個線性層將其映射到期望的輸出維度。最終的輸出可以看作是所有輸入元素的加權和,權重是通過注意力機制自適應計算的。

    關注我,每天一起學習,不一樣的知識!

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲欧美日韩中文在线制服| 无码国内精品久久人妻蜜桃| 久久亚洲男人第一AV网站| 亚洲欧洲精品一区二区| 欧美饥渴熟妇高潮喷水| 成人片黄网站色大片免费观看软件| 亚洲国产在一区二区三区| 亚洲伊人久久综合影院| 午夜毛片不卡免费观看视频| 在线理论三级午夜电影| 动漫av网站免费观看| 噜噜久久噜噜久久鬼88| 亚洲AV无码之国产精品网址 | 东方四虎av在线观看| 亚洲中文字幕无码久久精品1| 国产成人精品999在线观看| 欧美成人VA免费大片视频| 亚洲国产午夜精品理论片妓女| 亚洲AV午夜成人无码电影| 婷婷久久综合九色综合88| 国产亚洲999精品AA片在线爽| 国产欧美日韩精品丝袜高跟鞋| 国产卡一卡二卡三精品| 国产成人不卡一区二区| 人妻在线无码一区二区三区| 99国精品午夜福利视频不卡99| 精品无码国产自产在线观看水浒传 | 亚洲精品无码久久一线| 亚洲AV日韩AV激情亚洲| 国产MD视频一区二区三区| 国内精品一区二区不卡| 精品乱码无人区一区二区| 爱性久久久久久久久| 中文 在线 日韩 亚洲 欧美| 又色又爽又黄的视频网站| 韩国无码AV片午夜福利| 国产又大又硬又粗| 欧美牲交A欧美牲交| 久久亚洲精品情侣| 亚洲成在人线AV品善网好看| 性色欲情网站iwww九文堂|