## 介紹 Transformer 架構 Transformer 由 Vaswani 等人在 2017 年提出,原始的 Transformer 模型由一個編碼器(Encoder)和一個解碼器(Decoder)組成。無論是 Encoder 還是 Decoder,其基本單元都是多頭自注意力機制(Multi-Head Self-Attention)和前饋神經網路(Position-wise Feed-Forward Network)組成的子層,並透過殘差連接和 Layer Normalization 做穩定訓練。 兩者的差別在於,Decoder 與 Encoder 連接時多了一個交叉注意力(Cross-Attention)子層,用於在解碼時關注編碼器的輸出,此外,Decoder 中的自注意力採用了遮罩機制(Masked Self-Attention),以避免模型在生成時看到未來的單詞,確保第 $i$ 個位置只能查看前面 $i-1$ 的輸出,若想更清楚了解細節請看 [Transformer](https://hackmd.io/@lcaMuWOwR1Ox5o5yeTEupA/ryMKua8H0) 這篇文章。 ![image](https://hackmd.io/_uploads/Bk79n6ISA.png) ## Encoder-Only 架構 Encoder-Only 模型只使用 Transformer 的編碼器,不含解碼器。這類模型在處理輸入時採用雙向自注意力機制,讓每個詞彙能同時關注序列中左側和右側的上下文,由於不涉及生成過程,Encoder-Only 模型的自注意力層不需要遮罩未來訊息,可以充分學習整個序列的語意關係,這使得它對語境的理解更加透徹,能捕捉句子中每個詞的完整上下文。 Encoder-Only 架構專注於對輸入文本的理解和表示,因此特別適合需要從整段文字中提取資訊或判斷屬性的任務。 ### Encoder-Only 應用情境 #### 文本分類: * 情感分析(Sentiment Analysis):判斷用戶評論或社交媒體貼文的情感(正面、中立或負面)。 * 新聞分類:將新聞文章自動分配到不同的主題(政治、科技、體育等)。 * 垃圾郵件檢測(Spam Detection):識別電子郵件是否為垃圾郵件。 * 法律文本與醫學文本分類:對法律文件、醫學報告進行特定類別的歸類。 #### 序列標註: * 命名實體識別(NER, Named Entity Recognition):從句子中識別出人名、地名、組織名等實體。 * 詞性標註(POS Tagging):標記單詞的詞性,如名詞、動詞、形容詞等。 * 語法分析(Syntactic Parsing):構建句子的語法樹,標記主詞、動詞、賓語等。 ## Decoder-Only 架構 Decoder-Only 模型只包含 Transformer 的解碼器。Decoder-Only 架構的每一層同樣包含多頭注意力機制和前饋網路,不同之處在於自注意力機制帶有遮罩,在 Decoder 的自注意力層中,每個單詞只能關注它之前已出現的單詞,無法觀看後面的未來詞彙,這種單向(自回歸)注意力確保模型按照從左到右的順序逐步生成文本,模型在生成第 $i$ 個詞時只能利用第 $1$ 到第 $i-1$ 個詞的信息,此形式也被稱為「Autoregressive」。 Decoder-Only 模型的最大優勢在於,它以語言模型的方式進行預訓練(預測下一個詞),它對語言的統計特性和用詞連貫性學習充分,生成文本的流暢度極高。另外,大規模的 Decoder-Only 模型展現出令人驚奇的泛化能力和零樣本或少樣本學習(Zero-shot 或 Few-shot)能力,即使只以「預測下一詞」任務進行預訓練,模型也隱含學會了總結、翻譯、問答甚至推理等各種技能。 ### Decoder-Only 應用情境 #### 開放式文本生成(Open-ended Text Generation) * 文章續寫:根據開頭一段文字,讓模型自動擴展內容,如新聞撰寫、小說創作等。 * 故事創作:根據簡單的故事設定(例如人物、背景、情節),讓 AI 自動編寫完整的故事段落。 #### 對話系統(Conversational AI) * 客戶服務:如 ChatGPT、企業客服機器人。 * 智能助手:如 Siri、Google Assistant,處理用戶查詢。 * 開放式聊天:如 AI 角色扮演對話、聊天伴侶。 #### 程式碼補全與生成(Code Completion & Code Generation) * 自動補全程式碼(如 GitHub Copilot):根據已有程式碼的部分,完成缺失部分。 * 從自然語言生成程式碼:例如「請寫一個 Python 函數來計算斐波那契數列」,模型直接輸出程式碼。 ## Encoder-Decoder 架構 Encoder-Decoder 模型結合了編碼器和解碼器兩部分架構,也稱 Seq2Seq 模型。這類架構最初即用於機器翻譯等任務,Transformer 原始論文的模型包含6層編碼器和6層解碼器,Encoder 先對輸入序列進行編碼,把每個輸入token轉換為包含語意資訊的向量表示;Decoder 隨後根據 Encoder 輸出的向量,生成目標序列(如文字)。 Encoder-Decoder 架構的關鍵在於交叉注意力(Cross-Attention) 機制,Decoder的每一層通常包含三個子層:第一個是遮罩自注意力,第二個是交叉注意力,第三個是前饋網路,其中交叉注意力子層的 Query 來自 Decoder 前一層的輸出,而 Key/Value 則來自 Encoder 的輸出,交叉注意力讓 Decoder 在生成每個詞時,都能動態查詢編碼器輸出的資訊,聚焦於輸入序列中與當前要生成詞相關的部分,從而生成更準確的內容。 ### Encoder-Decoder 應用情境 #### 機器翻譯(Machine Translation, MT) * 通用機器翻譯:如 Google 翻譯、DeepL,支援多語言翻譯。 * 字幕翻譯:即時將影片字幕從一種語言轉換為另一種語言。 #### 問答生成(Question Answering, QA) * 閱讀理解(Reading Comprehension):如 SQuAD(Stanford Question Answering Dataset)。 * 客服自動回應:如 AI 問答機器人。 * 智能搜索系統:從文件或數據庫中提取正確答案。 ## 總結 ![image](https://hackmd.io/_uploads/rkVfcKNjJl.png)