电竞比分网-中国电竞赛事及体育赛事平台

分享

Transformer網(wǎng)絡(luò)解讀

 漢無為 2023-09-25

終于到序列模型課程最后一周的內(nèi)容了,本篇博客依然是基于Andrew Ng的深度學習專項課程的序列模型來編寫的,本篇內(nèi)容不會很多,主要就是Transformer網(wǎng)絡(luò)相關(guān)的知識點,Transformer網(wǎng)絡(luò)是一種基于注意力機制的神經(jīng)網(wǎng)絡(luò)架構(gòu),被廣泛應(yīng)用于自然語言處理領(lǐng)域,尤其是機器翻譯任務(wù)中。本文將詳細介紹Transformer網(wǎng)絡(luò)的關(guān)鍵概念和工作原理。廢話不多說,現(xiàn)在開始吧。

Transformer 網(wǎng)絡(luò)介紹

我們前面講解過在序列模型中常用的技術(shù)包括RNN、GRU和LSTM,這些模型雖然解決了一些問題,包括梯度消失、長距離依賴等,但模型的復(fù)雜度也隨之增加了不少。它們都是順序模型,會將輸入一個詞或一個標記地順序處理。顯然這樣的處理性能是比較弱的。

Transformer架構(gòu)創(chuàng)新性地將注意力機制和CNN相結(jié)合,允許我們對整個序列進行并行計算,可以一次處理整個句子,而不是從左到右逐詞處理。它的核心理念主要是自注意力(Self Attention)和多頭注意力(Multi-Head Attention) 這兩點。
簡單來說,如果我們有一個包含5個詞的句子,自注意的目標是并行地為這五個詞計算出五個標識。而多頭注意力就是對自注意力過程進行循環(huán),從而得到這些表示的多個版本,這些表示是非常豐富的,可以用于機器翻譯或其他NLP任務(wù)。

Self-Attention

自注意力(Self-Attention)機制是Transformer網(wǎng)絡(luò)的核心組件。它可以對序列進行并行計算,為序列中的每個詞匯生成一個注意力向量,表示其在特定上下文中的含義。

自注意力機制可以幫助我們理解每個單詞在特定上下文中的含義。比如,'Africa'這個詞,在不同的上下文中可能代表歷史興趣的地點,或者假期的目的地,或者世界第二大洲。自注意力機制會根據(jù)周圍的單詞來確定在此句子中我們談?wù)摰?非洲'的最合適的表示方式。

圖片

自注意力機制為序列中每個詞匯計算出一個Query向量、Key向量和Value向量。其具體計算步驟如下:

  1. 首先,我們將每個單詞與查詢、鍵和值對應(yīng)起來。這些對由學習到的矩陣和該單詞的嵌入向量相乘得到。

  2. 查詢可以看作是對單詞的一個問題,例如,對'Africa'的問題可能是'那里發(fā)生了什么?'。

  3. 我們計算查詢和每個鍵的內(nèi)積,來確定其他單詞對查詢問題的回答的質(zhì)量。

  4. 我們對所有內(nèi)積結(jié)果進行softmax運算,這樣可以獲得每個單詞的注意力值。

  5. 最后,我們將得到的softmax值與相應(yīng)單詞的值向量相乘,并將結(jié)果相加,得到的就是我們需要的自注意力表示。

自注意力機制的優(yōu)點在于可以根據(jù)整個序列的上下文來獲得每個詞匯的表示,而非僅依賴于臨近詞匯。同時,其并行計算性質(zhì)也大大提升了模型的訓(xùn)練和推理效率。

我們對序列中的所有單詞執(zhí)行上述計算過程,以獲取相應(yīng)的自注意力表示。最后,所有這些計算可以由Attention(Q, K, V)進行概括,其中Q,K,V是所有查詢、鍵和值的矩陣。值得注意的是,這里Query、Key、Value矩陣的計算都使用了不同的權(quán)重矩陣,這使得自注意力機制可以學習輸入序列的不同表示。

圖片

自注意力機制的結(jié)果是每個詞的表示都更為豐富和細致,因為它考慮了每個詞左右的上下文。

Multi-Head Attention

Multi-Head Attention 機制對自注意力機制進行拓展,允許模型聯(lián)合學習序列的不同表示子空間。

多頭注意力將輸入序列重復(fù)進行自注意力計算n次,每次使用不同的權(quán)重矩陣,得到n個注意力向量序列。然后將這n個序列拼接并線性轉(zhuǎn)換,得到最終的序列表示,即:

