【大模型基础_毛玉仁】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=nNC(win+1:i1)C(win+1:i),(1.1)

  • C ( w i − n + 1 : i ) C(w_{i−n+1 : i}) C(win+1:i)为词序列 { w i − n + 1 , . . . , w i } \{w_{i−n+1},...,w_i\} {win+1,...,wi}在语料库中出现的次数;

  • C ( w i − n + 1 : i − 1 ) C(w_{{i−n+1}: {i−1}}) C(win+1:i1) 为词序列 { w i − n + 1 , . . . , w i − 1 } \{w_{i−n+1},...,w_{i−1}\} {win+1,...,wi1}在语料库中出现的次数。

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(长颈鹿脖子)=5262=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}\} {wNn,...,wN1}有关,即:

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(wNw1,w2,...,wN1)P(wNwNn,...,wN1)(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=1Np(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=1Np(xi;θ)(1.7)

离散型随机变量的极大似然估计旨在找到θ使得L(θ|x)取最大值。

n-grams 语言模型总结:

n-grams 语言模型通过统计词序列在语料库中出现的频率来预测语言符号的概 率。其对未知序列有一定的泛化性,但也容易陷入“零概率”的困境。

基于各类神经网络的语言模型不断被提出,泛化能力越来越强。基于神经网络的语言模型不再通过显性的计算公式对语言符号的概率进行计算,而是利 用语料库中的样本对神经网络模型进行训练。

.


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


声明:资源可能存在第三方来源,若有侵权请联系删除!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.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等…