BERT模型基本原理及實現示例

??BERT(Bidirectional Encoder Representations from Transformers)是Google在2018年提出的預訓練語言模型,其核心思想是通過雙向Transformer結構捕捉上下文信息,為下游NLP任務提供通用的語義表示。

一、模型架構

??BERT基于Transformer的編碼器(Encoder)堆疊而成,摒棄了解碼器(Decoder)。每個Encoder層包含:

??自注意力機制(Self-Attention):計算輸入序列中每個詞與其他詞的關系權重,動態聚合上下文信息。
前饋神經網絡(FFN):對注意力輸出進行非線性變換。
殘差連接與層歸一化:緩解深層網絡訓練中的梯度消失問題。

??與傳統單向語言模型(如GPT)不同,BERT通過同時觀察左右兩側的上下文(雙向注意力)捕捉詞語的完整語義。

二、預訓練任務

??BERT通過以下兩個無監督任務預訓練模型:

1.遮蔽語言模型(Masked Language Model, MLM)

??訓練過程中,輸入句子中一部分詞會被 (MASK) 標記替換,模型需根據上下文信息預測這些被遮蔽的詞。這種任務迫使模型在訓練時同時考慮文本前后信息,學習更豐富的語言表征。具體操作是,隨機選擇 15% 的詞匯用于預測,其中 80% 情況下用 (MASK) 替換,10% 情況下用任意詞替換,10% 情況下保持原詞匯不變。

2.下一句預測(Next Sentence Prediction, NSP)

??旨在訓練模型理解句子間的連貫性。訓練時,模型接收一對句子作為輸入,判斷兩個句子是否是連續的文本序列。通過該任務,模型能學習到句子乃至篇章層面的語義信息。在實際預訓練中,會從文本語料庫中隨機選擇 50% 正確語句對和 50% 錯誤語句對進行訓練。

三、輸入表示

??BERT的輸入由三部分嵌入相加組成:

??Token Embeddings:詞向量(WordPiece分詞)。
Segment Embeddings:區分句子A和B(用于NSP任務)。
Position Embeddings:Transformer本身無位置感知,需顯式加入位置編碼。

四、微調(Fine-tuning)

??預訓練后,BERT可通過簡單的微調適配下游任務:

??分類任務(如情感分析):用(CLS)標記的輸出向量接分類層。
序列標注(如NER):用每個Token的輸出向量預測標簽。
問答任務:用兩個向量分別預測答案的起止位置。

??微調時只需添加少量任務特定層,大部分參數復用預訓練模型。

五、Python實現示例

(環境:Python 3.11,paddle 1.0.2, paddlenlp 2.6.1)

import paddle
from paddlenlp.transformers import BertTokenizer, BertForSequenceClassification# 1. 加載預訓練模型和分詞器
model_name = 'bert-base-chinese'
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertForSequenceClassification.from_pretrained(model_name, num_classes=2)  # 2分類任務# 2. 準備示例數據 (正面和負面情感文本)
texts = ["這部電影太棒了,演員表演出色!", "非常糟糕的體驗,完全不推薦。"]
labels = [1, 0]  # 1表示正面,0表示負面# 3. 數據預處理
encoded_inputs = tokenizer(texts, max_length=128, padding=True, truncation=True, return_tensors='pd')
input_ids = encoded_inputs['input_ids']
token_type_ids = encoded_inputs['token_type_ids']# 轉換為Paddle張量
labels = paddle.to_tensor(labels)# 4. 模型前向計算
outputs = model(input_ids, token_type_ids=token_type_ids)
logits = outputs# 5. 計算損失和預測
loss_fct = paddle.nn.CrossEntropyLoss()
loss = loss_fct(logits, labels)# 獲取預測結果
predictions = paddle.argmax(logits, axis=1)# 打印結果
print("Loss:", loss.item())
print("Predictions:", predictions.numpy())
print("True labels:", labels.numpy())

在這里插入圖片描述



End.

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

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

相關文章

NPM組件包 json-cookie-csv 等竊取主機敏感信息

