終于到序列模型課程最后一周的內容了,本篇博客依然是基于Andrew Ng的深度學習專項課程的序列模型來編寫的,本篇內容不會很多,主要就是Transformer網絡相關的知識點,Transformer網絡是一種基于注意力機制的神經網絡架構,被廣泛應用于自然語言處理領域,尤其是機器翻譯任務中。本文將詳細介紹Transformer網絡的關鍵概念和工作原理。廢話不多說,現在開始吧。 Transformer 網絡介紹我們前面講解過在序列模型中常用的技術包括RNN、GRU和LSTM,這些模型雖然解決了一些問題,包括梯度消失、長距離依賴等,但模型的復雜度也隨之增加了不少。它們都是順序模型,會將輸入一個詞或一個標記地順序處理。顯然這樣的處理性能是比較弱的。 Transformer架構創新性地將注意力機制和CNN相結合,允許我們對整個序列進行并行計算,可以一次處理整個句子,而不是從左到右逐詞處理。它的核心理念主要是自注意力(Self Attention)和多頭注意力(Multi-Head Attention) 這兩點。 Self-Attention自注意力(Self-Attention)機制是Transformer網絡的核心組件。它可以對序列進行并行計算,為序列中的每個詞匯生成一個注意力向量,表示其在特定上下文中的含義。 自注意力機制可以幫助我們理解每個單詞在特定上下文中的含義。比如,'Africa'這個詞,在不同的上下文中可能代表歷史興趣的地點,或者假期的目的地,或者世界第二大洲。自注意力機制會根據周圍的單詞來確定在此句子中我們談論的'非洲'的最合適的表示方式。 ![]() 自注意力機制為序列中每個詞匯計算出一個Query向量、Key向量和Value向量。其具體計算步驟如下:
自注意力機制的優點在于可以根據整個序列的上下文來獲得每個詞匯的表示,而非僅依賴于臨近詞匯。同時,其并行計算性質也大大提升了模型的訓練和推理效率。 我們對序列中的所有單詞執行上述計算過程,以獲取相應的自注意力表示。最后,所有這些計算可以由Attention(Q, K, V)進行概括,其中Q,K,V是所有查詢、鍵和值的矩陣。值得注意的是,這里Query、Key、Value矩陣的計算都使用了不同的權重矩陣,這使得自注意力機制可以學習輸入序列的不同表示。 ![]() 自注意力機制的結果是每個詞的表示都更為豐富和細致,因為它考慮了每個詞左右的上下文。 Multi-Head AttentionMulti-Head Attention 機制對自注意力機制進行拓展,允許模型聯合學習序列的不同表示子空間。 多頭注意力將輸入序列重復進行自注意力計算n次,每次使用不同的權重矩陣,得到n個注意力向量序列。然后將這n個序列拼接并線性轉換,得到最終的序列表示,即: 每次計算一個序列的自注意力被稱為一個'頭',因此,'多頭注意力'就是多次進行自注意力計算。每個'頭'可能對應著不同的問題,例如第一個'頭'可能關注'發生了什么',第二個'頭'可能關注'何時發生',第三個'頭'可能關注'與誰有關'等等。 多頭注意力的計算過程與自注意力基本一致,但是使用了不同的權重矩陣(,并且將所有的注意力向量(一般情況下是8個)進行拼接,再乘以一個權重矩陣,最后得到的結果就是多頭注意力的輸出。在實際計算中,由于不同'頭'的計算互不影響,可以同時計算所有的'頭',即并行計算,以提高計算效率。 總的來說,多頭注意力機制可以為每個單詞學習到更豐富、更好的表示,每個'頭'都能從不同的角度去理解序列中的每個單詞。 Transformer 網絡在Transformer網絡中,Encoder和Decoder均由多頭注意力層和全連接前饋網絡組成,網絡的高層結構如下:
![]() 我們以一個法語翻譯成英語的例子來講解這個過程:
總結Transformer網絡通過引入自注意力和多頭注意力等機制,實現了序列建模的質的飛躍,在機器翻譯、文本摘要、問答系統等任務上都取得了極大的成功。研究表明,其并行計算結構也使Transformer網絡相比RNN等模型具有顯著的計算效率優勢,如今百家爭鳴的大模型底層其實也離不開它的身影,理解它對于學習那些大語言模型是非常有幫助的。 |
|
來自: 漢無為 > 《Transform》