Transformer 如何工作:Transformer 架構的詳細探索
- Transformer 如何工作:Transformer 架構的詳細探索
- 什么是 Transformer?
- 什么是 Transformer 模型?
- 歷史背景
- 從 RNN 模型(如 LSTM)到 Transformer 模型在 NLP 問題上的轉變
- Transformer 架構
- 概述
- 編碼器工作流程
- 步驟 1 - 輸入嵌入
- 步驟 2 - 位置編碼
- 步驟 3 - 編碼器層堆棧
- 步驟 3.1 多頭自注意力機制
- 矩陣乘法 (MatMul) - 查詢和鍵的點積
- 降低注意力分數的大小
- 對調整后的分數應用 Softmax
- 將 Softmax 結果與值向量相結合
- 步驟 3.2 歸一化和殘差連接
- 步驟 3.3 前饋神經網絡
- 步驟 4 - 編碼器的輸出
- 解碼器工作流程
- 步驟 1 - 輸出嵌入
- 步驟 2 - 位置編碼
- 步驟 3 - 解碼器層堆棧
- 步驟 3.1 掩碼自注意力機制
- 步驟 3.2 - 編碼器-解碼器多頭注意力或交叉注意力
- 步驟 3.3 前饋神經網絡
- 步驟 4 線性分類器和 Softmax 用于生成輸出概率
- 歸一化和殘差連接
- 解碼器的輸出
- 現實生活中的 Transformer 模型
- BERT
- LaMDA
- GPT 和 ChatGPT
- 其他變體
- 基準和性能
- 機器翻譯任務
- 問答基準
- NLI 基準
- 與其他架構的比較
- 循環層
- 卷積層
- 結論
翻譯:《How Transformers Work: A Detailed Exploration of Transformer Architecture》
Transformer 如何工作:Transformer 架構的詳細探索
探索 Transformer 的架構,這種模型通過自注意力機制徹底改變了數據處理方式。
得益于 Transformer 模型的出現和快速發展,深度學習領域正在經歷一場巨變。
這些開創性的架構不僅重新定義了自然語言處理(NLP)的標準,還將其視野拓寬到徹底改變人工智能的眾多方面。
Transformer 模型以其獨特的注意機制和并行處理能力為特點,證明了在理解和生成人類語言方面取得了前所未有的準確性和效率的創新飛躍。
Transformer 架構最早出現在谷歌 2017 年的論文《Attention is all you need》中,它是像 ChatGPT 這樣的開創性模型的核心,在人工智能社區引發了新一輪的熱潮。它們在 OpenAI 的尖端語言模型中發揮了重要作用,并在 DeepMind 的 AlphaStar 中扮演了關鍵角色。
在這個人工智能的變革時代,Transformer 模型對于有抱負的數據科學家和 NLP 從業者的重要性怎么強調都不為過。
作為大多數最新技術飛躍的核心領域之一,本文旨在揭開這些模型背后的秘密。
什么是 Transformer?
Transformer 最初是為了解決序列轉導問題或神經機器翻譯而開發的,這意味著它們旨在解決任何將輸入序列轉換為輸出序列的任務。這就是為什么它們被稱為“Transformer”。
但讓我們從頭說起。
什么是 Transformer 模型?
Transformer 模型是一種神經網絡,它學習序列數據的上下文并從中生成新數據。
簡單地說:
Transformer 是一種人工智能模型,它通過分析大量文本數據中的模式來學習理解和生成類似人類的文本。
Transformer 是當前最先進的 NLP 模型,被認為是編碼器-解碼器架構的演進。然而,雖然編碼器-解碼器架構主要依賴循環神經網絡(RNN)來提取序列信息,但 Transformer 完全沒有這種循環性。
那么,它們是如何做到的呢?
它們專門設計用于通過分析不同元素之間的關系來理解上下文和意義,并且幾乎完全依賴于一種稱為“注意力”的數學技術來實現這一點。
圖片由作者提供。
歷史背景
Transformer 模型源于谷歌 2017 年的一篇研究論文,是機器學習領域最新、最有影響力的發展之一。第一個 Transformer 模型在影響深遠的論文《Attention is All You Need》中進行了解釋。
這個開創性的概念不僅是理論上的進步,而且還得到了實際應用,特別是在 TensorFlow 的 Tensor2Tensor 包中。此外,哈佛 NLP 小組通過提供一份帶注釋的論文指南,并附有 PyTorch 實現,為這個新興領域做出了貢獻。您可以在我們的另一篇教程中了解更多關于如何從頭開始實現 Transformer 的信息。
它們的推出極大地推動了該領域的發展,通常被稱為 Transformer AI。這個革命性的模型為后續大型語言模型領域的突破(包括 BERT)奠定了基礎。到 2018 年,這些發展已經被譽為 NLP 的一個分水嶺。
2020 年,OpenAI 的研究人員宣布了 GPT-3。幾周之內,人們就用它來創作詩歌、程序、歌曲、網站等等,迅速展示了 GPT-3 的多功能性,激發了全球用戶的想象力。
在 2021 年的一篇論文中,斯坦福大學的學者們恰當地將這些創新稱為基礎模型,強調了它們在重塑人工智能方面的基礎性作用。他們的工作凸顯了 Transformer 模型不僅如何徹底改變了該領域,而且還推動了人工智能可實現目標的邊界,預示著一個充滿可能性的新時代。
“我們正處在一個簡單的神經網絡等方法為我們帶來新功能爆炸式增長的時代,” Ashish Vaswani,一位企業家,前谷歌高級研究科學家。
從 RNN 模型(如 LSTM)到 Transformer 模型在 NLP 問題上的轉變
在 Transformer 模型推出之時,RNN 是處理序列數據的首選方法,其特點是輸入具有特定的順序。
RNN 的功能類似于前饋神經網絡,但它按順序逐個元素處理輸入。
Transformer 的靈感來自于 RNN 中的編碼器-解碼器架構。然而,Transformer 模型完全基于注意力機制,而不是使用循環。
除了提高 RNN 性能外,Transformer 還提供了一種新的架構來解決許多其他任務,例如文本摘要、圖像字幕和語音識別。
那么,RNN 的主要問題是什么?它們在 NLP 任務中效率低下的主要原因有兩個:
- 它們按順序處理輸入數據,一個接一個。這種循環過程無法利用專為并行計算設計的現代圖形處理單元 (GPU),因此使得此類模型的訓練速度相當慢。
- 當元素彼此相距較遠時,它們變得相當低效。這是因為信息在每一步都會傳遞,鏈條越長,信息在鏈條中丟失的可能性就越大。
從循環神經網絡 (RNN)(如 LSTM)到 Transformer 在 NLP 中的轉變是由這兩個主要問題以及 Transformer 利用注意力機制改進來評估這兩個問題的能力所驅動的:
- 關注特定的單詞,無論它們相距多遠。
- 提高性能速度。
因此,Transformer 成為 RNN 的自然改進。
接下來,讓我們看看 Transformer 是如何工作的。
Transformer 架構
概述
Transformer 最初是為序列轉導或神經機器翻譯而設計的,擅長將輸入序列轉換為輸出序列。它是第一個完全依賴自注意力來計算其輸入和輸出表示的轉導模型,而無需使用序列對齊的 RNN 或卷積。Transformer 架構的核心特征是它們保留了編碼器-解碼器模型。
如果我們將用于語言翻譯的 Transformer 視為一個簡單的黑匣子,它會接收一種語言(例如英語)的句子作為輸入,并輸出其英語翻譯。
圖片由作者提供。
如果我們再深入一點,我們會發現這個黑匣子由兩個主要部分組成:
- 編碼器接收我們的輸入并輸出該輸入的矩陣表示。例如,英語句子“How are you?”
- 解碼器接收該編碼表示并迭代生成輸出。在我們的例子中,是翻譯后的句子“?Cómo estás?”
圖片由作者提供。編碼器-解碼器的全局結構。
然而,編碼器和解碼器實際上都是一個具有多層(每層數量相同)的堆棧。所有編碼器都具有相同的結構,輸入進入每個編碼器并傳遞給下一個。所有解碼器也具有相同的結構,并從最后一個編碼器和前一個解碼器獲取輸入。
最初的架構由 6 個編碼器和 6 個解碼器組成,但我們可以根據需要復制任意數量的層。所以我們假設每種有 N 層。
圖片由作者提供。編碼器-解碼器的全局結構。多層結構。
現在我們對整個 Transformer 架構有了一個大概的了解,讓我們專注于編碼器和解碼器,以更好地理解它們的工作流程:
編碼器工作流程
編碼器是 Transformer 架構的基本組成部分。編碼器的主要功能是將輸入標記轉換為上下文化的表示。與早期獨立處理標記的模型不同,Transformer 編碼器捕獲每個標記相對于整個序列的上下文。
其結構組成如下:
圖片由作者提供。編碼器的全局結構。
讓我們將其工作流程分解為最基本的步驟:
步驟 1 - 輸入嵌入
嵌入僅發生在最底層的編碼器中。編碼器首先使用嵌入層將輸入標記(單詞或子詞)轉換為向量。這些嵌入捕獲標記的語義含義并將其轉換為數值向量。
所有編碼器都接收一個向量列表,每個向量的大小為 512(固定大小)。在最底層的編碼器中,這將是詞嵌入,但在其他編碼器中,它將是其正下方編碼器的輸出。
圖片由作者提供。編碼器工作流程。輸入嵌入。
步驟 2 - 位置編碼
由于 Transformer 沒有像 RNN 那樣的循環機制,它們使用添加到輸入嵌入中的位置編碼來提供有關序列中每個標記位置的信息。這使它們能夠理解句子中每個單詞的位置。
為此,研究人員建議采用各種正弦和余弦函數的組合來創建位置向量,從而使該位置編碼器能夠用于任何長度的句子。
在這種方法中,每個維度都由波的唯一頻率和偏移表示,值范圍從 -1 到 1,有效地表示每個位置。
圖片由作者提供。編碼器工作流程。位置編碼。
步驟 3 - 編碼器層堆棧
Transformer 編碼器由一堆相同的層組成(在原始 Transformer 模型中為 6 層)。
編碼器層用于將所有輸入序列轉換為一個連續的、抽象的表示,該表示封裝了從整個序列中學到的信息。該層包括兩個子模塊:
- 一個多頭注意力機制。
- 一個全連接網絡。
此外,它還在每個子層周圍加入了殘差連接,然后進行層歸一化。
圖片由作者提供。編碼器工作流程。編碼器層堆棧
步驟 3.1 多頭自注意力機制
在編碼器中,多頭注意力利用一種稱為自注意力的專門注意力機制。這種方法使模型能夠將輸入中的每個單詞與其他單詞關聯起來。例如,在給定的示例中,模型可能會學習將單詞“are”與“you”聯系起來。
這種機制允許編碼器在處理每個標記時關注輸入序列的不同部分。它根據以下內容計算注意力分數:
- 查詢(Query)是一個向量,表示注意力機制中輸入序列中的特定單詞或標記。
- 鍵(Key)也是注意力機制中的一個向量,對應于輸入序列中的每個單詞或標記。
- 每個值(Value)都與一個鍵相關聯,并用于構建注意力層的輸出。當查詢和鍵匹配良好時(基本上意味著它們具有高注意力分數),相應的值將在輸出中得到強調。
第一個自注意力模塊使模型能夠從整個序列中捕獲上下文信息。查詢、鍵和值不是執行單個注意力函數,而是線性投影 h 次。在這些查詢、鍵和值的每個投影版本上,注意力機制并行執行,產生 h 維輸出值。
詳細架構如下:
矩陣乘法 (MatMul) - 查詢和鍵的點積
一旦查詢、鍵和值向量通過線性層,就會在查詢和鍵之間執行點積矩陣乘法,從而創建分數矩陣。
分數矩陣確定每個單詞應對其他單詞施加多大程度的強調。因此,每個單詞都被分配一個相對于同一時間步內其他單詞的分數。分數越高表示關注度越高。
這個過程有效地將查詢映射到其相應的鍵。
圖片由作者提供。編碼器工作流程。注意力機制 - 矩陣乘法。
降低注意力分數的大小
然后通過將分數除以查詢和鍵向量維度的平方根來縮小分數。實施此步驟是為了確保更穩定的梯度,因為值的相乘可能導致過大的影響。
圖片由作者提供。編碼器工作流程。降低注意力分數。
對調整后的分數應用 Softmax
隨后,對調整后的分數應用 softmax 函數以獲得注意力權重。這會產生介于 0 和 1 之間的概率值。softmax 函數強調較高的分數,同時減弱較低的分數,從而增強模型有效確定哪些單詞應獲得更多注意力的能力。
圖片由作者提供。編碼器工作流程。Softmax 調整后的分數。
將 Softmax 結果與值向量相結合
注意力機制的下一步是將從 softmax 函數導出的權重乘以值向量,從而產生一個輸出向量。
在此過程中,僅保留具有高 softmax 分數的單詞。最后,將此輸出向量輸入線性層進行進一步處理。
圖片由作者提供。編碼器工作流程。將 Softmax 結果與值向量相結合。
我們最終得到了注意力機制的輸出!
那么,您可能想知道為什么它被稱為多頭注意力?
請記住,在所有過程開始之前,我們將查詢、鍵和值分成 h 次。這個稱為自注意力的過程在每個較小的階段或“頭”中獨立發生。每個頭都獨立發揮其魔力,產生一個輸出向量。
這個集合通過一個最終的線性層,就像一個微調它們集體性能的過濾器。這里的美妙之處在于每個頭的學習多樣性,從而使編碼器模型具有強大而多方面的理解能力。
步驟 3.2 歸一化和殘差連接
編碼器層中的每個子層之后都有一個歸一化步驟。此外,每個子層的輸出都與其輸入相加(殘差連接),以幫助緩解梯度消失問題,從而允許更深的模型。這個過程在進入前饋神經網絡之后也會重復。
圖片由作者提供。編碼器工作流程。多頭注意力之后的歸一化和殘差連接。
步驟 3.3 前饋神經網絡
歸一化殘差輸出的旅程繼續,它會通過一個逐點前饋網絡,這是進行額外細化的關鍵階段。
將此網絡想象成一對線性層,中間夾著一個 ReLU 激活函數,充當橋梁。處理完畢后,輸出會走一條熟悉的路徑:它會循環回來并與逐點前饋網絡的輸入合并。
這次重聚之后是另一輪歸一化,確保一切都得到良好調整并為接下來的步驟做好同步。
圖片由作者提供。編碼器工作流程。前饋神經網絡子層。
步驟 4 - 編碼器的輸出
最終編碼器層的輸出是一組向量,每個向量都代表具有豐富上下文理解的輸入序列。然后,該輸出將用作 Transformer 模型中解碼器的輸入。
這種仔細的編碼為解碼器鋪平了道路,引導它在解碼時注意輸入中的正確單詞。
可以把它想象成建造一座塔,你可以堆疊 N 個編碼器層。這個堆棧中的每一層都有機會探索和學習注意力的不同方面,就像知識的層次一樣。這不僅使理解多樣化,而且可以顯著增強 Transformer 網絡的預測能力。
解碼器工作流程
解碼器的作用集中在制作文本序列上。與編碼器類似,解碼器也配備了一組類似的子層。它擁有兩個多頭注意力層、一個逐點前饋層,并在每個子層之后都加入了殘差連接和層歸一化。
圖片由作者提供。編碼器的全局結構。
這些組件的功能方式類似于編碼器的層,但有一個轉折:解碼器中的每個多頭注意力層都有其獨特的任務。
解碼器過程的最后一步涉及一個線性層,用作分類器,最后再用一個 softmax 函數來計算不同單詞的概率。
Transformer 解碼器具有專門設計的結構,可以通過逐步解碼編碼信息來生成此輸出。
值得注意的是,解碼器以自回歸方式運行,以一個開始標記啟動其過程。它巧妙地使用先前生成的輸出列表作為其輸入,并與來自編碼器的、富含來自初始輸入的注意力信息的輸出協同工作。
這種解碼的順序舞蹈一直持續到解碼器達到一個關鍵時刻:生成一個標志著其輸出創建結束的標記。
步驟 1 - 輸出嵌入
在解碼器的起跑線上,該過程與編碼器的過程相似。在這里,輸入首先通過一個嵌入層。
步驟 2 - 位置編碼
在嵌入之后,再次像編碼器一樣,輸入通過位置編碼層。此序列旨在產生位置嵌入。
然后,這些位置嵌入被輸送到解碼器的第一個多頭注意力層,在那里,針對解碼器輸入的注意力分數被仔細計算。
步驟 3 - 解碼器層堆棧
解碼器由一堆相同的層組成(在原始 Transformer 模型中為 6 層)。每個層都有三個主要子組件:
步驟 3.1 掩碼自注意力機制
這類似于編碼器中的自注意力機制,但有一個關鍵區別:它阻止位置關注后續位置,這意味著序列中的每個單詞都不會受到未來標記的影響。
例如,在計算單詞“are”的注意力分數時,重要的是“are”不能窺視序列中后續的單詞“you”。
圖片由作者提供。解碼器工作流程。第一個多頭注意力掩碼。
這種掩碼確保了對特定位置的預測只能依賴于其之前位置的已知輸出。
步驟 3.2 - 編碼器-解碼器多頭注意力或交叉注意力
在解碼器的第二個多頭注意力層中,我們看到了編碼器和解碼器組件之間的獨特相互作用。在這里,來自編碼器的輸出同時扮演查詢和鍵的角色,而來自解碼器第一個多頭注意力層的輸出則充當值。
這種設置有效地將編碼器的輸入與解碼器的輸入對齊,使解碼器能夠識別和強調編碼器輸入中最相關的部分。
在此之后,來自第二個多頭注意力層的輸出然后通過一個逐點前饋層進行細化,從而進一步增強了處理。
圖片由作者提供。解碼器工作流程。編碼器-解碼器注意力。
在這個子層中,查詢來自前一個解碼器層,而鍵和值來自編碼器的輸出。這使得解碼器中的每個位置都可以關注輸入序列中的所有位置,從而有效地將來自編碼器的信息與解碼器中的信息集成在一起。
步驟 3.3 前饋神經網絡
與編碼器類似,每個解碼器層都包含一個全連接的前饋網絡,該網絡分別且相同地應用于每個位置。
步驟 4 線性分類器和 Softmax 用于生成輸出概率
數據通過 Transformer 模型的旅程最終以通過一個最終的線性層而告終,該線性層充當分類器。
該分類器的大小對應于所涉及的總類別數(詞匯表中包含的單詞數)。例如,在一個有 1000 個不同類別代表 1000 個不同單詞的場景中,分類器的輸出將是一個包含 1000 個元素的數組。
然后將此輸出引入 softmax 層,該層將其轉換為一系列概率分數,每個分數都介于 0 和 1 之間。這些概率分數中最高的一個是關鍵,其對應的索引直接指向模型預測為序列中下一個的單詞。
圖片由作者提供。解碼器工作流程。Transformer 的最終輸出。
歸一化和殘差連接
每個子層(掩碼自注意力、編碼器-解碼器注意力、前饋網絡)之后都有一個歸一化步驟,并且每個子層周圍還包含一個殘差連接。
解碼器的輸出
最后一層的輸出通過一個線性層和一個 softmax 層轉換為一個預測序列,以生成詞匯表上的概率。
解碼器在其操作流程中,將新生成的輸出合并到其不斷增長的輸入列表中,然后繼續解碼過程。這個循環重復進行,直到模型預測出一個特定的標記,標志著完成。
以最高概率預測的標記被指定為結束類別,通常由結束標記表示。
再次記住,解碼器不限于單個層。它可以由 N 個層構成,每個層都在從編碼器及其前一層接收到的輸入的基礎上構建。這種分層架構允許模型使其焦點多樣化,并在其注意力頭之間提取不同的注意力模式。
這種多層方法可以顯著增強模型的預測能力,因為它對不同的注意力組合有了更細致的理解。
最終的架構類似于這樣(來自原始論文):
圖片由作者提供。Transformer 的原始結構。
為了更好地理解這個架構,我建議您按照用 PyTorch 構建 Transformer 的教程從頭開始應用 Transformer。
現實生活中的 Transformer 模型
BERT
谷歌于 2018 年發布的 BERT 是一個開源的自然語言處理框架,它以其獨特的雙向訓練徹底改變了 NLP,這使得模型能夠對下一個單詞應該是什么做出更具上下文信息的預測。
通過從一個單詞的各個方面理解上下文,BERT 在問答和理解模糊語言等任務上的表現優于以前的模型。其核心使用 Transformer,動態連接每個輸出和輸入元素。
BERT 在維基百科上進行了預訓練,在各種 NLP 任務中表現出色,促使谷歌將其集成到其搜索引擎中以實現更自然的查詢。這項創新引發了一場開發先進語言模型的競賽,并顯著提高了該領域處理復雜語言理解的能力。
要了解有關 BERT 的更多信息,您可以查看我們介紹 BERT 模型的另一篇文章。
LaMDA
LaMDA(對話應用語言模型)是谷歌開發的基于 Transformer 的模型,專為對話任務設計,并在 2021 年谷歌 I/O 主題演講中發布。它們旨在生成更自然、更具上下文相關性的響應,從而增強各種應用中的用戶交互。
LaMDA 的設計使其能夠理解和響應廣泛的主題和用戶意圖,使其成為聊天機器人、虛擬助手以及其他動態對話至關重要的交互式 AI 系統應用的理想選擇。
這種對對話理解和響應的關注標志著 LaMDA 在自然語言處理和 AI 驅動的通信領域取得了重大進步。
如果您有興趣進一步了解 LaMDA 模型,可以通過 LaMDA 的文章獲得更好的理解。
GPT 和 ChatGPT
由 OpenAI 開發的 GPT 和 ChatGPT 是先進的生成模型,以其生成連貫且上下文相關的文本的能力而聞名。GPT-1 是其于 2018 年 6 月發布的第一個模型,而最具影響力的模型之一 GPT-3 則于兩年后的 2020 年發布。
這些模型擅長各種任務,包括內容創作、對話、語言翻譯等。GPT 的架構使其能夠生成與人類寫作非常相似的文本,使其在創意寫作、客戶支持甚至編碼輔助等應用中非常有用。ChatGPT 是為對話上下文優化的變體,擅長生成類似人類的對話,從而增強了其在聊天機器人和虛擬助手中的應用。
其他變體
基礎模型,特別是 Transformer 模型的領域正在迅速擴大。一項研究確定了 50 多個重要的 Transformer 模型,而斯坦福大學的小組評估了其中的 30 個,承認該領域的快速發展。NLP Cloud 是一家創新的初創公司,是 NVIDIA Inception 計劃的一部分,它在商業上利用大約 25 個大型語言模型為航空公司和藥店等各個行業服務。
將這些模型開源的趨勢越來越明顯,像 Hugging Face 的模型中心這樣的平臺處于領先地位。此外,還開發了許多基于 Transformer 的模型,每個模型都專門用于不同的 NLP 任務,展示了該模型在不同應用中的多功能性和效率。
您可以在另一篇關于基礎模型的文章中了解更多關于所有現有基礎模型的信息,該文章討論了它們是什么以及哪些是使用最廣泛的。
基準和性能
對 NLP 中 Transformer 模型的性能進行基準測試和評估涉及一種系統的方法來評估其有效性和效率。
根據任務的性質,有不同的方法和資源可以做到這一點:
機器翻譯任務
在處理機器翻譯任務時,您可以利用 WMT(機器翻譯研討會)等標準數據集,其中機器翻譯系統會遇到各種語言對,每種語言對都帶來獨特的挑戰。
BLEU、METEOR、TER 和 chrF 等指標可作為導航工具,引導我們實現準確性和流暢性。
此外,跨新聞、文學和技術文本等不同領域進行測試可確保機器翻譯系統的適應性和多功能性,使其成為數字世界中真正的多語言專家。
問答基準
為了評估問答模型,我們使用特殊的問題和答案集合,例如 SQuAD(斯坦福問答數據集)、Natural Questions 或 TriviaQA。
每一個都像一個有自己規則的不同游戲。例如,SQuAD 是關于在給定文本中尋找答案,而其他的則更像一個來自任何地方的問題的問答游戲。
為了看看這些程序做得如何,我們使用精確率、召回率、F1 分數,有時甚至使用完全匹配分數等分數。
NLI 基準
在處理自然語言推理 (NLI) 時,我們使用 SNLI(斯坦福自然語言推理)、MultiNLI 和 ANLI 等特殊數據集。
這些就像是語言變體和棘手案例的大型圖書館,幫助我們了解我們的計算機對不同類型句子的理解程度。我們主要檢查計算機在理解陳述是否一致、矛盾或不相關方面的準確性。
研究計算機如何解決棘手的語言問題也很重要,例如當一個詞指代前面提到的東西時,或者理解“不”、“所有”和“一些”。
與其他架構的比較
在神經網絡的世界中,通常將兩種突出的結構與 Transformer 進行比較。它們各自提供了獨特的優勢和挑戰,專為特定類型的數據處理而量身定制。RNN(在本文中已經多次出現)和卷積層。
循環層
循環層是循環神經網絡 (RNN) 的基石,擅長處理序列數據。這種架構的優勢在于其執行順序操作的能力,這對于語言處理或時間序列分析等任務至關重要。在循環層中,前一步的輸出作為下一步的輸入反饋到網絡中。這種循環機制使網絡能夠記住以前的信息,這對于理解序列中的上下文至關重要。
然而,正如我們已經討論過的,這種順序處理有兩個主要含義:
- 由于每一步都依賴于前一步,因此并行處理具有挑戰性,這可能導致更長的訓練時間。
- 由于梯度消失問題,它們通常難以處理長期依賴關系,即網絡在學習序列中相距較遠的數據點時效率降低。
Transformer 模型與使用循環層的架構有很大不同,因為它們缺乏循環性。正如我們之前所見,Transformer 的注意力層評估了這兩個問題,使其成為用于 NLP 應用的 RNN 的自然演進。
卷積層
另一方面,卷積層是卷積神經網絡 (CNN) 的構建塊,以其處理圖像等空間數據的效率而聞名。
這些層使用在輸入數據上掃描以提取特征的內核(過濾器)。這些內核的寬度可以調整,允許網絡根據手頭的任務專注于小或大特征。
雖然卷積層在捕獲數據的空間層次結構和模式方面異常出色,但它們在處理長期依賴關系方面面臨挑戰。它們本身不考慮序列信息,因此不太適合需要理解序列順序或上下文的任務。
這就是為什么 CNN 和 Transformer 專為不同類型的數據和任務而設計的原因。CNN 因其處理空間信息的效率而在計算機視覺領域占據主導地位,而 Transformer 因其理解遠程依賴關系的能力而成為復雜順序任務(尤其是在 NLP 中)的首選。
結論
總之,Transformer 已成為人工智能、NLP 領域的一項重大突破。
通過其獨特的自注意力機制有效地管理序列數據,這些模型已經超越了傳統的 RNN。它們能夠更有效地處理長序列并并行化數據處理,從而顯著加快了訓練速度。
谷歌的 BERT 和 OpenAI 的 GPT 系列等開創性模型體現了 Transformer 在增強搜索引擎和生成類似人類文本方面的變革性影響。
因此,它們已成為現代機器學習中不可或缺的一部分,推動了人工智能的邊界,并在技術進步方面開辟了新的途徑。
如果您想深入了解 Transformer 及其用法,我們關于 Transformer 和 Hugging Face 的文章是一個完美的開始!您還可以通過我們的深度指南學習如何用 PyTorch 構建 Transformer。