【大模型基礎_毛玉仁】1.1 基于統計方法的語言模型


【大模型基礎_毛玉仁】1.1 基于統計方法的語言模型

  • 1.語言模型基礎
    • 1.1 基于統計方法的語言模型
      • 1.1.1 n-grams 語言模型
      • 1.1.2 n-grams 的統計學原理


1.語言模型基礎

語言是概率的。語言模型(LanguageModels, LMs)旨在準確預測語言符號的概率。

將按照語言模型發展的順序依次講解:

  • 基于統計方法的n-grams 語言模型;

  • 基于循環神經網絡(RecurrentNeuralNetwork,RNN)的語言模型;

  • 基于Transformer的語言模型。


1.1 基于統計方法的語言模型

通過對語料庫(Corpus)中的語料進行統計或學習,來獲得預測語言符號概率。

n-grams是最具代表性的統計語言模型。 它基于馬爾可夫假設和離散變量的極大似然估計給出語言符號的概率。

1.1.1 n-grams 語言模型

n-gram指的是長度為n的詞序列。

  • 當n=1時, 稱之為unigram

  • 當n=2時,稱之為bigrams

  • 當n=3時,稱之為trigrams

  • 其他時,稱之為“數字-grams”(如:當n=4 時,稱之為4-grams)

假設,包含N個元素的語言符號可以表示為 w 1 : N = { w 1 , w 2 , w 3 , . . . , w N } w_{1:N} = \{w_1, w_2, w_3, ..., w_N\} w1:N?={w1?,w2?,w3?,...,wN?} w 1 : N w_{1:N} w1:N? 代表文本。

n-grams語言模型,通過依次統計文本中的n-gram及其對應的(n-1)-gram在語料庫中出現的相對頻率,來計算文本 w 1 : N w_{1:N} w1:N? 出現的概率。計算公式如下所示:

P n -grams ( w 1 : N ) = ∏ i = n N C ( w i ? n + 1 : i ) C ( w i ? n + 1 : i ? 1 ) , (1.1) P_{n\text{-grams}}(w_{1:N}) = \prod_{i=n}^{N} \frac{C(w_{i-n+1:i})}{C(w_{i-n+1:i-1})}, \tag{1.1} Pn-grams?(w1:N?)=i=nN?C(wi?n+1:i?1?)C(wi?n+1:i?)?,(1.1)

  • C ( w i ? n + 1 : i ) C(w_{i?n+1 : i}) C(wi?n+1:i?)為詞序列 { w i ? n + 1 , . . . , w i } \{w_{i?n+1},...,w_i\} {wi?n+1?,...,wi?}在語料庫中出現的次數;

  • C ( w i ? n + 1 : i ? 1 ) C(w_{{i?n+1}: {i?1}}) C(wi?n+1:i?1?) 為詞序列 { w i ? n + 1 , . . . , w i ? 1 } \{w_{i?n+1},...,w_{i?1}\} {wi?n+1?,...,wi?1?}在語料庫中出現的次數。

bigrams語言模型的例子:

圖1.1: n-grams 示例語料庫。
在這里插入圖片描述

假設語料庫如圖1.1所示,應用bigrams 對文本“長頸鹿脖子長”(其由{長頸鹿,脖子,長}三個詞構成)出現的概率進行計算,如下式所示:

P bigrams ( 長頸鹿,?脖子,?長 ) = C ( 長頸鹿,?脖子 ) ? C ( 脖子,?長 ) C ( 長頸鹿 ) ? C ( 脖子 ) 。 (1.2) P_{\text{bigrams}}(\text{長頸鹿, 脖子, 長}) = \frac{C(\text{長頸鹿, 脖子}) \cdot C(\text{脖子, 長})}{C(\text{長頸鹿}) \cdot C(\text{脖子})}。 \tag{1.2} Pbigrams?(長頸鹿,?脖子,?)=C(長頸鹿)?C(脖子)C(長頸鹿,?脖子)?C(脖子,?)?(1.2)