圖片

圖片

每次計算一個序列的自注意力被稱為一個'頭',因此,'多頭注意力'就是多次進行自注意力計算。每個'頭'可能對應(yīng)著不同的問題,例如第一個'頭'可能關(guān)注'發(fā)生了什么',第二個'頭'可能關(guān)注'何時發(fā)生',第三個'頭'可能關(guān)注'與誰有關(guān)'等等。

多頭注意力的計算過程與自注意力基本一致,但是使用了不同的權(quán)重矩陣(,并且將所有的注意力向量(一般情況下是8個)進行拼接,再乘以一個權(quán)重矩陣,最后得到的結(jié)果就是多頭注意力的輸出。在實際計算中,由于不同'頭'的計算互不影響,可以同時計算所有的'頭',即并行計算,以提高計算效率。

總的來說,多頭注意力機制可以為每個單詞學習到更豐富、更好的表示,每個'頭'都能從不同的角度去理解序列中的每個單詞。

Transformer 網(wǎng)絡(luò)

在Transformer網(wǎng)絡(luò)中,Encoder和Decoder均由多頭注意力層和全連接前饋網(wǎng)絡(luò)組成,網(wǎng)絡(luò)的高層結(jié)構(gòu)如下:

  • Encoder由N個編碼器塊(Encoder Block)串聯(lián)組成,每個編碼器塊包含:

    • 一個多頭注意力(Multi-Head Attention)層

    • 一個前饋全連接神經(jīng)網(wǎng)絡(luò)(Feed Forward Neural Network)

  • Decoder也由N個解碼器塊(Decoder Block)串聯(lián)組成,每個解碼器塊包含:

    • 一個多頭注意力層

    • 一個對Encoder輸出的多頭注意力層

    • 一個前饋全連接神經(jīng)網(wǎng)絡(luò)

圖片

我們以一個法語翻譯成英語的例子來講解這個過程:

  1. 首先,輸入句子的嵌入會被傳遞到編碼器塊,該塊具有多頭注意力機制。將嵌入和權(quán)重矩陣計算出的Q,K和V值輸入到這個模塊,然后生成一個可以傳遞到前饋神經(jīng)網(wǎng)絡(luò)的矩陣,用于確定句子中有趣的特性。在Transformer的論文中,這個編碼塊會被重復(fù)N次,一般N的值為6。

  2. 然后,編碼器的輸出會被輸入到解碼器塊。解碼器的任務(wù)是輸出英文翻譯。解碼器塊的每一步都會輸入已經(jīng)生成的翻譯的前幾個單詞。當我們剛開始時,唯一知道的是翻譯會以一個開始句子的標記開始。這個標記被輸入到多頭注意力塊,并用于計算這個多頭注意力塊的Q,K和V。這個塊的輸出會用于生成下一個多頭注意力塊的Q矩陣,而編碼器的輸出會用于生成K和V。

  3. 解碼器塊的輸出被輸入到前饋神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)的任務(wù)是預(yù)測句子中的下一個單詞。
    除了主要的編碼器和解碼器塊,Transformer Network還有一些額外的特性:

  • 位置編碼:對輸入進行位置編碼,以便在翻譯中考慮單詞在句子中的位置。使用一組正弦和余弦方程來實現(xiàn)。

  • 殘差連接:除了將位置編碼添加到嵌入中,還通過殘差連接將它們傳遞到網(wǎng)絡(luò)中。這與之前在ResNet中看到的殘差連接類似,其目的是在整個架構(gòu)中傳遞位置信息。

  • Adenome層:Adenome層類似于BatchNorm層,其目的是傳遞位置信息。

  • 遮掩多頭注意力:這只在訓(xùn)練過程中重要,它模擬網(wǎng)絡(luò)在預(yù)測時的行為,看看給定正確的前半部分翻譯,神經(jīng)網(wǎng)絡(luò)是否能準確地預(yù)測序列中的下一個單詞。

總結(jié)

Transformer網(wǎng)絡(luò)通過引入自注意力和多頭注意力等機制,實現(xiàn)了序列建模的質(zhì)的飛躍,在機器翻譯、文本摘要、問答系統(tǒng)等任務(wù)上都取得了極大的成功。研究表明,其并行計算結(jié)構(gòu)也使Transformer網(wǎng)絡(luò)相比RNN等模型具有顯著的計算效率優(yōu)勢,如今百家爭鳴的大模型底層其實也離不開它的身影,理解它對于學習那些大語言模型是非常有幫助的。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多