預訓練語言模型基礎知識概述

文章目錄

      • 預處理語言模型的發展
      • 預訓練
      • 語言模型
        • 統計語言模型
        • 神經網絡語言模型
      • 詞向量
        • onehot編碼
        • 詞嵌入word embedding
      • Word2Vec模型
      • RNN和LSTM
        • RNN
        • LSTM
      • ELMo模型
        • 預訓練
        • 下游任務
      • Attention
        • 自注意力
        • Masked Self Attention
        • Multi-head Self Attention
      • 位置編碼
      • Transformer概念
      • GPT概念
      • BERT概念
      • 參考鏈接

預處理語言模型的發展

年份技術說明
2013word2vec靜態編碼,無法一詞多義
2014GloVe
2015LSTM/Attention可以處理長距離文本,但存在長距離依賴問題(如梯度消失/爆炸),難以并行化訓練
2016Self-Attention
2017TransformerTransformer是一個模型結構,用自注意力機制self-attention替代循環結構,可實現并行化計算
2018GPT/ELMo/BERT/GNNELMo使用雙向LSTM訓練語言模型,然后將其中間層輸出作為動態詞向量,用于下游任務。BERT結合了ELMo的上下文思想和Transformer的結構
2019XLNet/BoBERTa/GPT-2/ERNIE/T5
2020GPT-3/ELECTRA/ALBERT

預訓練

以圖像領域的預訓練為例,CNN一般用于圖片分類任務,越淺的層學到的特征越通用(橫豎撇捺),越深的層學到的特征和具體任務的關聯性越強。

預訓練的思想具體做法就是,對于一個具有少量數據的任務,首先通過一個現有的大量數據搭建一個CNN模型A,對模型A做出一部分改進(凍結或微調)得到模型B。

(1)凍結:淺層參數使用模型A的參數,高層參數隨機初始化,淺層參數一直不變,然后利用現有小規模圖片訓練參數

(2)微調:淺層參數使用模型A的參數,高層參數隨機初始化,然后利用現有小規模圖片訓練參數,但是在這里淺層參數會隨著任務的訓練不斷發生變化

然后利用模型B的參數對模型A進行初始化,再通過任務中的少量數據對模型A進行訓練。其中模型B的參數是隨機初始化的。

語言模型

語言模型通俗點講就是計算一個句子的概率

給定一句由n個詞組成的句子W=w1,w2,?,wn,計算這個句子的概率P(w1,w2,?,wn),或者計算根據上文計算下一個詞的概率P(wn|w1,w2,?,wn?1)

語言模型有兩個分支,統計語言模型神經網絡語言模型

統計語言模型

統計語言模型的基本思想就是計算條件概率
P ( w 1 , w 2 , ? , w n ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) ? p ( w n ∣ w 1 , w 2 , ? , w n ? 1 ) = ∏ i P ( w i ∣ w 1 , w 2 , ? , w i ? 1 ) \begin{align*} P(w_1,w_2,\cdots,w_n) & = P(w_1)P(w_2|w_1)P(w_3|w_1,w_2)\cdots p(w_n|w_1,w_2,\cdots,w_{n-1}) \\ & = \prod_i P(w_i|w1,w_2,\cdots,w_{i-1}) \end{align*} P(w1?,w2?,?,wn?)?=P(w1?)P(w2?w1?)P(w3?w1?,w2?)?p(wn?w1?,w2?,?,wn?1?)=i?P(wi?w1,w2?,?,wi?1?)?
因為Wn詞只和它前面的k的詞有相關性,用馬爾科夫鏈化簡為二元語言模型公式如下
P ( w i ∣ w i ? 1 ) = c o u n t ( w i ? 1 , w i ) c o u n t ( w i ? 1 ) P(w_i|w_{i-1})=\frac{count(w_{i-1},w_i)}{count(w_{i-1})} P(wi?wi?1?)=count(wi?1?)count(wi?1?,wi?)?
統計語言模型會出現數據稀疏的情況,即訓練時未出現,測試時出現了的未登錄單詞,為了避免0值的出現,使用一種平滑的策略
P ( w i ∣ w i ? 1 ) = c o u n t ( w i ? 1 , w i ) + 1 c o u n t ( w i ? 1 ) + ∣ V ∣ P(w_i|w_{i-1}) = \frac{count(w_{i-1},w_i)+1}{count(w_{i-1})+|V|} P(wi?wi?1?)=count(wi?1?)+Vcount(wi?1?,wi?)+1?