在此語料庫中,C(長頸鹿)=5,C(脖子)=6,C(長頸鹿, 脖子)=2,C(脖子, 長) = 2,故有:

P bigrams ( 長頸鹿,?脖子,?長 ) = 2 5 ? 2 6 = 2 15 。 (1.3) P_{\text{bigrams}}(\text{長頸鹿, 脖子, 長}) = \frac{2}{5} \cdot \frac{2}{6} = \frac{2}{15}。 \tag{1.3} Pbigrams?(長頸鹿,?脖子,?)=52??62?=152?(1.3)

由此可見,n-grams 具備對未知文本的泛化能力。但是,這種泛化能力會隨著n的增大而逐漸減弱。應用trigrams對文本“長頸鹿脖子長”出現的概率進行計算,將出現“零概率”的情況。

因此,在n-grams語言模型中,n的值是影響性能的關鍵因素。

1.1.2 n-grams 的統計學原理

n-grams 語言模型是在n階馬爾可夫假設下,對語料庫中出現的長度為n的詞 序列出現概率的極大似然估計

定義1.1(n階馬爾可夫假設):

對于序列 { w 1 , w 2 , w 3 , . . . , w N } \{w_1, w_2, w_3, ..., w_N\} {w1?,w2?,w3?,...,wN?},當前狀態 wN? 出現的概率只與前 n 個狀態 { w N ? n , . . . , w N ? 1 } \{w_{N-n}, ..., w_{N-1}\} {wN?n?,...,wN?1?}有關,即:

P ( w N ∣ w 1 , w 2 , . . . , w N ? 1 ) ≈ P ( w N ∣ w N ? n , . . . , w N ? 1 ) (1.5) P(w_N|w_1, w_2, ..., w_{N-1}) \approx P(w_N|w_{N-n}, ..., w_{N-1}) \tag{1.5} P(wN?w1?,w2?,...,wN?1?)P(wN?wN?n?,...,wN?1?)(1.5)

定義1.2(離散型隨機變量的極大似然估計): (存疑。。。)

給定離散型隨機變量X的分布律為 P { X = x } = p ( x ; θ ) P\{X=x\}=p(x;θ) P{X=x}=p(x;θ)

X 1 , . . . , X N X_1,...,X_N X1?,...,XN? 為來 自X的樣本, x 1 , . . . , x N x_1,...,x_N x1?,...,xN? 為對應的觀察值,θ為待估計參數。

在參數θ下,分 布函數隨機取到 x 1 , . . . , x N x_1,...,x_N x1?,...,xN? 的概率為:

p ( x ∣ θ ) = ∏ i = 1 N p ( x i ; θ ) (1.6) p(x|\theta) = \prod_{i=1}^{N} p(x_i; \theta) \tag{1.6} p(xθ)=i=1N?p(xi?;θ)(1.6)

構造似然函數為:

L ( θ ∣ x ) = p ( x ∣ θ ) = ∏ i = 1 N p ( x i ; θ ) (1.7) L(\theta|x) = p(x|\theta) = \prod_{i=1}^{N} p(x_i; \theta) \tag{1.7} L(θx)=p(xθ)=i=1N?p(xi?;θ)(1.7)

離散型隨機變量的極大似然估計旨在找到θ使得L(θ|x)取最大值。

n-grams 語言模型總結:

n-grams 語言模型通過統計詞序列在語料庫中出現的頻率來預測語言符號的概 率。其對未知序列有一定的泛化性,但也容易陷入“零概率”的困境。

基于各類神經網絡的語言模型不斷被提出,泛化能力越來越強。基于神經網絡的語言模型不再通過顯性的計算公式對語言符號的概率進行計算,而是利 用語料庫中的樣本對神經網絡模型進行訓練。

.


其他參考:【大模型基礎_毛玉仁】系列文章


