從 BERT 到 GPT:Encoder 的 “全局視野” 如何喂飽 Decoder 的 “逐詞糾結”

當 Encoder 學會 “左顧右盼”:Decoder 如何憑 “單向記憶” 生成絲滑文本?



引言

在深度學習領域,Encoder(編碼器)與Decoder(解碼器)是序列處理任務的核心組件,二者通過不同的注意力機制設計,形成了“理解-生成”的黃金搭檔。本文從基礎功能、注意力機制差異、典型案例及工程實踐等維度,解析這對架構的核心設計邏輯。

在這里插入圖片描述

一、Encoder vs Decoder:核心功能與基礎架構對比

1.1 本質分工:理解與生成的黃金搭檔

  • Encoder(編碼器)
    定位:輸入數據的“語義壓縮器”

    • 核心任務:將原始輸入(文本、圖像、語音)編碼為抽象中間表示(如向量、隱藏狀態)
    • 典型輸出:Transformer Encoder輸出的全局上下文向量、RNN的最終隱藏狀態
    • 核心能力:捕捉輸入序列的全局依賴關系(如句子中詞與詞的長距離關聯)
  • Decoder(解碼器)
    定位:中間表示的“序列生成器”

    • 核心任務:基于Encoder的中間表示,逐步生成目標輸出(文本序列、圖像像素等)
    • 典型輸入:Encoder輸出 + 歷史生成結果(自回歸模式)
    • 核心能力:按順序生成符合邏輯的輸出序列(如翻譯時逐詞生成)

1.2 核心差異對比表

維度EncoderDecoder
核心功能輸入理解與特征壓縮中間表示解碼與序列生成
注意力方向雙向(無掩碼,全局上下文)單向(因果掩碼,僅歷史信息)
處理模式并行處理全序列(高效)自回歸逐詞生成(順序依賴)
典型場景文本分類、圖像識別(理解類任務)機器翻譯、文本生成(生成類任務)
掩碼機制無需掩碼必須使用因果掩碼(Causal Mask)

二、注意力機制:雙向性與單向性的本質區別

2.1 Encoder雙向注意力:全局上下文的無界探索