神經網絡語言模型

神經網絡語言模型(NNLM)引入神經網絡架構來估計單詞的分布,通過詞向量的距離衡量單詞之間的相似度。因此對于未登錄單詞,也可以通過相似詞進行估計,進而避免出現數據稀疏問題。

NNLM學習任務是輸入某個句中單詞wt=bert前的t?1個單詞,要求調整網絡中的參數,正確預測單詞bert,即最大化下面公式結果。
P ( w t = b e r t ∣ w 1 , w 2 , ? , w t ? 1 ; θ ) P(w_t=bert|w_1,w_2,\cdots,w_{t-1};\theta) P(wt?=bertw1?,w2?,?,wt?1?;θ)
image-20250621165218206

詞向量

將單詞轉成向量形式,叫詞向量,有如下兩種

onehot編碼

對于onehot編碼,如果采用余弦相似度計算向量間的相似度,任意兩者向量的相似度結果都為0,即任意二者都不相關,也就是說onehot表示無法解決詞之間的相似性問題。

詞嵌入word embedding

對于神經網絡語言模型的矩陣Q(這個矩陣Q和注意力機制中的Q不是一回事),是一個V x m,V代表詞典大小,每一行的內容代表對應的單詞的Word Embedding值。

矩陣Q通過訓練學習正確的參數,將單詞的onehot編碼點乘矩陣Q,得到這個詞的Word Embeddind向量Ci。

Word2Vec模型

2013年最火的用語言模型做Word Embedding的工具是Word2Vec

Word2Vec有兩種訓練方法

  • CBOW,核心思想是從一個句子里面把一個詞摳掉,用這個詞的上文和下文去預測被摳掉的這個詞

  • Skip-gram,和CBOW正好反過來,輸入某個單詞,要求網絡預測它的上下文單詞

神經網絡語言模型NNLM主要任務是看到上文去預測下文,其中的Word Embedding只是其中的一個掛件

Word2Vec主要任務就是做Word Embedding

訓練好的Word Embedding矩陣Q,就可以當作其他任務的預訓練模型的參數,進行凍結或微調,應用于其他任務模型。

但是Word2Vec的詞嵌入模型生成的詞向量,無法做到一詞多義

RNN和LSTM

RNN

傳統的神經網絡無法獲取時序信息,然而時序信息在自然語言處理任務中非常重要

image-20250621171457693

每一個模塊A都會把當前信息傳遞給下一個模塊。

RNN的出現,讓處理時序信息變為可能。但這里的時序一般指的是短距離的。

RNN存在梯度消失和梯度爆炸問題,即被近距離梯度主導,而遠距離的梯度影響特別小。

LSTM

LSTM是為了解決RNN缺乏序列長距離依賴問題,LSTM的一個RNN門控結構(LSTM的timestap)

但是LSTM無法做到并行計算

image-20250621172340506

ELMo模型

Word2Vec的詞嵌入模型生成的詞向量,無法做到一詞多義

ELMo可以做到一詞多義

ELMo采用了典型的兩階段過程:

  • 第一個階段是利用語言模型進行預訓練;網絡結構采用了雙層雙向LSTM
  • 第二個階段是在做下游任務時,從預訓練網絡中提取對應單詞的網絡各層的Word Embedding作為新特征補充到下游任務中。
預訓練

image-20250623101544877

使用這個網絡結構利用大量語料做語言模型任務就能預先訓練好這個網絡,如果訓練好這個網絡后,輸入一個新句子,句子中每個單詞都能得到對應的三個Embedding:

  • 最底層是單詞的Word Embedding;
  • 往上走是第一層雙向LSTM中對應單詞位置的Embedding,這層編碼單詞的句法信息更多一些;
  • 再往上走是第二層LSTM中對應單詞位置的Embedding,這層編碼單詞的語義信息更多一些。
下游任務

image-20250623102159648