聲明:資源可能存在第三方來源,若有侵權請聯系刪除!

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

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

相關文章

JavaScript(最后一個元素的索引就是數組的長度減 1)array.length - 1

在不同的編程語言中,表示數組中最后一個元素的方法略有不同,但基本思路都是利用數組的長度或索引來實現。 以下是一些常見編程語言中獲取數組最后一個元素的方法: 1. JavaScript: 使用 array.length - 1 索引: 這是最常見和傳統的方法。Java…

SpringCloud中使用服務名調用場景總結

一 API Gateway 在 Spring Cloud API Gateway 中,通過使用 lb:// 前綴可以實現基于服務名的負載均衡路由。以下是具體的配置和使用方法: 1. 配置服務注冊與發現 確保你的服務已經注冊到服務注冊中心(如 Nacos 或 Eureka)。API …

7V 至 30V 的超寬 VIN 輸入范圍,轉換效率高達 96%的WD5030

WD5030 具備 7V 至 30V 的超寬 VIN 輸入范圍,這一特性使其能夠適應多種不同電壓等級的供電環境,無論是在工業設備中常見的較高電壓輸入,還是在一些便攜式設備經過初步升壓后的電壓,WD5030 都能輕松應對,極大地拓展了應…

深度學習模型Transformer核心組件—自注意力機制

第一章:人工智能之不同數據類型及其特點梳理 第二章:自然語言處理(NLP):文本向量化從文字到數字的原理 第三章:循環神經網絡RNN:理解 RNN的工作機制與應用場景(附代碼) 第四章:循環神經網絡RNN、LSTM以及GR…

利用Ollama+AnythingLLM+本地向量數據庫Milvus+本地DeepSeek大模型實現知識庫的搭建

1. Ollama的搭建 基本介紹 Ollama是一個支持在Windows、Linux和MacOS上本地運行大語言模型的工具。它允許用戶非常方便地運行和使用各種大語言模型,比如Qwen模型等。用戶只需一行命令就可以啟動模型。 Ollama 下載:https://ollama.com/download Ollama 官方主頁&a…

如何搭建個人靜態住宅IP:從零開始

你好!今天我們將一起探索如何從頭開始搭建個人靜態住宅IP。無論您是為了遠程辦公、在線教育還是游戲加速,靜態住宅IP都能帶給您更穩定的網絡體驗。 一、準備階段 1. 明確需求 首先,您需要清楚自己為什么需要靜態住宅IP。可能是為了實現遠程…

國產編輯器EverEdit - 安裝擴展功能的方式

1 擴展管理 1.1 應用場景 由于各行各業工作場景的不同,編輯器不可能為所有行業都定制功能,因此,對于一些特殊的行業應用場景,某些資深工程師可能已經做了一些擴展,并分享到了共享平臺,普通工程師可以安裝這…

CUDA計時函數:精確測量GPU代碼執行時間

在GPU編程中,精確測量代碼執行時間是性能優化的關鍵步驟。CUDA提供了專門的計時工具來幫助開發者準確獲取核函數(Kernel)、內存拷貝等操作的耗時。本文將詳細介紹CUDA計時函數的使用方法,并通過實例代碼演示如何高效測量GPU代碼的…

Go語言集成DeepSeek API和GoFly框架文本編輯器實現流式輸出和對話(GoFly快速開發框架)

說明 本文是GoFly快速開發框架集成Go語言調用 DeepSeek API 插件,實現流式輸出和對話功能。為了方便實現更多業務功能我們在Go服務端調用AI即DeepSeek接口,處理好業務后再用Gin框架實現流失流式輸出到前端,前端使用fetch請求接收到流式的mar…

SAP服務器進程預警通知

在財務月結,HR薪資核算等系統用戶集中使用高峰時期。通過判斷判斷當前系統可用的并行對話框進程數,用戶使用過多給出提示,服務器進程預警通知。 1. 根據配置的進程最大可使用率80%,根據進程數判斷:當進程可用數少于20%…

