日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【NLP】Transformer自注意机制代码实现

發布時間:2025/3/12 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NLP】Transformer自注意机制代码实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | Ashis Kumar Panda

編譯 | VK
來源 | Towards Data Science

在開始這篇博文之前,我強烈建議訪問我先前的關于Transformers 概述的博文。為了更好地利用這個博客,請按以下順序查看我以前的博客文章。

  • Transformers — Yo_just need Attention(https://machinelearningmarvel.in/transformers-you-just-need-attention/)

  • Intuitive Maths and Code behind Self-Attention Mechanism of Transformers(https://machinelearningmarvel.in/intuitive-maths-and-code-behind-self-attention-mechanism-of-transformers-for-dummies/)

  • Concepts about Positional Encoding Yo_Might Not Know About(https://machinelearningmarvel.in/concepts-about-positional-encoding-you-might-not-know-about/)

  • 這篇博文將深入了解注意機制的細節,并使用python從頭開始創建一個注意機制。代碼和直觀的數學解釋將齊頭并進。

    我們要學什么?

  • 注意機制概念

  • 自注意機制的步驟(直覺數學理論和代碼)

    • 輸入預處理

    • 查詢、鍵和值矩陣

    • 注意分數的概念

  • 多頭自注意機制

  • 所以不要再耽擱了,我們開始吧。


    注意機制概念

    正如前一篇文章所討論的,當一個句子通過注意機制時會發生什么。例如,假設我們有一個句子“He took the hat and examined it carefully”,注意機制通過記住每個單詞與句子中其他單詞的關系來創建每個單詞的表示(嵌入)。

    在上面的句子中,注意機制對句子的理解如此之深,以至于它可以將“it”與“hat”聯系起來,而不是與“He”聯系起來。


    自注意機制的步驟

    1.輸入正確的格式

    我們現在都知道文本輸入不適合由Transformer/計算機解釋。因此,我們用數字向量來表示文本中的每個單詞。讓我們為一個句子創建嵌入,例如:-“This is book”,假設嵌入維數為5,那么每個單詞都有一個長度為5的向量,如下所示。

    Transformer輸入

    print(f”Shape?is?:-?{np.random.randn(3,5).shape}”) X=np.random.randn(3,5) X

    Output:-

    根據上面的輸入矩陣,我們將創建兩個新矩陣,即鍵矩陣、查詢矩陣和值矩陣。矩陣在注意機制中起著至關重要的作用。讓我們看看怎么做?

    2.獲取查詢、鍵值矩陣

    首先,我們需要查詢、鍵和值權重矩陣。目前,我們已經隨機初始化了它,但實際上,就像神經網絡中的任何其他權重一樣,這些都是在訓練過程中學習的參數。最后使用最優權重。假設這些權重是代碼中所示的最佳權重。下面總結了我們在代碼部分將要做的工作

    query矩陣的優化權值

    weight_of_query=np.random.randn(5,3) weight_of_query

    Output:-

    key矩陣的優化權重

    weight_of_key=np.random.randn(5,3) weight_of_key

    Output:-

    value矩陣的優化權重

    weight_of_values=np.random.randn(5,3) weight_of_values

    Output:-

    這些權重將乘以我們的輸入矩陣(X),從而得到最終的鍵、查詢和值矩陣

    key矩陣的計算

    Key=np.matmul(X,weight_of_key) Key

    query矩陣的計算

    Query=np.matmul(X,weight_of_query) Query

    value矩陣的計算

    Values=np.matmul(X,weight_of_values) Values

    查詢、關鍵字和值矩陣中的第一行表示“This”詞的查詢、關鍵字和值向量,以此類推。到目前為止,查詢、鍵和值矩陣可能意義不大。讓我們看看自我注意機制是如何通過使用查詢、鍵和值向量來發現每個單詞與句子中其他單詞的關系,從而創建每個單詞的表示(嵌入)的。

    3.注意得分

    注意公式:

    dimension=5 Scores=np.matmul(Query,Key.T)/np.sqrt(dimension) Scores

    在Q.K(轉置)中發生的是查詢和鍵矩陣之間的點積,點積定義了相似性,如下圖所示。

    注意:- 以下圖片中的數字都是為了解釋而虛構的

    所以在查詢向量q1(This)和所有關鍵向量k1(This)、k2(is)、k3(book)之間有一個點積。

    這個計算告訴我們查詢向量q1(This)如何與鍵矩陣k1(This)、k2(is)、k3(book)中的每個向量相關/相似。同樣,如果我們關注最終的輸出矩陣,我們可以看到每個單詞比句子中的任何其他單詞都更相關,如對角線矩陣所示。這是因為點積值更高。

    其次,“This”一詞與上圖中以紅色突出顯示的“book”更相關。如代碼的最后一部分所示,我們將Q.K(轉置)除以sqrt(維數)。這是一種標準化步驟,在這里進行,以使梯度穩定。

    下面代碼中的Softmax有助于將其置于0和1的范圍內,并分配概率值。

    from?scipy.special?import?softmax Softmax_attention_scores=np.array([softmax(x)?for?x?in?Scores]) Softmax_attention_scores

    上述矩陣是中間softmax標度注意得分矩陣,其中每行對應于順序中每個單詞的中間注意得分/概率得分。它顯示了每個詞是如何與其他詞的概率。為了得到最終的注意向量,我們將上述分數乘以值矩陣并求和。總結了與“This”相對應的三個注意向量。

    在下面的代碼片段中,softmax_attention_scores[0][0]是該特定單詞的權重,Values[0]是對應于單詞“This”的值向量,依此類推。

    Softmax_attention_scores[0][0]*Values[0]+\ Softmax_attention_scores[0][1]*Values[1]+\ Softmax_attention_scores[0][2]*Values[2]

    類似地,我們可以計算像is和book這樣的詞的注意力。這就是自注意的機制。接下來,我們將探討多頭注意機制,它的基本原理來自于自我注意機制。


    多頭自注意機制

    簡單地說,多頭注意機制就是多個自我注意機制串聯在一起。如果我們將每個自我注意流/過程表示為一個頭部,那么我們將把所有的自注意機制連接在一起,得到一個多頭注意機制。

    當我們在一篇即將發表的博文中進行實際操作時,我們將看到每個編碼器的輸出尺寸為512,總共有8個頭。所以所發生的是,每個自注意模塊都會輸出到一個(no_of_words_in_sentence,64個)維矩陣。

    當所有這些維度串聯起來時,我們將看到最后的矩陣將是(no_of_words_in_sentence,(64*8)=512)維。最后一步是將連接的頭部乘以一個權重矩陣(假設在這個過程中權重矩陣已經訓練過),這將是我們多頭部注意力的輸出。


    在我們的下一篇博文中,我們將討論Hugging Face Transformers 的實現。如果你覺得這有幫助,請隨時查看其他博客文章

  • Transformers — Yo_just need Attention(https://machinelearningmarvel.in/transformers-you-just-need-attention/)

  • Intuitive Maths and Code behind Self-Attention Mechanism of Transformers(https://machinelearningmarvel.in/intuitive-maths-and-code-behind-self-attention-mechanism-of-transformers-for-dummies/)

  • Concepts about Positional Encoding Yo_Might Not Know About(https://machinelearningmarvel.in/concepts-about-positional-encoding-you-might-not-know-about/)

  • 往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯黃海廣老師《機器學習課程》課件合集 本站qq群851320808,加入微信群請掃碼:

    總結

    以上是生活随笔為你收集整理的【NLP】Transformer自注意机制代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。