對于QA(question-answer)任務,輸入問句為X

  • 先將句子X作為預訓練好的ELMo網絡的輸入,這樣句子X中每個單詞在ELMO網絡中都能獲得對應的三個Embedding

  • 之后給予這三個Embedding中的每一個Embedding一個權重a,這個權重可以學習得來,根據各自權重累加求和,將三個Embedding整合成一個;

  • 然后將整合后的這個Embedding作為X句在自己任務的那個網絡結構中對應單詞的輸入,以此作為補充的新特征給下游任務使用。

  • 對于上圖所示下游任務QA中的回答句子Y來說也是如此處理。

因為ELMo給下游提供的是每個單詞的特征形式,所以這一類預訓練的方法被稱為“Feature-based Pre-Training”。

Attention

注意力模型從大量信息Values中篩選出少量重要信息,這些重要信息一定是相對于另外一個信息Query而言是重要的

從編碼器的每個輸入向量創建三個向量因此,對于每個單詞,我們創建一個 Query 向量、一個 Key 向量和一個 Value 向量。這些向量是通過將嵌入向量乘以我們在訓練過程中訓練的三個矩陣來創建的。

Q/K/V的定義和作用

  • Query(Q):表示當前需要關注的詞(或位置)的“提問”,用于與其他位置的鍵(Key)進行匹配。
  • Key(K):表示序列中每個詞的“索引”,用于與 Query 計算相關性。
  • Value(V):表示序列中每個詞的“實際內容”,最終根據注意力權重加權求和得到輸出。
  • Query 是你的搜索關鍵詞。
  • Key 是數據庫中的文檔標題或關鍵詞。
  • Value 是文檔的實際內容。 搜索引擎會用 Query 和 Key 計算匹配度,然后返回對應的 Value

按照如下流程計算出每個單詞經過注意力層的輸出向量Z,這時Thinking這個詞經過注意力機制得到的向量Z就包含了這個詞在所在句子中的重要程度了。即Think相對于Thinking和Machines這句話的加權輸出。

image-20250623103309032

自注意力

自注意力強調QKV三個矩陣都源自于輸入X本身

因為Self Attention在計算過程中會直接將句子中任意兩個單詞的聯系通過一個計算步驟直接聯系起來,所以遠距離依賴特征之間的距離被極大縮短,有利于有效地利用這些特征

每個單詞的計算是可以并行處理的

但是由于文本長度增加時,訓練時間也將會呈指數增長

Masked Self Attention

這里的Masked就是要在做語言模型(或者像翻譯)的時候,不給模型看到未來的信息

例如在補全或生成回答時,每次生成一個單詞后,當前回答變成從頭開始到當前單詞的句子,后面的單詞未知,需要下一步生成。

Multi-head Self Attention

允許模型在不同的語義或位置組合上分配注意力權重,避免單一注意力頭只能捕捉一種固定模式

將 Q/K/V 矩陣分割為多個獨立的子空間(頭),每個頭學習不同的注意力模式

image-20250623105220968

位置編碼

Attention解決了長距離依賴問題,并且可以支持并行化。但是也丟棄了輸入序列X的中的各個單詞在句子中的位置序列關系。

因此在對X進行Attention計算之前,在X詞向量中加上位置信息

參考https://www.cnblogs.com/nickchen121/p/16470569.html#tid-YGp2KR

某個單詞的位置信息是其他單詞位置信息的線性組合,這種線性組合就意味著位置向量中蘊含了相對位置信息。

Transformer概念

img

img

GPT概念

NLP中兩種預訓練方法:Feature-based Pre-Training基于Fine-tuning的模式

前者以ELMo為代表,后者以GPT為典型

image-20250623110530185

GPT是Generative Pre-Training的簡稱,生成式的預訓練。主要基于Transformer的Decoder堆疊結構,不包含Encoder部分

GPT也采用兩階段過程:

  • 第一個階段:利用語言模型進行預訓練;
  • 第二個階段:通過 Fine-tuning 的模式解決下游任務。

BERT概念

Bidirectional Encoder Representations from Transformers

它的核心特點是

  • 基于 Transformer Encoder 架構,
  • 使用雙向注意力機制(bidirectional attention)建模上下文,
  • 通過 Masked Language Model 進行預訓練,提升自然語言理解能力。

