BERT學習筆記

論文:《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》,2019

代碼:[tensorflow],[pytorch]

來源:李沐精度BERT

0、摘要

與之前模型的區別:

  • GPT考慮的是一個單向預測,用左邊的詞預測右邊的詞;但BERT則是同時利用左邊和右邊的詞,來預測中間的詞

  • ELMO用的BiLSTM,但是它使用的是RNN結構,在應用到下游任務時它需要對模型結構做調整;但BERT使用的是transformer,在下游任務中只需要改上層的一小部分就可以了

基本效果:

  • 11個任務上取得更高的精度

  • GLUE提升7.7%,至80.5%;MultiL1提升4.6%,至86.7%;SQuAD v1.1提升1.5,至93.2;SQuAD v2提升5.1,至83.1

1、導言

句子層面的任務:情感識別

單詞層面的任務:命名實體識別

下游任務使用預訓練模型的兩種方式:

  • Feature-based:下游任務先用訓練好的預訓練模型來提取訓練語料的特征,這個特征可能是預訓練模型encoder的輸出,也可能是某個中間層的隱藏狀態;然后下游任務再用這個特征對自己的模型做訓練。簡單來說,就是用預訓練模型做一個特征提取器?

  • Fine-tuning:根據下游特定的任務,在原來的預訓練模型上進行一些結構方面的修改,這些修改通常是在模型的最后一層,使得模型輸出是當前任務所需要的;然后在新的語料上重新訓練修改后的模型。

之前工作的局限性:從左到右,單向,不太符合人類對語言的理解

MLM:Masked Language Model,帶掩碼的語言模型

貢獻:

(1)展示了雙向信息的重要性

(2)第一個基于微調、且在各項任務上都取得優越性能的預訓練模型

2、相關工作

非監督的基于特征的方法:代表作是ELMo

非監督的微調方法:代表作是GPT

在有標注的數據上做遷移學習

3、BERT

Pre-training:在無標注的數據上做訓練

Fine-tuning:模型首先用預訓練好的模型做參數初始化,然后用下游任務標注好的數據對所有的參數做訓練

image-20240222195623044

L:transformer塊的個數

H:隱藏層的大小

A:自注意力機制模塊head的數量

LHATotal parameters
BERT_Base1276812110M
BERT_Large24102416340M

切詞方式:WordPiece(類似于BPE,字節對編碼??)

句子的第一個 token 永遠是 [CLS],它代表 classification,其在最后一個隱藏層的輸出就代表整個序列在句子層面的信息。

句子與句子之間用一個 [SEP] 分割,它代表 separate。

image-20240222201913130

上圖即為BERT嵌入層的做法,分為三部分:

  • Token Embedding:詞元的嵌入,就是正常的單詞嵌入向量
  • Segment Embedding:詞元屬于哪一個句子的嵌入,是屬于第一個句子,還是屬于第二個句子(第一個[SEP]屬于第一個句子)
  • Position Embedding:詞元的位置嵌入,是在整個輸入序列中的位置(不是在單獨某一個句子中的位置)

BERT用的是transformer的編碼器(沒用decoder),所以它的每一個詞都會跟句子中的其他詞計算注意力關系。

預訓練中兩個比較重要的點:(1)目標函數;(2)數據。

任務一:Masked LM,預訓練的數據有Mask,但是微調的數據沒有Mask,這會帶來一些問題(什么問題??),解決方案是:

  • 15%被選中的待預測詞,有80%的概率被替換成 [Mask] 掩碼符號,有10%的概率被替換成隨機的詞元,有10%的概率保持不變但依然去做預測。

在這里插入圖片描述

任務二:Next Sentence Prediction(NSP),預測下一個句子

  • 兩個句子A和B,50%的概率B是在A之后(正例),有50%的概率B就是從其他地方選取出來的、跟A無關的一個句子(負例)
image-20240222204150332

注:上面的 ## 表示后面的那個詞跟前面的詞是一個單詞,因為 flightless 是一個不常見的單詞,所以就把它分開成兩個常見的單詞flight和less。