技術實現核心
  1. 無掩碼自注意力

    • 允許每個token訪問序列中的所有位置(包括左側和右側)
    • 注意力矩陣計算: Attention ( Q , K , V ) = Softmax ( Q K T d k ) V \text{Attention}(Q,K,V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=Softmax(dk? ?QKT?)V
    • 無位置限制:如BERT的Encoder處理“我 愛 北京”時,“北京”的表示融合“我”和“愛”的語義
      在這里插入圖片描述
  2. 并行計算優勢

    • 一次性處理整個輸入序列,時間復雜度為 O ( n 2 ) O(n^2) O(n2)(n為序列長度)
    • 適合長文本處理,如GPT-4的Encoder可處理8k+長度的輸入
典型案例:BERT的掩碼語言模型(MLM)
  • 輸入:“The [MASK] sat on the mat.”
  • Encoder雙向注意力作用:
    1. “[MASK]”位置同時關注“sat”“mat”等右側詞匯
    2. 通過全局語義推斷,正確生成“cat”而非“dog”(僅依賴左側會導致歧義)
  • 優勢:雙向性確保上下文語義的充分融合,適合需要深層語義理解的任務(如情感分析、問答)

2.2 Decoder單向注意力:因果掩碼下的有序生成

技術實現核心
  1. 因果掩碼(Causal Mask)

    • 在自注意力計算時,將未來位置的注意力權重設為(-\infty)(Softmax后為0)
    • 數學實現:生成上三角掩碼矩陣,覆蓋當前位置右側的所有位置
    # 因果掩碼示例(序列長度4)
    import torch
    mask = torch.triu(torch.ones(4,4), diagonal=1)  # 生成右上三角矩陣
    attention_scores = attention_scores.masked_fill(mask == 1, -float('inf'))
    
  2. 自回歸生成邏輯

    • 每一步生成僅依賴已生成的歷史token
    • 如翻譯“今天天氣很好”時,Decoder先生成“The”,再基于“The”和Encoder輸出生成“Weather”,依此類推
典型案例:GPT-3的文本生成
  • 輸入前綴:“The quick brown fox jumps over the”
  • Decoder單向注意力作用:
    1. 生成“lazy”時,僅能看到前面的“The quick brown fox…”
    2. 生成“dog”時,依賴“lazy”及Encoder的語義編碼
  • 優勢:避免生成過程“偷看”未來信息,確保輸出序列的邏輯自洽性(如語法正確、語義連貫)

三、結構分離的實戰價值:以機器翻譯為例

3.1 Transformer架構中的分工協作

graph TDA[中文輸入:今天天氣很好] --> B[Encoder雙向注意力]B --> C[上下文向量:包含天氣/時間語義]C --> D[Decoder單向注意力]D --> E[英文輸出:The weather is nice today]

3.2 關鍵步驟解析

  1. Encoder理解階段(雙向性發力)

    • 處理“今天”時,同時關注“天氣”“很好”的上下文,避免孤立理解
    • 輸出包含全局語義的向量,如“今天”對應“today”,“天氣”對應“weather”
  2. Decoder生成階段(單向性主導)

    • 第一步生成“The”,此時僅依賴初始向量
    • 第二步生成“Weather”,可關注“The”和Encoder的上下文向量
    • 每一步通過因果掩碼,確保生成順序符合英文語法(如先主語后謂語)

3.3 雙向+單向的優勢互補

模塊核心價值典型問題避免
Encoder雙向性精準捕捉源語言語義(如多義詞消歧)“蘋果”在“蘋果手機”vs“蘋果水果”的歧義
Decoder單向性生成符合目標語言順序的自然文本避免“天氣今天很好”→“Today weather is nice”的錯誤語序

四、特殊變體:從分離到融合的架構創新

4.1 UniLM:動態掩碼統一雙向與單向任務

  • 設計思想:通過動態調整注意力掩碼,同一模型支持多種任務
    • 雙向掩碼:處理MLM任務(如BERT的語義理解)
    • 單向掩碼:處理文本生成(如GPT的自回歸生成)
  • 應用場景:問答系統中,先雙向理解問題,再單向生成回答

4.2 Prefix-LM:輸入輸出的混合注意力

  • 架構特點
    • 輸入前綴部分:使用雙向注意力(如用戶指令“寫一首詩”)
    • 生成內容部分:使用單向注意力(逐句生成詩句)
  • 優勢:兼顧指令理解的全局性和生成內容的有序性,如Google LaMDA模型的對話生成

五、工程實踐:雙向性與單向性的權衡選擇

5.1 性能對比表

維度Encoder雙向性Decoder單向性
計算效率? 高(并行處理,適合批量輸入)? 低(逐詞生成,序列長度敏感)
上下文利用? 全局信息無遺漏? 僅歷史信息,未來信息不可見
生成質量? 無法直接生成(需Decoder配合)? 可控生成,避免邏輯矛盾
長序列處理? 注意力矩陣顯存占用高(n2復雜度)? 可結合稀疏注意力優化(如Longformer)

5.2 選型決策樹

任務類型 → 理解類(分類/識別) → 優先Encoder雙向性架構(如BERT)→ 生成類(翻譯/摘要) → Encoder-Decoder組合(雙向Encoder+單向Decoder)→ 純生成類(GPT式文本生成) → 純Decoder單向性架構(自回歸生成)

六、總結:從分工到協同的架構哲學

Encoder的雙向性是理解世界的“眼睛”,通過全局視野捕捉復雜語義關聯;Decoder的單向性是創造世界的“雙手”,按邏輯順序構建合理輸出。二者的分離設計,本質是“專業分工”的體現:

  • Encoder:專注于“看懂”輸入,用雙向注意力打破位置限制,實現語義的深度理解
  • Decoder:專注于“創造”輸出,用單向注意力確保生成的有序性,避免邏輯漏洞

在Transformer、GPT、BERT等經典架構中,這種分工協作達到了完美平衡:Encoder為Decoder提供扎實的語義基礎,Decoder讓Encoder的理解成果落地為可交互的輸出。理解這一核心邏輯,是掌握序列處理任務的關鍵,也為復雜場景下的架構創新(如多模態生成、長文本處理)提供了設計原點。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77694.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77694.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77694.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構入門:詳解順序表的實現與操作

目錄 1.線性表 2.順序表 2.1概念與結構 2.2分類 2.2.1靜態順序表 2.2.2動態順序表 3.動態順序表的實現 3.1.SeqList.h 3.2.SeqList.c 3.2.1初始化 3.2.2銷毀 3.2.3打印 3.2.4順序表擴容 3.2.5尾部插入及尾部刪除 3.2.6頭部插入及頭部刪除 3.2.7特定位置插入…

LeetCode熱題100--53.最大子數組和--中等

1. 題目 給你一個整數數組 nums ,請你找出一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。 子數組是數組中的一個連續部分。 示例 1: 輸入:nums [-2,1,-3,4,-1,2,1,-5,4] 輸出&…

python:練習:2

1.題目:統計一篇英文文章中每個單詞出現的次數,并按照出現次數排序輸出。 示例輸入: text "Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991…

AI Agent 孵化器?開源框架CAMEL

簡介 CAMEL(Communicative Agents for Mind Exploration of Large Scale Language Model Society)是一個開源框架,大語言模型多智能體框架的先驅者。旨在通過角色扮演和自主協作,探索大語言模型(LLM)在多智…

關于插值和擬合(數學建模實驗課)

文章目錄 1.總體評價2.具體的課堂題目 1.總體評價 學校可以開設這個數學建模實驗課程,我本來是非常的激動地,但是這個最后的上課方式卻讓我高興不起哦來,因為老師講的這個內容非常的簡單,而且一個上午的數學實驗,基本…

LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding

TL;DR 2024 年 Meta FAIR 提出了 LayerSkip,這是一種端到端的解決方案,用于加速大語言模型(LLMs)的推理過程 Paper name LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding Paper Reading Note Paper…

解決ktransformers v0.3 docker鏡像中 operator torchvision::nms does not exist 問題

問題背景 更新ktransformers docker鏡像到v0.3版本后(之前為v0.2.4post1),使用更新前啟動命令無法正確啟動服務,提示以下錯誤: Traceback (most recent call last):File "/workspace/ktransformers/ktransforme…

如何系統學習音視頻

學習音視頻技術涉及多個領域,包括音頻處理、視頻處理、編碼解碼、流媒體傳輸等。 第一階段:基礎知識準備 目標:掌握音視頻學習所需的計算機科學和數學基礎。 計算機基礎 學習計算機網絡基礎(TCP/IP、UDP、HTTP、RTSP等協議&#…

TiDB 可觀測性最佳實踐

TiDB 介紹 TiDB,由 PingCAP 公司自主研發的開源分布式關系型數據庫,是一款創新的 HTAP 數據庫產品,它融合了在線事務處理(OLTP)和在線分析處理(OLAP)的能力,支持水平擴容和縮容&…

使用FreeRTOS解決單片機串口異步打印

單片機串口異步打印 文章目錄 單片機串口異步打印前言設計思路準備隊列創建完整代碼 總結 前言 🌊在單片機開發中串口的異步打印異步打印允許單片機在執行其他任務的同時進行打印操作,無需等待打印完成后再繼續執行后續代碼,避免了在多處調用…

代碼顏色模式python

1. CMYK(印刷場景) 例子:某出版社設計書籍封面時,使用 Adobe Illustrator 繪制圖案。 紅色封面的 CMYK 值可能為:C0, M100, Y100, K0(通過洋紅和黃色油墨混合呈現紅色)。印刷前需將設計文件轉…

HarmonyOS NEXT 詩詞元服務項目開發上架全流程實戰(二、元服務與應用APP簽名打包步驟詳解)

在HarmonyOS應用開發過程中,發布應用到應用市場是一個重要的環節。沒經歷過的童鞋,首次對HarmonyOS的應用簽名打包上架可能感覺繁瑣。需要各種秘鑰證書生成和申請,混在一起分不清。其實搞清楚后也就那會事,各個文件都有它存在的作…

【BotSharp框架示例 ——實現聊天機器人,并通過 DeepSeek V3實現 function calling】

BotSharp框架示例 ——實現聊天機器人,并通過 DeepSeek V3實現 function calling 一、一點點感悟二、創建項目1、創建項目2、添加引用3、MyWeatherPlugin項目代碼編寫4、WeatherApiDefaultService項目代碼編寫5、WebAPI MyWeatherAPI 的項目代碼編寫6、data文件夾中…

百度CarLife實現手機車機無縫互聯

百度CarLife是百度推出的智能車聯網解決方案,通過手機與車機互聯技術,為用戶提供安全便捷的車載互聯網服務體驗。 CarLife 實現手機與車機屏幕的無縫互聯,讓應用內容同步至車載系統,減少駕駛過程中操作手機的頻率,提升…

基于STM32的虛線繪制函數改造

改造前: uint16_t DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { // GUI_DrawLine( x1, y1, x2, y2); // return 1;int16_t deltaX, deltaY;int16_t error, stepErrorLT, stepErrorGE;int16_t stepX, stepY;int16_t steep;int16_t…

Java高頻面試之并發編程-10

hello啊,各位觀眾姥爺們!!!本baby今天來報道了!哈哈哈哈哈嗝🐶 面試官:ThreadLocalMap 怎么解決 Hash 沖突的? ThreadLocalMap 是 ThreadLocal 的核心實現,它采用 開放…

AI應用實戰:Excel表的操作工具

有個小需求是這樣的,需要在一份數據表里,將1000多個客戶的月報數據分別單獨截圖存檔,有客戶需要的時候就要發給客戶,截圖下來的也是以客戶為命名,這樣查找時也比較容易匹配上。 在沒有寫工具之前,以往財務…

使用 DoH 查詢域名 —— 以 core.tantanapp.com 為例的實戰分析

前言 在現代 iOS 應用中,為了確保 DNS 查詢的隱私和完整性,我們可以使用 DoH(DNS over HTTPS) 來查詢域名信息。 本文將以 https://cloudflare-dns.com/dns-query?namecore.tantanapp.com&typeA 為例,通過 Postm…

Python----卷積神經網絡(卷積為什么能識別圖像)

一、卷積的概念 卷積是一種數學運算,通常用于信號處理和圖像分析。在卷積神經網絡中,卷積操作用于提取輸入數據(如圖像)中的特征。通過將輸入數據與卷積核(濾波器)進行卷積運算,CNN能夠識別圖像…

linux FTP服務器搭建

FTP服務器搭建 系統環境:ubuntu 搭建方式:win系統下通過ssh連接ubuntu,搭建FTP服務 一、ssh連接 ssh -p 端口 用戶名IP ssh -p 22 ubuntu192.168.1.109 密碼:ubuntu123456 二、安裝配置FTP服務器 1、安裝 sudo apt install v…