
前言本文將深入剖析Transformer的內部工作原理詳細研究其運作細節。我們將通過實際的矩陣表示和形狀觀察數據如何在系統中流動并理解每個階段進行的計算。本文目標不僅是理解Transformer是如何工作的更要探究它為何如此工作。架構概覽正如我們在第一部分中看到的Transformer架構的主要組件包括編碼器和解碼器的數據輸入包括嵌入層位置編碼層編碼器堆棧由多個編碼器組成每個編碼器內部包含多頭注意力層前饋神經網絡層解碼器堆棧則由多個解碼器組成每個解碼器內部包含兩個多頭注意力層前饋神經網絡層輸出右上角——生成最終輸出包含線性層Softmax層為了理解每個組件的作用讓我們以訓練Transformer解決翻譯問題為例來逐步了解它的工作原理。我們將使用訓練數據中的一個樣本該樣本由輸入序列英文“You are welcome”和目標序列西班牙文“De nada”組成。嵌入與位置編碼與任何自然語言處理NLP模型一樣Transformer需要了解每個單詞的兩方面信息——單詞的含義及其在序列中的位置。嵌入層負責編碼單詞的含義。位置編碼層負責表示單詞在序列中的位置。Transformer通過將這兩個編碼相加來結合這兩方面的信息。嵌入處理Transformer具有兩個嵌入層輸入序列被送入第一個嵌入層即輸入嵌入層。目標序列在向右移動一個位置并在第一個位置插入一個開始標記后被送入第二個嵌入層。請注意在推理過程中我們沒有目標序列而是將輸出序列循環地送入這個第二層因此它被稱為輸出嵌入。文本序列通過詞匯表被映射為數字形式的單詞ID然后嵌入層將每個輸入單詞映射到一個嵌入向量中這個向量是該單詞含義的更豐富表示。位置編碼由于循環神經網絡RNN通過順序輸入每個單詞來實現循環因此它隱式地知道每個單詞的位置。然而Transformer不使用RNN且序列中的所有單詞都是并行輸入的。這是它相對于RNN架構的主要優勢但也意味著位置信息丟失了需要單獨添加回來。與兩個嵌入層類似也有兩個位置編碼層。位置編碼是根據輸入序列獨立計算的。這些值是固定的僅取決于序列的最大長度。例如第一個元素是一個表示第一個位置的常量編碼第二個元素是一個表示第二個位置的常量編碼以此類推這些常量通過使用以下公式計算得出其中pos 是單詞在序列中的位置d_model 是編碼向量的長度與嵌入向量相同i 是該向量的索引值換句話說它通過正弦曲線和余弦曲線的交錯來編碼偶數索引使用正弦值奇數索引使用余弦值。例如如果我們編碼一個40個單詞的序列我們可以看到下面幾個單詞位置編碼索引組合的編碼值。藍色曲線顯示了所有40個單詞位置的第0個索引的編碼橙色曲線顯示了所有40個單詞位置的第1個索引的編碼剩余的索引值也會有類似的曲線。矩陣維度我們知道深度學習模型一次處理一批訓練樣本。嵌入層和位置編碼層在代表一批序列樣本的矩陣上操作。嵌入層接受一個形狀為樣本數序列長度的單詞ID矩陣將每個單詞ID編碼為一個長度等于嵌入大小的詞向量從而生成一個形狀為樣本數序列長度嵌入大小的輸出矩陣。位置編碼使用與嵌入大小相等的編碼大小因此它產生一個形狀相似的矩陣該矩陣可以與嵌入矩陣相加。嵌入層和位置編碼層產生的樣本數序列長度嵌入大小形狀在Transformer中一直保持不變直到數據流經編碼器和解碼器堆棧最后被最終輸出層重新塑形。這給出了Transformer中3D矩陣維度的概念然而為了簡化可視化從現在起我們將省略第一維對于樣本并使用單個樣本的2D表示。輸入嵌入將其輸出發送到編碼器。類似地輸出嵌入將其輸出送入解碼器。編碼器編碼器和解碼器堆棧分別由幾個通常是六個編碼器和解碼器順序連接而成。堆棧中的第一個編碼器從嵌入層和位置編碼接收輸入。堆棧中的其他編碼器從前一個編碼器接收輸入。編碼器將其輸入傳遞給多頭自注意力層。自注意力層的輸出被傳遞到前饋神經網絡層然后將其輸出向上傳遞到下一個編碼器。自注意力層和前饋神經網絡子層都圍繞它們有一個殘差跳躍連接之后是層歸一化。如下所述最后一個編碼器的輸出被送入解碼器堆棧中的每個解碼器。解碼器解碼器的結構與編碼器非常相似但有一些不同。與編碼器一樣堆棧中的第一個解碼器從輸出嵌入和位置編碼接收輸入。堆棧中的其他解碼器從前一個解碼器接收輸入。解碼器將其輸入傳遞給多頭自注意力層。但這與編碼器中的自注意力層工作方式略有不同。它只允許關注序列中較早的位置這是通過屏蔽未來位置來實現的稍后將詳細介紹。與編碼器不同解碼器包含第二層多頭注意力機制即編碼器-解碼器注意力層。編碼器-解碼器注意力層的工作原理類似于自注意力機制但其特殊之處在于它結合了兩種輸入源其下方的自注意力層輸出以及編碼器堆疊的輸出。自注意力層的輸出會傳遞給一個前饋神經網絡層該層隨后將其輸出向上傳遞至下一個解碼器。這三個子層——自注意力層、編碼器-解碼器注意力層以及前饋神經網絡層——都圍繞殘差連接進行之后進行層歸一化。注意力機制在第一部分中我們討論了為什么在處理序列時注意力機制如此重要。在Transformer模型中注意力機制在三個地方被使用編碼器的自注意力輸入序列關注自身解碼器的自注意力目標序列關注自身解碼器的編碼器-解碼器注意力目標序列關注輸入序列注意力層通過三個參數接收輸入分別稱為查詢Query、鍵Key和值Value。在編碼器的自注意力中編碼器的輸入被傳遞給這三個參數。在解碼器的自注意力中解碼器的輸入同樣被傳遞給這三個參數。在解碼器的編碼器-解碼器注意力中編碼器堆疊的最終輸出被傳遞給值Value和鍵Key參數而其下方的自注意力及層歸一化模塊的輸出被傳遞給查詢Query參數。多頭注意力Transformer將每個注意力處理單元稱為一個注意力頭并并行重復多次這稱為多頭注意力。它通過組合多個類似的注意力計算結果增強了注意力機制的區分能力。查詢Query、鍵Key和值Value各自通過獨立的線性層各層具有自己的權重傳遞產生三個結果分別稱為Q、K、V。然后使用下面的注意力公式將這些結果組合起來生成注意力分數。重要的是要認識到Q、K、V值攜帶了序列中每個單詞的編碼表示。注意力計算隨后將序列中的每個單詞與其他單詞相結合使得注意力分數為序列中的每個單詞編碼了一個分數。之前在討論解碼器時我們簡要提到了掩碼。掩碼也顯示在上面的注意力圖中。讓我們看看它是如何工作的。注意力掩碼在計算注意力分數時注意力模塊執行一個掩碼步驟掩碼有兩個目的在編碼器的自注意力和編碼器-解碼器注意力中掩碼用于將輸入句子中填充部分的注意力輸出置為零以確保填充不參與自注意力計算。注意由于輸入序列長度可能不同它們通常會被擴展為固定長度的向量以便輸入到Transformer中同樣地對于編碼器-解碼器注意力機制也是如此。在解碼器的自注意力中掩碼用于防止解碼器在預測下一個單詞時“偷看”目標句子的其余部分。解碼器處理源序列中的單詞并使用它們來預測目標序列中的單詞。在訓練期間這通過Teacher Forcing實現即將完整的目標序列作為解碼器輸入。因此在預測某個位置的單詞時解碼器可以使用該單詞之前的目標單詞以及該單詞之后的目標單詞。這允許解碼器通過使用未來“時間步”中的目標單詞來“作弊”。例如在預測“單詞3”時解碼器應僅參考目標中的前3個輸入單詞而不應參考第四個單詞“Ketan”。因此解碼器會屏蔽掉序列中后續出現的輸入單詞。在計算注意力分數時參考之前顯示計算的圖片掩碼被應用于Softmax之前的分子部分。被屏蔽的元素白色方塊被設置為負無窮大以便Softmax將這些值轉換為零。生成輸出堆疊中的最后一個解碼器將其輸出傳遞給輸出組件該組件將其轉換為最終輸出句子。線性層將解碼器向量投影為單詞分數每個分數對應目標詞匯表中每個唯一單詞在句子中每個位置的出現概率。例如如果我們的最終輸出句子有7個單詞目標西班牙語詞匯表有10000個唯一單詞我們將為這7個單詞中的每一個生成10000個分數值。分數值表示詞匯表中每個單詞在該句子位置出現的可能性。然后Softmax層將這些分數轉換為概率這些概率加起來等于1.0。在每個位置我們找到概率最高的單詞的索引然后將該索引映射到詞匯表中對應的單詞。這些單詞隨后形成Transformer的輸出序列。訓練與損失函數在訓練期間我們使用如交叉熵損失這樣的損失函數來比較生成的輸出概率分布與目標序列。概率分布給出了詞匯表中每個單詞在該位置出現的概率。假設我們的目標詞匯表僅包含四個單詞我們的目標是生成一個與目標序列“De nada END”相匹配的概率分布。這意味著第一個單詞位置的概率分布中“De”的概率為1而詞匯表中其他所有單詞的概率均為0。類似地“nada”和“END”應分別在第二個和第三個單詞位置具有概率為1。通常我們使用損失來計算梯度以通過反向傳播訓練Transformer。結論希望這能讓你對Transformer在訓練過程中的內部工作機制有所了解。正如我們在上一篇文章中討論的那樣它在推理過程中會循環運行但大部分處理過程保持不變。最后的最后感謝你們的閱讀和喜歡作為一位在一線互聯網行業奮斗多年的老兵我深知在這個瞬息萬變的技術領域中持續學習和進步的重要性。為了幫助更多熱愛技術、渴望成長的朋友我特別整理了一份涵蓋大模型領域的寶貴資料集。這些資料不僅是我多年積累的心血結晶也是我在行業一線實戰經驗的總結。這些學習資料不僅深入淺出而且非常實用讓大家系統而高效地掌握AI大模型的各個知識點。如果你愿意花時間沉下心來學習相信它們一定能為你提供實質性的幫助。這份完整版的大模型 AI 學習資料已經上傳CSDN朋友們如果需要可以微信掃描下方CSDN官方認證二維碼免費領取【保證100%免費】大模型知識腦圖為了成為更好的 AI大模型 開發者這里為大家提供了總的路線圖。它的用處就在于你可以按照上面的知識點去找對應的學習資源保證自己學得較為全面。經典書籍閱讀閱讀AI大模型經典書籍可以幫助讀者提高技術水平開拓視野掌握核心技術提高解決問題的能力同時也可以借鑒他人的經驗。對于想要深入學習AI大模型開發的讀者來說閱讀經典書籍是非常有必要的。實戰案例光學理論是沒用的要學會跟著一起敲要動手實操才能將自己的所學運用到實際當中去這時候可以搞點實戰案例來學習。面試資料我們學習AI大模型必然是想找到高薪的工作下面這些面試題都是總結當前最新、最熱、最高頻的面試題并且每道題都有詳細的答案面試前刷完這套面試題資料小小offer不在話下640套AI大模型報告合集這套包含640份報告的合集涵蓋了AI大模型的理論研究、技術實現、行業應用等多個方面。無論您是科研人員、工程師還是對AI大模型感興趣的愛好者這套報告合集都將為您提供寶貴的信息和啟示。這份完整版的大模型 AI 學習資料已經上傳CSDN朋友們如果需要可以微信掃描下方CSDN官方認證二維碼免費領取【保證100%免費】