【高危】NPM組件包 json-cookie-csv 等竊取主機敏感信息 漏洞描述 當用戶安裝受影響版本的 json-cookie-csv 等NPM組件包時會竊取用戶的主機名、用戶名、工作目錄、IP地址等信息并發送到攻擊者可控的服務器地址。 MPS編號MPS-xo1f-4kue處置建議強烈建議修復發現時間2025-07-…

【Netty+WebSocket詳解】WebSocket全雙工通信與Netty的高效結合與實戰

一、 Netty網絡框架、WebSocket協議基礎 1.1 Netty網絡框架介紹 1.2 WebSocket簡介 1.3 WebSocket握手流程 二、為什么選擇NettyWebSocket? 三、NettyWebSocket與Spring WebSocket 3.1 架構層級對比 3.2 核心組件差異 3.3 協議支持深度 3.4 性能基準測試 3.5 開發…

5、Vue中使用Cesium實現交互式折線繪制詳解

引言 Cesium是一款強大的開源3D地理信息可視化引擎,廣泛應用于數字地球、地圖可視化等領域。在Vue項目中集成Cesium可以快速構建高性能的地理信息應用。本文將詳細介紹如何在Vue項目中實現交互式折線繪制功能,包括頂點添加、臨時繪制、距離計算等核心功…

mysql實戰之主從復制

原理圖理論:一、配置準備每臺主機都安裝mysql對每臺主機都進行對時操作,減少時間誤差[rooteveryone ~]# timedatectl set-timezone Asia/Shanghai [rooteveryone ~]# systemctl restart chronyd.service 對每臺主機都進行關閉防火墻、上下文等&#xff0…

中望CAD2026亮點速遞(5):【相似查找】高效自動化識別定位

本文為CAD芯智庫整理,未經允許請勿復制、轉載!原文轉自:www.xwzsoft.com/h-nd-594.html CAD的相似查找功能主要應用于需要重復操作、標準化控制、一致性檢查或復雜模式識別的場景,通過圖形相似度算法,快速找到匹配的圖…

國產化條碼類庫Spire.Barcode教程:使用 C# 讀取二維碼(QR Code)——從圖片或數據流解析

二維碼已成為現代應用的常見組成部分,廣泛應用于用戶身份驗證、移動支付、商品包裝和活動票務等場景。很多使用 C# 開發的系統需要從圖像或掃描件中提取二維碼信息,因此掌握二維碼識別技術顯得尤為重要。 為滿足這類需求,開發者需要一種既可…

IPSAN 共享存儲詳解:架構、優化與落地實踐指南

一、IPSAN 技術定位與核心價值核心價值對比矩陣:維度IPSANFC-SAN實現方案成本端口成本$500端口成本$2000復用IP網絡設備傳輸距離跨地域(VPN/專線)≤10公里兩地三中心架構運維效率SNMP/CLI管理Zone/ALPA管理自動化運維工具鏈協議標準IETF RFC …

【衛星語音】基于神經網絡的低碼率語音編解碼(ULBC)方案架構分析:以SoundStream為例

摘要 隨著深度學習技術的快速發展,基于神經網絡的音頻編解碼技術已成為下一代音頻壓縮的重要研究方向。本文以Google提出的SoundStream為核心分析對象,深入探討其在低碼率語音編解碼領域的創新架構設計和關鍵技術突破。SoundStream通過全卷積編解碼器網絡…

技術面試問題總結一

MySQL的幾種鎖機制一、從鎖的粒度角度劃分表級鎖機制:它是對整張表進行鎖定的一種鎖。當一個事務對表執行寫操作時,會獲取寫鎖,在寫鎖持有期間,其他事務無法對該表進行讀寫操作;而當事務執行讀操作時,會獲取…

Python(一)

基本語法:變量,語法變量類型:不同于Java,C語言,C,Python在創建一個變量的時候,不需要聲明變量類型,由編譯器自行識別Python語句在只有一個語句的時候語句末尾不需要分號,…

