BERT框架:自然語言處理的革命性突破

引言

在自然語言處理(NLP)領域,2018年Google推出的BERT(Bidirectional Encoder Representations from Transformers)框架無疑是一場革命。作為基于Transformer架構的雙向編碼器表示模型,BERT通過預訓練學習豐富的語言表示,并在各種NLP任務中取得了顯著的成績。本文將詳細介紹BERT的核心原理、技術特點以及實際應用。


一、BERT框架簡介

BERT(Bidirectional Encoder Representations from Transformers)是一種基于Transformer編碼器的預訓練語言模型。與傳統的單向語言模型(如GPT)不同,BERT采用雙向結構,能夠同時考慮文本中的上下文信息,從而更準確地捕捉語義特征。

1. 模型結構

BERT基于Transformer的編碼器部分,主要由以下組件構成:

  • 自注意力機制(Self-Attention):通過計算詞與詞之間的匹配程度,動態分配權重,捕捉上下文關系。
  • 多頭注意力機制(Multi-Head Attention):使用多組注意力頭(通常為8個)生成多種特征表達,增強模型的表達能力。
  • 前饋神經網絡(Feed Forward Network):對注意力機制的輸出進行進一步處理。
  • 位置編碼(Positional Encoding):通過三角函數為詞向量添加位置信息,解決Transformer無法直接處理序列順序的問題。
    在這里插入圖片描述

2. 預訓練任務

BERT通過兩個無監督任務進行預訓練:

  • 遮蔽語言模型(Masked Language Model, MLM):隨機遮蔽輸入句子中15%的詞匯,讓模型預測被遮蔽的詞。例如:

    輸入:我 [MASK] 天 去 [MASK] 試
    預測:今, 面
    
  • 下一句預測(Next Sentence Prediction, NSP):判斷兩個句子是否連續。例如:

    輸入:[CLS] 我 今天 去 面試 [SEP] 準備 好 了 簡歷 [SEP]
    標簽:Yes
    

3. 雙向性

BERT的核心優勢在于其雙向性。傳統模型(如RNN或GPT)只能單向處理文本(從左到右或從右到左),而BERT通過自注意力機制同時考慮前后上下文,顯著提升了語義理解能力。


二、BERT的核心技術

1.自注意力機制 self.attention

BERT基于Transformer的編碼器部分,其核心是自注意力機制。以下是自注意力的計算流程:
在這里插入圖片描述

  1. 輸入編碼:將詞向量與三個矩陣(WQ, WK, WV)相乘,得到查詢(Q)、鍵(K)和值(V)矩陣。
    在這里插入圖片描述

  2. 注意力得分計算:通過Q與K的點積計算詞與詞之間的匹配程度。
    在這里插入圖片描述

  3. 特征分配:根據得分對V進行加權求和,得到每個詞的最終特征表示。
    在這里插入圖片描述

2. 多頭注意力機制 multi-headed

通過多組注意力頭,BERT能夠從不同角度捕捉詞與詞之間的關系。例如:

  • 一個注意力頭可能關注語法關系,另一個可能關注語義關系。
  • 最終將所有頭的輸出拼接并通過全連接層降維。
    在這里插入圖片描述

3. 多層堆疊

BERT的核心是由多層Transformer編碼器堆疊而成的深度神經網絡結構:
在這里插入圖片描述

4. 位置編碼

Transformer本身不具備處理序列順序的能力,因此BERT引入了三角函數位置編碼:

  • 公式:
    在這里插入圖片描述

pos:指當前字符在句子中的位置(如:”你好啊”,這句話里面“你”的pos=0),

dmodel:指的是word embedding的長度(例“民主”的word embedding為[1,2,3,4,5],則dmodel=5),

2i表示偶數,2i+1表示奇數。取值范圍:i=0,1,…,dmodel?1。偶數使用公式,奇數時使用公式。

在這里插入圖片描述
word embedding:是詞向量,由每個詞根據查表得到
pos embedding:就是位置編碼。
composition:word embedding和pos embedding逐點相加得到,既包含 語義信息又包含位置編碼信息的最終矩陣。

5. Add與Normalize

預訓練完成后,BERT可以通過微調適應具體任務,如文本分類、命名實體識別、問答系統等。微調只需在預訓練模型的基礎上添加任務特定的輸出層,并在目標數據集上進行訓練。