BERT參考了 ELMO 模型的雙向編碼思想、借鑒了 GPT 用 Transformer 作為特征提取器的思路、采用了 word2vec 所使用的 CBOW 方法

image-20250623123629315

BERT和ELMo、GPT比較

  • BERT和ELMo區別在與,ELMo使用LSTM作為特征提取器,有長距離問題和無法并行計算問題,而BERT用transformer塊作為特征提取器,解決了上述問題。
  • BERT和GPT的區別在于,BERT使用transformer encoder,將GPT的單向編碼改成雙向編碼,雖然舍棄了文本生成能力,但是換來了更強的語義理解能力。

參考鏈接

https://www.cnblogs.com/nickchen121/p/16470569.html#tid-YGp2KR
https://blog.csdn.net/qq_62954485/article/details/146191691

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

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

相關文章

瀏覽器工作原理24 [#]分層和合成機制:為什么css動畫比JavaScript高效

引用 《瀏覽器工作原理與實踐》 本文主要講解渲染引擎的分層和合成機制,因為分層和合成機制代表了瀏覽器最為先進的合成技術,Chrome 團隊為了做到這一點,做了大量的優化工作。了解其工作原理,有助于拓寬你的視野,而且也…

【數字后端】-什么是RC corner? 每種Corner下有什么區別?

芯片的寄生參數可以在多個corner下提取,他們對應了不同情況的net delay Typical:R和C都是標準值Cmax(Cworst):C最大的互連角,R小于TypicalCmin(Cbest):C最小,R大于TypicalRCmax(RCworst):互連線…

HarmonyOS開發基礎 --鴻蒙倉頡語言基礎語法入門

倉頡編程語言是華為自主研發的一種面向全場景應用開發的現代編程語言,具有高效編程、安全可靠、輕松并發和卓越性能等特點。本節將簡單介紹倉頡語言的部分語法和使用,幫助開發者快速上手。 1.3.1:數據類型 整數 倉頡把整數分為有符號和無符…

Excel文件比較器v1.3,html和js寫的

Excel文件比較器v1.3 版本說明:v1.3 1添加支持文件格式:CSV。 2,添加60條歷史記錄保存功能 - 用于保存比對結果。歷史記錄保存在瀏覽器的localStorage中,這是一個瀏覽器提供的本地存儲機制,數據會一直保留直到用戶…

Kimi“新PPT助手” ,Kimi全新自研的免費AI生成PPT助手

大家好,這里是K姐。 一個幫你用AI輕松生成精美PPT的女子。 前段時間給大家分享了一期用智能體做PPT的對比測評,很多友友都表示:那 Kimi 呢? 今天偶然發現 Kimi 新增了一個叫“新PPT助手”的功能,立馬上手體驗了一下…

MySQL DATETIME類型存儲空間詳解:從8字節到5字節的演變

在MySQL數據庫設計中,DATETIME類型用于存儲日期和時間信息,但其存儲空間大小并非固定不變,而是隨MySQL版本迭代和精度定義動態變化。本文將詳細說明其存儲規則,并提供清晰的對比表格。 一、核心結論 MySQL 5.6.4 是分水嶺&#…

Gartner發布中國企業應用生成式AI指南:避免12 個 GenAI 陷阱

GenAI 技術(例如 AI 代理和 DeepSeek)的快速迭代導致企業抱有不切實際的期望。本研究借鑒了我們與中國 AI 領導者就常見的 GenAI 陷阱進行的討論,并提供了最終有助于成功采用的建議。 主要發現 接受調查的首席信息官表示,生成式人…

Vue3中ref和reactive的區別與使用場景詳解

在 Vue 3 中,響應式系統進行了全新設計,ref 和 reactive 是其中的核心概念。 ### 一、ref 的使用 ref 適用于基本數據類型,也可以用于對象,但返回的是一個帶 .value 的包裝對象。 js import { ref } from vue const count ref(…

React性能優化:父組件如何導致子組件重新渲染及避免策略

目錄 React性能優化:父組件如何導致子組件重新渲染及避免策略什么是重新渲染?父組件如何"無辜"地讓子組件重新渲染?示例 1: 基礎父組件狀態變更示例 2: 傳遞未變化的原始類型Prop示例 3: 傳遞引用類型Prop(對象&#xf…

圖的拓撲排序管理 Go 服務啟動時的組件初始化順序

在構建復雜的 Go 應用程序時,服務的啟動過程往往涉及多個組件的初始化,例如日志、配置、數據庫連接、緩存、服務管理器、適配器等等。這些組件之間通常存在著復雜的依賴關系:日志可能需要配置信息,數據庫連接可能依賴日志和追蹤&a…

【物理重建】SPLART:基于3D高斯潑濺的鉸鏈估計與部件級重建

標題:《SPLART: Articulation Estimation and Part-Level Reconstruction with 3D Gaussian Splatting》 項目:https://github.com/ripl/splart 文章目錄 摘要一、引言二、相關工作2.1 數據驅動的鉸鏈學習2.2 物體重建的表征方法2.3 鉸鏈物體重建 三、方…

vscode中vue自定義組件的標簽失去特殊顏色高亮

遇到的問題 最近接觸了一個歷史遺留項目時,我遭遇了堪稱"史詩級屎山"的代碼結構——各種命名混亂的自定義組件和原生HTML標簽混雜在一起,視覺上完全無法區分。這讓我突然想起,之前在使用vue或者其他框架開發的時候,只要…

【Dify精講】第19章:開源貢獻指南

今天,讓我們深入 Dify 的開源貢獻體系,看看這個項目是如何在短短時間內聚集起一個活躍的開發者社區的。作為想要參與 Dify 開發的你,這一章將是你的實戰指南。 一、代碼貢獻流程:從想法到合并的完整路徑 1.1 貢獻前的準備工作 …

Web攻防-CSRF跨站請求偽造Referer同源Token校驗復用刪除置空聯動上傳或XSS

知識點: 1、Web攻防-CSRF-原理&檢測&利用&防御 2、Web攻防-CSRF-防御-Referer策略隱患 3、Web攻防-CSRF-防御-Token校驗策略隱患 一、演示案例-WEB攻防-CSRF利用-原理&構造 CSRF 測試功能點 刪除帳戶 更改電子郵件 如果不需要舊密碼,請…

Drag-and-Drop LLMs: Zero-Shot Prompt-to-Weights

“拖拽式大模型定制”(Drag-and-Drop LLMs: Zero-Shot Prompt-to-Weights)。 核心問題: 現在的大模型(比如GPT-4)很厲害,但想讓它們專門干好某個特定任務(比如解數學題、寫代碼)&am…

抖音視頻怎么去掉抖音號水印保存

隨著抖音成為短視頻平臺的領軍者,越來越多的人喜歡在上面拍攝、觀看和分享各種創意內容。對于用戶來說,下載抖音視頻并去除水印保存,以便后續使用或分享成為了一種常見需求。抖音號水印的存在雖然能幫助平臺追溯視頻源頭,但也讓許…

【RAG技術(1)】大模型為什么需要RAG

文章目錄 為什么需要RAG?RAG的工作原理關鍵的Embedding技術 RAG vs 模型微調:選擇的核心邏輯RAG的關鍵挑戰與解決思路1. 檢索質量決定一切2. 上下文長度限制 實際應用場景分析企業知識問答技術文檔助手法律咨詢系統 構建RAG系統的關鍵步驟總結 為什么需要…

JS紅寶書筆記 - 8.1 理解對象

對象就是一組沒有特定順序的值,對象的每個屬性或者方法都可由一個名稱來標識,這個名稱映射到一個值。可以把對象想象成一張散列表,其中的內容就是一組名值對,值可以是數據或者函數 創建自定義對象的通常方式是創建Object的一個新…

Meson介紹及編譯Glib庫

一.概述 1.Meson 的簡介 Meson(The Meson Build System)是個項目構建系統,類似的構建系統有 Makefile、CMake、automake …。 Meson 是一個由 Python 實現的開源項目,其思想是,開發人員花費在構建調試上的每一秒都是…

Qt元對象系統實踐指南:從入門到應用

目錄 摘要 元對象系統核心概念 項目示例:動態UI配置工具 元對象系統在項目中的應用 1. 信號與槽機制 2. 動態屬性系統 3. 運行時反射能力 4. 屬性綁定與響應 實際項目應用場景 動態UI配置 對象序列化 插件系統 性能優化建議 結論 參考資料 摘要 本文…