BERT的Fine-Tuning:根據下游任務的形式,設計模型的輸入和輸出(模型本身不需要做太多改變)

  • 如果做分類,就用第一個詞元 [CLS] 的輸出來做分類;
  • 如果做句子預測,就對每個詞元的輸出再加一個輸出層,做softmax做預測;

4、實驗

GLUE:分類任務,對第一個詞元 [CLS] 的輸出做softmax,然后分類。

SQuAD v1.1:Q&A任務,給模型一段話,然后提一個問題,需要在這段話中找出這個問題的答案,這個答案已經在這段話里面了,模型只需要找出答案片段的開始和結尾。

5、消融實驗

BERT用作Feature-Based的效果并不好,用作Fine-Tuning更好一些。

6、結論

(1)使用非監督的預訓練是很好的,這使得那些數據量很小的下游任務也能使用神經網絡

(2)主要的貢獻就是把前人的工作成果擴展到雙向的深度結構上

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

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

相關文章

公司中常用的系統有哪些--制造業篇

摘要 本系列博客主要介紹不同行業中使用的常見系統,本文介紹在制造業或是智能制造方向的常見系統。 智能制造發展史 1973年美國約瑟夫哈林頓(Joseph Harrington)博士在《Computer Integrated Manufacturing》一書中首次提出 CIM&#xff08…

C# 本地方法和lambda實現