6.outputs(shifted right)

在這里插入圖片描述
outputs(shifted right):指在解碼器處理過程中,將之前的輸出序列向右移動一位,并在最左側添加一個新的起始符(如 ‘SOS’ 或目標序列開始的特殊token)作為新的輸入。這樣做的目的是讓解碼器在生成下一個詞時,能夠考慮到已經生成的詞序列。
作用:通過“shifted right”操作,解碼器能夠在生成每個詞時,都基于之前已經生成的詞序列進行推斷。這樣,解碼器就能夠逐步構建出完整的輸出序列。

三、BERT的優勢與影響

  • 解決RNN的局限性:RNN需要串行計算,訓練時間長;BERT通過并行計算大幅提升效率。
  • Word2Vec的靜態詞向量:Word2Vec生成的詞向量無法適應不同語境;BERT通過動態上下文編碼解決這一問題。

四、總結

BERT通過雙向Transformer架構和預訓練任務,徹底改變了NLP領域的游戲規則。它不僅解決了傳統模型的諸多局限,還為后續研究奠定了堅實基礎。無論是學術研究還是工業應用,BERT都是當今NLP領域不可或缺的工具。

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

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

相關文章

【Fifty Project - D31】

結束了一個超級消耗周末,滿安排之健身梅溪湖游泳做飯喝酒羽毛球賽 完全力竭了,久久不能恢復過來,暫停健身安排了 端午后再繼續 今日完成記錄 TimePlan完成情況7:30 - 8:10有氧爬坡√9:00 - 11:…

信息學奧賽一本通 1547:【 例 1】區間和

【題目鏈接】 ybt 1547:【 例 1】區間和 【題目考點】 1. 線段樹 2. 樹狀數組 【解題思路】 本題要求維護區間和,實現單點修改、區間查詢。 解法1:線段樹 線段樹原理,及實現方法見:洛谷 P3374 【模板】樹狀數組…

力扣面試150題--求根節點到葉節點數字之和

Day 48 題目描述 思路 我們利用sum這個全局變量來保存總和值,遞歸函數sum來計算每個根到葉子節點路徑所代表的數,由于我們需要遍歷到每條根到葉子節點的路徑,所有我采取了前序遍歷,如果不是葉子節點,就計算到該節點代…

DJI上云API官方demo學習

1、websocket,所在位置如下圖,調用的可以用//websocket搜索 2、用到的http客戶端,axios 3、很多和后端交互都是走的http請求

uniapp開發小程序,如何根據權限動態配置按鈕或頁面內容

前言 寫了好幾個項目,發現小程序對權限控制非常麻煩,于是有了這個想法,但是網上找了一圈沒有一個比較完善的講解,因為小程序不支持自定義指令,所以不能像后臺那樣方便,于是就將幾個博主的想法結合。 思路就…

LSTM+Transformer混合模型架構文檔

LSTMTransformer混合模型架構文檔 模型概述 本項目實現了一個LSTMTransformer混合模型,用于超臨界機組協調控制系統的數據驅動建模。該模型結合了LSTM的時序建模能力和Transformer的自注意力機制,能夠有效捕捉時間序列數據中的長期依賴關系和變量間的復…

測量尺子:多功能測量工具,科技改變生活

測量尺子是一款專業的測距儀測量萬能工具箱類型手機APP,旨在為用戶提供最貼心的測量助手。它擁有和現實測量儀器一樣的測量標準,更簡單便捷且精準的測量方式,最新AR科技測量更是大大拓寬了可以被測量的高度和深度。無論是日常使用、學習還是工…

結課作業01. 用戶空間 MPU6050 體感鼠標驅動程序

目錄 一. qt界面實現 二. 虛擬設備模擬模擬鼠標實現體感鼠標 2.1 函數聲明 2.2 虛擬鼠標實現 2.2.1 虛擬鼠標創建函數 2.2.2 鼠標移動函數 2.2.3 鼠標點擊函數 2.3 mpu6050相關函數實現 2.3.1 i2c設備初始化 2.3.2 mpu6050寄存器寫入 2.3.3 mpu6050寄存器讀取 2.3.…

深入淺出 Python Testcontainers:用容器優雅地編寫集成測試

