AI——自然語言訓練模型(Bert模型)之Transformer詳解

      網友投稿 1108 2025-03-31

      Transformer學習

      細摳Transformer

      Self-Attention詳解

      如何計算encoder self attention?

      muti-headed attention

      用位置編碼表示句子的序列中詞的順序

      殘差

      AI——自然語言預訓練模型(Bert模型)之Transformer詳解

      Decoder 部分

      最后的Linear和softmax層

      基礎:Attention model

      A High-Level Look

      模型如何運作?

      細摳Transformer

      基礎:Attention model

      attention model是從輸入句中產生h1…hm的hidden state,通過attention score α 乘上input 的序列加權求和得到Context vector c_{i},有了context vector和hidden state vector,便可計算目標句

      輸入句中的每個文字是由一系列成對的 所構成,而目標中的每個文字是Query,那麼就可以用Key(文字), Value(word embedding), Query(目標文字)去重新解釋如何計算context vector,透過計算Query和各個Key的相似性,得到每個Key對應Value的權重系數(attention score),再對Value進行加權求和,得到最后的Attention/Context vector。

      上圖(左)中Query和各個Key的相似性是score e_{ij}= Similarity(Query, Key_{i}),計算方法是內積,我們通過softmax算出Softmax(sim_{i})=a_{i}得到attention score a_{i},然后透過attention score a_{i}乘上Value_{i}的序列和加總所得 = Attention(Query, Source)。

      A High-Level Look

      首先把模型看做一個黑箱子:

      在機器翻譯任務中,就是輸入一個語言的一句話,輸出另一語言對應的翻譯。

      把黑箱子打開看:

      我們可以看到一個編碼組件、一個解碼組件,和它倆之間的鏈接。

      編碼組件就是一堆編碼器的堆疊(論文中用了6個),同樣解碼組件就是6個解碼器堆疊在一起。

      編碼器之間參數不共享,每個編碼器可分解為兩層:

      輸入數據首先流向一個自注意力層-這一層的作用是通過句子中的其他單詞,針對某個特定的詞進行編碼,自注意力層的輸出流入一個前饋的神經網絡,所以這樣每一個編碼器都重點關注輸入的句子中的某個詞。

      一個decoder是在自注意力層和前饋網絡層中間再加一個attention layer

      模型如何運作?

      首先我們把輸入的單詞轉為詞向量。

      編碼之后的詞向量再分別的流向encoder里面的兩層網絡。

      Self-Attention詳解

      我們輸入一句話:”The animal didn’t cross the street because it was too tired”。

      “it”是指什么?動物?街道?自注意力機制的作用就是把“it”和“animal”聯系起來;

      當模型處理每個詞的時候,自注意力機制將句子中的其他詞作為線索,針對某個特定的詞進行更好的編碼,所以自注意力機制其實就是通過句子中的其他單詞去理解某一個單詞的方法。

      如何計算encoder self attention?

      第一步是創造三個encoder的輸入向量Q,K,V,舉例來說,“Are you very big?”中的每一個字的隱向量都有各自的Q,K,V,是通過詞向量乘一個初始化矩陣得到,論文中是512維。Q,K,V的維數都比詞向量要小,論文中是64維。

      第二步通過內積計算score (相似得分),假設我們在計算第一個字”Are”的self-attention,我們可能會將輸入句中的每個文字”Are”, ”you”, ‘very’, ‘big’分別和”Are”去做比較,這個分數決定了我們在encode某個特定位置的文字時,應該給予多少注意力(attention)。所以當我們在計算#位置1的self-attention,第一個分數是q1、k1的內積 (“Are vs Are”),第二個分數則是q1、k2 (“Are vs you”),以此類推。

      第三步是將算出的分數除以根號d_{k},論文中是64,目的是避免內積過大時,softmax產出的結果非0即1。然后第四步就是通過softmax得出attention score,表示在這個位置上我們應該放多少注意力。

      第五步是用value vector乘以上面算出的softmax注意力得分,目的是保留我們集中注意力的單詞的value,同時稀釋那些不相關的詞的value。

      第六步就是把上一步加權的value加總,得到自注意力層的輸出值z。

      在實際操作中,是直接將每個文字同時處理,因此會變成一個矩陣,而非單一詞向量,計算后的結果attention vector也會變成attention matrix Z:

      6. 計算Query, Key, and Value 矩陣:把通過訓練得到的權重矩陣(WQ, WK, WV)和詞向量X相乘

      使用矩陣乘法,我們就能把前面計算self-attention的六步合并成一步:

      muti-headed attention

      論文在自注意力機制的基礎上又加了一個多頭注意力機制,這個機制從兩個方面增強了注意力層的表現:

      增加了模型將注意力集中在多個不同位置的能力

      muti-headed attention可以使我們擁有多組的 Query/Key/Value 權重矩陣(論文中是8組)。每一組都隨機初始化經過訓練之后,能夠將輸入的詞向量轉化為具有不同代表意義的子空間(different representation subspace)

      通過將詞向量與8個不同的權重矩陣相乘,我們得到的事8個不同的Z矩陣

      然而前饋層只處理一個矩陣而不是8個,所以我們要把8個壓縮成1個,方法就是再創造一個權重矩陣WO:

      所以multi-headed attention整個流程串起來就是:

      那么不同的attention head的注意力都集中在什么地方呢? 我們先看一個例子:

      給“it”編碼時,一個attention head集中在“animal”,另一個集中在“tired”

      但是當我們把全部的attention head都加上時,卻變得難以解釋:

      用位置編碼表示句子的序列中詞的順序

      Transformer 給每個輸入的詞向量又加了一個向量,這些向量的作用的定義每個詞在句子中的位置以及不同詞之間的距離:

      假設位置向量是4維的,那么例子中的位置向量就長這樣:

      那么為什么長這樣呢?

      下圖中每行都代表一個字的位置向量,那么第一行就是位置中的第一個詞,每行是512維的向量,每個值都是-1-1之間。 可以看到在一半的位置(第255維左右),圖被劈了一半,因為左半邊的值是sine算的,右半邊用cosine算的;具體的可以自己看論文,代碼get_timing_signal_1d():

      殘差

      對于每個encoder里面的每個sub-layer,它們都有一個殘差的連接(不懂?),而且每個sub-layer后面還有一步 layer-normalization(不懂,以后再看)。

      具體長這樣(不懂):

      對于decoder模塊也是一樣的操作:

      Decoder 部分

      encoder部分說完了,decoder怎么工作也有了大致的了解,那么它倆是怎么一起工作的呢?

      最后一層encoder的輸出會被轉化為一組attention vector:K和V。 然后這一組attention vector會再decoder層的encoder-decoder attention層被用到,目的是幫助decoder專注在輸入序列中合適的位置:

      接著重復上面的步驟,直到decoder全部輸出完成

      decoder中的self-attention layer和encoder中的有一點區別:在decoder中,自注意力層只能處理輸出序列中當前詞之前的序列,做法是在計算softmax之前把后面的詞都設成 -inf。

      “Encoder-Decoder Attention”層就和multiheaded self-attention的運作方式一樣。

      最后的Linear和softmax層

      Linear層就是一個全連接網絡,作用是把decoder輸出的向量映射到一個大很多的logits 向量上。

      比如模型從訓練集中學會10,000個英文單詞,那么logits vector就是10000維的,沒一維對應一個詞,記過softmax計算后輸出分數最高的那個詞就是這一步的輸出

      相關Transformer必讀文章一:https://www.cnblogs.com/huangyc/p/9813907.html

      相關Transformer必讀文章二:https://www.jianshu.com/p/feaf7138c847

      相關Transformer必讀文章三(與本文區別):https://blog.csdn.net/qq_41664845/article/details/84969266

      相關Transformer詳細原理必讀文章四:https://blog.csdn.net/randompeople/article/details/90651250

      相關Transformer必讀文章五:https://blog.csdn.net/weixin_40005743/article/details/85460869

      人工智能 AI

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps表格凍結窗口怎樣設置(wps表格怎么取消凍結窗口)
      下一篇:Excel使用公式快速從列中提取唯一值
      相關文章
      国产99在线|亚洲| 亚洲人成片在线观看| 亚洲免费福利在线视频| 久久国产精品亚洲综合| 亚洲精品无码成人AAA片| 自拍偷自拍亚洲精品第1页| 亚洲国产精品毛片av不卡在线| 亚洲gay片在线gv网站| 亚洲日本VA中文字幕久久道具| 亚洲无mate20pro麻豆| 亚洲avav天堂av在线网爱情| 亚洲区视频在线观看| 亚洲成人福利网站| 亚洲午夜精品国产电影在线观看| 亚洲网址在线观看| 亚洲精品中文字幕乱码影院| 91午夜精品亚洲一区二区三区| 亚洲欧洲校园自拍都市| 亚洲国产精品成人精品小说| 亚洲人成影院在线高清| 亚洲不卡1卡2卡三卡2021麻豆| 亚洲专区中文字幕| 亚洲精品无码专区在线| 亚洲1区2区3区精华液| 国产成人亚洲精品无码AV大片| 国产成人亚洲精品无码AV大片 | 亚洲av日韩精品久久久久久a| 亚洲国产欧美国产综合一区| 亚洲a∨无码精品色午夜| 亚洲AⅤ视频一区二区三区| 国产精品亚洲产品一区二区三区| 久久影视国产亚洲| 亚洲国产精品va在线播放| 亚洲成人中文字幕| 亚洲小说图片视频| 亚洲高清一区二区三区电影| va亚洲va日韩不卡在线观看| 亚洲日韩在线第一页| 国产亚洲综合色就色| 亚洲精品无码久久久久久久| 亚洲日韩国产精品乱-久|