概念: 本地函數是一種嵌套在另一成員中的類型的方法。 僅能從其包含成員中調用它們。 下面是本地方法最簡單的一個demo: public static int Show(){int c NewMethod(); return c;static int NewMethod(){#region 測試int a 3;int b 9;int c a b;#endregionre…

python opencv實現車牌識別

目錄 一:實現步驟: 二:實現車牌檢測 一:實現步驟: 使用Python和OpenCV實現車牌識別的步驟大致可以分為以下兩部分: 車牌檢測: 讀取需要進行車牌識別的圖片。 對圖像進行灰度化處理,可能還包括高斯模糊和灰度拉伸。 進行開運算,消除圖像中的噪聲。 將灰度拉伸后的圖…

培養納稅籌劃思維方式,企業稅務籌劃實務操作

一、教程描述 本套稅務籌劃教程,大小447.87M,共有6個文件。 二、教程目錄 前言.mp4 培養納稅籌劃思維方式.mp4 增值稅的稅務籌劃.mp4 企業所得稅的稅務籌劃.mp4 個人所得稅的稅務籌劃.mp4 企業稅務籌劃實務操作(課件).pdf…

MDST150-16-ASEMI三相可控整流模塊MDST150-16

編輯:ll MDST150-16-ASEMI三相可控整流模塊MDST150-16 型號:MDST150-16 品牌:ASEMI 正向電流(Id):150A 反向耐壓(VRRM):1600V 正向浪涌電流:1200A 正…

大數據揭秘:Hadoop短視頻流量分析實戰

??計算機編程指導師 ??個人介紹:自己非常喜歡研究技術問題!專業做Java、Python、微信小程序、安卓、大數據、爬蟲、Golang、大屏等實戰項目。 ??實戰項目:有源碼或者技術上的問題歡迎在評論區一起討論交流! ?? Java實戰 |…

PyTorch概述(一)---圖像變換和增強

TorchVision torchvision 包由流行的數據集、模型架構以及用于計算機視覺的通用圖片轉換工具組成 TorchVision 包構成 圖像變換和增強TVTensors模型和預訓練的權重數據集工具操作圖像和視頻的編/解碼用于模型檢測的特征提取 圖像變換和增強 torchvision支持通用的計算機視…

基于springboot+vue的車輛管理系統(前后端分離)

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

獲取淘寶商品詳情API、商品主圖、圖片搜索api

獲取淘寶詳情API的方式有以下幾種: 使用淘寶開放平臺提供的接口:淘寶開放平臺提供了多個API接口,讓開發者可以通過接口獲取商品詳情信息。你可以到淘寶開放平臺官網申請開發者賬號,并查看相關接口文檔,了解如何使用接…

C語言翻譯環境:預編譯+編譯+匯編+鏈接詳解

目錄 翻譯環境和運行環境 翻譯環境 預處理(預編譯) 編譯 詞法分析 語法分析 語義分析 匯編 鏈接 運行環境 ?翻譯環境和運行環境 在ANSI C的任何?種實現中,存在兩個不同的環境。 第1種是翻譯環境,在這個環境中源代碼被…

H橋逆變方式介紹(單極性)

H橋逆變電路實現的就是一個從DC——AC的過程 這個電路有兩個時序,Q6Q4是一個導通時序,Q5Q7是一個導通時序 左邊兩個是高頻20KHZ的、互補的sPWM波,右邊是低頻的50HZ的PWM波 三角波一般叫載波,正弦波叫調制波(單片機內…

Hbase和Clickhouse對比簡單總結

Hbase和Clickhouse是兩種不同的數據庫系統,它們各自適用于不同的場景。以下是兩者之間的對比: 數據模型: HBase 是一種基于列的存儲系統,它適合處理大規模的數據集,特別是那些需要快速隨機訪問的場景。ClickHouse 則是…

對“絕地求生“源碼調節

調整了一些界面和降低游戲難度 #include "c.h" using namespace std; ExMessage msg; struct ME {int x 100; int y 100; int life 1000; int knapsack[18]; int Maximum_ammunition_capacity 0;int Ammunition_capacity 0; int primary_weapon 0; int moveme…

springboot/ssm倉庫管理系統Java貨物出入庫管理系統wms系統web

springboot/ssm倉庫管理系統Java貨物出入庫管理系統wms系統web 基于springboot(可改ssm)vue項目 開發語言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服務器:tomcat 數據庫&#xff1a…

Vi/Vim 使用小竅門,如何消除搜索后的關鍵字高亮

Vim/Vi 基本上是 *nix 世界最受歡迎的編輯器了,不知道為什么,一直以來覺得和 Emacs 比起來,Vim 更加有親和力。用起來很舒服。 今天就記錄一個困擾了我很久的問題。 大家應該都知道,在 Vi 里面如果要搜索某個關鍵字,…

C語言開發教程

C語言開發教程 電子書下載 下載地址 第一章 導言 1.1 入門 1.2 變量與算術表達式 1.3 for語句 1.4 符號常量 1.5 字符輸入/輸出 1.6 數組 1.7 函數 1.8 參數--傳值調用 1.9 字符數組 1.10 外部變量與作用域 第二章 類型、運算符與表達式 2.1 變量名 2.2 數據類型及長度 2.3 常…

汽車會撞死人,應不應該限制汽車?

激進派表示事故率很低,損失相比汽車帶來的收益不值一提,不能限制汽車 保守派表示行人什么也沒有做錯,卻飛來橫禍,只要發生一起事故,可能對一個家庭就是滅頂之災,應該嚴格限制汽車 兩邊都有道理&#xff0c…

Python-pdfplumber讀取PDF內容

文章目錄 前言一、pdfplumber模塊1.1 pdfplumber的特點1.2 pdfplumber.PDF類1.3pdfplumber.Page類 二 pdfplumber的使用2.1 加載PDF2.2 pdfplumber.PDF 類2.3 pdfplumber.Page 類2.4 讀取PDF2.5 讀取PDF文檔信息2.6 查看總頁數2.7 查看總頁數讀取第一頁的寬度,頁高等…

263集成客服系統:提升電商平臺用戶體驗

{連接:無縫整合客服渠道} 在電子商務領域,客服是保持客戶滿意度和忠誠度的關鍵因素。263集成客服系統允許電商平臺無縫連接到各種客服通道,包括在線聊天、電子郵件和社交媒體等。這種無代碼開發方式不僅消除了傳統API開發的復雜性&#xff…

使用Java調用Cplex求解帶時間窗的車輛路徑問題

使用Java調用Cplex求解VRPTW問題 一、帶時間窗車輛路徑優化問題(Vehicle Routing Problem with Time Window,VRPTW)1.1 問題描述1.2 模型構建 二、使用Java調用Cplex求解VRPTW問題2.1 完整代碼2.2 求解結果 三、求解過程中踩的坑 一、帶時間窗…