Adaptive AUTOSAR中的Firewall技術:智能汽車網絡安全架構的核心

1 防火墻技術基礎 1.1 定義與演進歷程 防火墻(Firewall)作為一種位于內部網絡與外部網絡之間的網絡安全系統,本質上是依照特定規則允許或限制數據傳輸的信息安全防護機制。在汽車電子電氣架構從分布式向集中式轉變的背景下,防火墻技術已從傳統的IT領域深度融入Adaptive A…

android閃光燈源碼分析

目錄 一、APP層源碼分析 二,framework層代碼分析 ???????2.1 binder溯源 這幾天擼了android11 aosp閃光燈源碼,本著前人栽樹后人乘涼的原則,有志于android系統開發的新同學們提供一盞明燈,照亮你們前行。 本人擼代碼風格&…

文心一言4.5開源部署指南及文學領域測評

📝個人主頁:哈__ 期待您的關注 目錄 一、引言 二、文心一言開源模型 2.1 MoE架構 2.2 文心一言MoE架構 三、文心一言稠密模型部署 3.1 產品選擇 3.2 環境選擇 3.3 Python3.12安裝 3.3 PaddlePaddle-GPU安裝 3.4 FastDeploy-GPU安裝 ?編輯3.…

深入探討 C++ 中的浮點數數據類型

核心概念:IEEE 754 標準 C 中的浮點數(float, double, long double)在絕大多數現代系統上遵循 IEEE 754 標準。這個標準定義了浮點數在內存中的二進制表示方式、運算規則、特殊值(如無窮大、NaN)等。數據類型與精度 fl…

相機:以鼠標點為中心縮放(使用OpenGL+QT開發三維CAD)

很多軟件中(Auto CAD、ODA等)支持以鼠標點為中心進行放縮操作,有什么黑科技嗎? 本章節為相機原理和實現的補充內容,支持鼠標放縮時以鼠標點為中心進行放縮。 對應視頻課程已上線,歡迎觀看和支持~ https:…

??XAMPP安全升級指南:修復CVE-2024-4577漏洞,從PHP 8.2.12升級至PHP 8.4.10??

??1. 背景與漏洞概述?? 近期,PHP官方披露了一個高危漏洞 ??CVE-2024-4577??,該漏洞影響PHP 8.2.x及更早版本,可能導致遠程代碼執行(RCE)或信息泄露。由于XAMPP默認捆綁的PHP版本(如8.2.12)可能受此漏洞影響,建議用戶盡快升級至最新的??PHP 8.4.10??(或官…

ES 壓縮包安裝

以下是 Elasticsearch (ES) 通過 .tar.gz 壓縮包安裝的詳細步驟(適用于 Linux/macOS 系統): 1. 準備工作 1.1 檢查系統依賴 Java 環境:ES 需要 JDK,推薦 OpenJDK 11/17(ES 7.x/8.x 兼容版本)。…

RoboRefer:面向機器人視覺-語言模型推理的空間參考

25年6月來自北航、北大和北京智源的論文“RoboRefer: Towards Spatial Referring with Reasoning in Vision-Language Models for Robotics”。 空間參考是實體機器人與三維物理世界交互的基本能力。然而,即使有了強大的預訓練視覺-語言模型 (VLM),近期方…

【Unity】MiniGame編輯器小游戲(十)連連看【Link】

更新日期:2025年7月9日。 項目源碼:獲取項目源碼 索引 連連看【Link】一、游戲最終效果二、玩法簡介三、正式開始1.定義游戲窗口類2.規劃游戲窗口、視口區域3.方塊 Block①.定義方塊類②.生成方塊所有類型③.生成連連看棋盤④.繪制方塊陣列4.連線 Line①.點擊方塊連線②.嘗試…

Enable ADB Debugging Before Connect

If you don’t enable Developer Options and turn on USB Debugging before plugging in the cable, adb devices won’t detect the phone because the Android system doesn’t trust the connection yet. Here’s what you need to do step-by-step to fix this:? 1. Enab…