【Java代碼審計 | 第四篇】SQL 注入防范

文章目錄 Java SQL 注入防御方法類型轉換預編譯查詢(PreparedStatement)使用 ORM 框架(如 MyBatis、Hibernate)白名單限制ORDER BY 語句LIKE 語句 限制數據庫權限過濾和轉義特殊字符監控與日志審計使用 Web 應用防火墻&#xff08…

軟考中級-數據庫-3.3 數據結構-樹

定義:樹是n(n>=0)個結點的有限集合。當n=0時稱為空樹。在任一非空樹中,有且僅有一個稱為根的結點:其余結點可分為m(m>=0)個互不相交的有限集T1,T2,T3...,Tm…,其中每個集合又都是一棵樹,并且稱為根結點的子樹。 樹的相關概念 1、雙親、孩子和兄弟: 2、結點的度:一個結…

選擇排序算法的SIMD優化

一、優化原理 將查找數組最小值索引的SIMD優化的函數嵌入選擇排序主循環,優化最耗時的最小值查找環節,同時保留選擇排序的交換邏輯。 二、關鍵改造步驟 1)最小值查找模塊化 復用SIMD優化的 find_min_index_simd函數。 2)動態子數組處理 每次循環處理 arr[i..n-1] 子數…

考網絡安全工程師證要什么條件才能考?

在當今數字化時代,網絡安全問題日益凸顯,網絡安全工程師成為了一個備受矚目的職業。許多有志于投身這一行業的學子或職場人士,都希望通過考取網絡安全工程師證書來提升自己的專業素養和競爭力。那么,考網絡安全工程師證需要具備哪…

uniapp項目運行失敗Error: getaddrinfo *.bspapp.com 文件查找失敗uview-ui及推薦MarkDown軟件 Typora

一、uniapp項目運行失敗Error: getaddrinfo *.bspapp.com 文件查找失敗uview-ui 在運行一個uniapp項目時,出現報錯 文件查找失敗:uview-ui,Error: getaddrinfo ENOTFOUND 960c0a.bspapp.com。hostname異常,報錯的詳細信息如下&…

使用阿里云 API 進行聲音身份識別的方案

使用阿里云 API 進行聲音身份識別的方案 阿里云提供 智能語音交互(智能語音識別 ASR) 和 聲紋識別(說話人識別) 服務,你可以利用 阿里云智能語音 API 進行 說話人識別,實現客戶身份驗證。 方案概述 準備工…

【Pandas】pandas Series unstack

Pandas2.2 Series Computations descriptive stats 方法描述Series.argsort([axis, kind, order, stable])用于返回 Series 中元素排序后的索引位置的方法Series.argmin([axis, skipna])用于返回 Series 中最小值索引位置的方法Series.argmax([axis, skipna])用于返回 Series…

大模型發展歷程

大模型的發展歷程 大語言模型的發展歷程一、語言模型是個啥?二、語言模型的 “進化史”(一)統計語言模型(SLM)(二)神經語言模型(NLM)(三)預訓練語…

springboot項目使用中創InforSuiteAS替換tomcat

springboot項目使用中創InforSuiteAS替換tomcat 學習地址一、部署InforSuiteAS1、部署2、運行 二、springboot項目打包成war包 特殊處理1、pom文件處理1、排除內嵌的tomcat包2、新增tomcat、javax.servlet-api3、打包格式設置為war4、打包后的項目名稱5、啟動類修改1、原來的不…

Seata

Seata是一款開源的分布式事務解決方案,由阿里巴巴發起并維護,旨在幫助應用程序管理和協調分布式事務。以下是對Seata的詳細介紹: 一、概述 Seata致力于提供高性能和簡單易用的分布式事務服務,它為用戶提供了AT、TCC、SAGA和XA等…