在現代軟件開發中,自動化測試已成為敏捷開發與持續集成中的關鍵環節。單元測試可以快速驗證函數或類的行為是否符合預期,而集成測試則確保多個模塊協同工作時依然正確。問題是:如何讓集成測試可靠、可重復且易于維護? 這時&#…

JVM 的垃圾回收器

新生代回收器 通性 會觸發StW,暫停所有應用線程復制算法 Serial 單線程回收適合單線程系統 ParNew 多線程回收優先保證響應速度,降低 STW(STW 越大,執行垃圾回收的時間越長,回收的垃圾越多,減少垃圾回…

【筆記】排查并解決Error in LLM call after 3 attempts: (status code: 502)

#工作記錄 一、問題描述 在部署運行部署對沖基金分析工具 ai-hedge-fund 時,不斷出現以下報錯,導致項目運行異常: Error in LLM call after 3 attempts: (status code: 502) Error in LLM call after 3 attempts: [WinError 10054] 遠程主…

GO 語言進階之 Template 模板使用

更多個人筆記見: github個人筆記倉庫 gitee 個人筆記倉庫 個人學習,學習過程中還會不斷補充~ (后續會更新在github上) 文章目錄 Template 模板基本示例語法1. 基本輸出語法2. 控制結構3. 空白字符控制4. Must函數 Temp…

origin繪圖之【如何將多條重疊、高度重疊的點線圖、折線圖分開】

在日常的數據可視化工作中,Origin 作為一款功能強大的科研繪圖軟件,廣泛應用于實驗數據處理、結果展示與論文圖表制作等領域。然而,在處理多組數據、特別是繪制多條曲線的折線圖或點線圖時,常常會遇到這樣一個困擾:多條…

Java基礎 Day19

一、泛型(JDK5引入) 1、基本概念 在編譯階段約束操作的數據類型,并進行檢查 好處:統一數據類型,將運行期的錯誤提升到了編譯期 泛型的默認類型是 Object 2、泛型類 在創建類的時候寫上泛型 在創建具體對象的時候…

Gitlab-Runner安裝

文章目錄 helm方式安裝在K8S上參考gitlab CI/CD 文件變量緩存服務器K8S部署 docker鏡像mavendocker安裝docker buildx minionodehelmkubectlsonar-scanner-cli 問題清除cachehelm執行時無權限 下載鏡像失敗下載gitlab-runner鏡像失敗 Gitlab-ci中使用java前端 helm方式安裝在K8…

在 Ubuntu linux系統中設置時區的方案

查看時區 在 Ubuntu 系統中,可以通過以下方法查看當前時區設置: 1. 使用 timedatectl 命令(推薦) 在終端運行以下命令: timedatectl輸出示例: Local time: Sun 2025-05-25 10:30:00 CST Universal t…

YOLOv8模型剪枝筆記(DepGraph和Network Slimming網絡瘦身)

文章目錄 一、DepGraph剪枝(1)項目準備1)剪枝基礎知識2)DepGraph剪枝論文解讀12)DepGraph剪枝論文解讀23)YOLO目標檢測系列發展史4)YOLO網絡架構(2)項目實戰(YOLOv8應用DepGraph剪枝+finetune)1)安裝軟件環境(基礎環境、Pytorch、YOLOv8)Windows1)安裝軟件環境(…

MySQL:11_事務

事務 一.CURD不加控制,會有什么問題? 二.什么是事務? 事務就是一組DML語句組成,這些語句在邏輯上存在相關性,這一組DML語句要么全部成功,要么全部失敗,是一個整體。MySQL提供一種機制&#xf…

【notepad++如何設置成中文界面呢?】

“Notepad”是一款非常強大的文本編輯軟件,將其界面設置成中文的方法如下: 一、工具/原料: 華為 Matebook 15、Windows 10、Notepad 8.4.6。 二 、具體步驟: 1、找到任意一個文本文件,比如 txt 格式的文…

職坐標嵌入式MCU/DSP與RTOS開發精講

嵌入式系統開發作為現代智能設備與工業控制的核心技術領域,其架構設計與實現邏輯直接影響系統性能與可靠性。本課程以嵌入式系統架構為切入點,系統化梳理從硬件選型到軟件調度的全鏈路知識體系,重點聚焦微控制器(MCU)與…