【大模型基础_毛玉仁】1.4 语言模型的采样方法


【大模型基础_毛玉仁】1.4 语言模型的采样方法

    • 1.4 语言模型的采样方法
      • 1.4.1 概率最大化方法
        • 1)贪心搜索(GreedySearch)
        • 2)波束搜索(BeamSearch)
      • 1.4.2 随机采样方法
        • 1)Top-K 采样
        • 2)Top-P 采样
        • 3)Temperature 机制


1.4 语言模型的采样方法

语言模型的输出为一个向量,该向量的每一维代表着词典中对应词的概率。自回归范式的文本生成任务中:

  • 语言模型解码:将向量解码为文本的过程。

  • 两类主流的解码方法:(1).概率最大化方法; (2). 随机采样方法。


1.4.1 概率最大化方法

设词典D为 { w 1 , w 2 , w 3 , . . . , w N } \{w_1,w_2,w_3,...,w_N\} {w1,w2,w3,...,wN},第i轮自回归中输出的向量为 o i = { o i [ w d ] } d = 1 ∣ D ∣ o_i = \{o_i[w_d]\}_{d=1}^{|D|} oi={oi[wd]}d=1D,M轮自回归后生成的文本为 { w N + 1 , w N + 2 , w N + 3 , . . . , w N + M } \{w_{N+1},w_{N+2},w_{N+3},...,w_{N+M}\} {wN+1,wN+2,wN+3,...,wN+M}。生成文档的出现的概率计算如下:

P ( w N + 1 : N + M ) = ∏ i = N N + M − 1 P ( w i + 1 ∣ w 1 : i ) = ∏ i = N N + M − 1 o i [ w i + 1 ] P(w_{N+1:N+M}) = \prod_{i=N}^{N+M-1} P(w_{i+1}|w_{1:i}) = \prod_{i=N}^{N+M-1} o_i[w_{i+1}] P(wN+1:N+M)=i=NN+M1P(wi+1w1:i)=i=NN+M1oi[wi+1]

基于概率最大化的解码方法旨在最大化 P ( w N + 1 : N + M ) P(w_{N+1:N+M}) P(wN+1:N+M),本节将介绍两种常用的基于概率最大化的解码方法。

1)贪心搜索(GreedySearch)

贪心搜索在在每轮预测中都选择概率最大的词,即:

w i + 1 = arg ⁡ m a x w ∈ D o i [ w ] w_{i+1} = \arg max_{w \in D} o_i[w] wi+1=argmaxwDoi[w]

  • argmax 用于找出使得后面的函数达到最大值的变量。在这里,它用于选择使得 o i ​ [ w ] o_i​[w] oi[w] 最大的w。

贪心搜索只顾“眼前利益”,忽略了“远期效益”。当前概率大的词有可能导致后续的词概率都很小。贪心搜索容易陷入局部最优,难以达到全局最优解。

以图1.8为例,当输入为“生成一个以长颈鹿开头的故事:长颈鹿”时,预测第一个词为“是” 的概率最高,为0.3。但选定“是”之后,其他的词的概率都偏低。如果按照贪心 搜索的方式,我们最终得到的输出为“是草食”。其概率仅为0.03。而如果我们在 第一个词选择了概率第二的“脖子”,然后第二个词选到了“长”,最终的概率可 以达到0.1。

通过此例,可以看出贪心搜索在求解概率最大的时候容易陷入局部最 优。为缓解此问题,可以采用波束搜索(BeamSearch)方法进行解码。

图1.8: 贪心搜索与波束搜索对比以及概率最大化解码的潜在问题。
在这里插入图片描述

2)波束搜索(BeamSearch)

波束搜索在每轮预测中都先保留b个可能性最高的词 B i = { w i + 1 1 , w i + 1 2 , . . . , w i + 1 b } B_i = \{w_{i+1}^1, w_{i+1}^2, ..., w_{i+1}^b\} Bi={wi+11,wi+12,...,wi+1b}

在结束搜索时,得到M个集合,即 { B i } i = 1 M \{B_i\}_{i=1}^M {Bi}i=1M。找出最优组合使得联合概率最大,即:

{ w N + 1 , . . . , w N + M } = arg ⁡ m a x { w i ∈ B i for  1 ≤ i ≤ M } ∏ i = 1 M o N + i [ w i ] \{w_{N+1}, ..., w_{N+M}\} = \arg max_{\{w^i \in B_i \text{ for } 1 \leq i \leq M\}} \prod_{i=1}^M o_{N+i}[w^i] {wN+1,...,wN+M}=argmax{wiBi for 1iM}i=1MoN+i[wi]

以图1.8为例,如果我们采用b=2的波束搜索方法,我们可以得到“是草食”,“是反刍”,“脖子长”,“脖子优雅”四个候选组合,对应的概率分别为:0.03,0.027,0.1,0.04。我们容易选择到概率最高的“脖子长”

但是,概率最大的文本通常是最为常见的文本。文本缺乏多样性。为了提升 生成文本的新颖度,我们可以在解码过程中加入一些随机元素。下节将对随机采样方法 进行介绍。


1.4.2 随机采样方法

为了增加生成文本的多样性,随机采样的方法在预测时增加了随机性。在每轮预测时,其先选出一组可能性高的候选词,然后按照其概率分布进行随机采样,采样出的词作为本轮的预测结果。

当前,主流的Top-K采样和Top-P采样方法分别通过指定候选词数量和划定候选词概率阈值的方法对候选词进行选择。在采样方法中加入Temperature 机制可以对候选词的概率分布进行调整。

1)Top-K 采样

Top-K采样:每轮预测都选K个概率最高的候选词,然后对这些词的概率用softmax函数进行归一化,得到分布函数:

p ( w i + 1 1 , … , w i + 1 K ) = { exp ⁡ ( o i [ w i + 1 1 ] ) ∑ j = 1 K exp ⁡ ( o i [ w i + 1 j ] ) , … , exp ⁡ ( o i [ w i + 1 K ] ) ∑ j = 1 K exp ⁡ ( o i [ w i + 1 j ] ) } p(w_{i+1}^1, \ldots, w_{i+1}^K) = \left\{ \frac{\exp(o_i[w_{i+1}^1])}{\sum_{j=1}^K \exp(o_i[w_{i+1}^j])}, \ldots, \frac{\exp(o_i[w_{i+1}^K])}{\sum_{j=1}^K \exp(o_i[w_{i+1}^j])} \right\} p(wi+11,,wi+1K)={j=1Kexp(oi[wi+1j])exp(oi[wi+11]),,j=1Kexp(oi[wi+1j])exp(oi[wi+1K])}

  • e x p ( o i [ w i + 1 j ] ) exp(o_i[w_{i+1}^j]) exp(oi[wi+1j]):表示模型对候选词 w i + 1 j w_{i+1}^j wi+1j​ 的评分,通常是通过神经网络计算得到的。

然后根据该分布采样出本轮的预测的结果,即:

w i + 1 ∼ p ( w i + 1 1 , … , w i + 1 K ) w_{i+1} \sim p(w_{i+1}^1, \ldots, w_{i+1}^K) wi+1p(wi+11,,wi+1K)

Top-K 采样可以有效的增加生成文本的新颖度。

两大致命缺陷:

  • 当候选词的分布的方差较大时,可能会导致本轮预测选到概率较小、不符合常理的词,从而产生“胡言乱语”。

  • 当候选词的分布的方差较小时,固定尺寸的候选集中无法容纳更多的具有相近概率的词,导致候选集不够丰富,从而导致所选词缺乏新颖性。

相较而言,Top-P(核采样)动态调整候选集大小,既能过滤低概率词避免荒谬输出,又能在分布平缓时纳入更多候选词,平衡合理性与多样性。

2)Top-P 采样

Top-P 采样的核心思想是:在每一步生成下一个词时,只从累积概率超过某个阈值 p 的最小单词集合中进行随机采样,而不考虑其他低概率的单词。

这种方法也被称为核采样(Nucleus Sampling),因为它只关注概率分布的核心部分,而忽略了尾部部分。

其设定阈值p来对候选集进行选取。其候选集可表示为 S p = { w i + 1 1 , w i + 1 2 , … , w i + 1 ∣ S p ∣ } S_p = \{w_{i+1}^1, w_{i+1}^2, \ldots, w_{i+1}^{|S_p|}\} Sp={wi+11,wi+12,,wi+1Sp},其中,对 S p S_p Sp有, ∑ w ∈ S p o i [ w ] ≥ p \sum_{w \in S_p} o_i[w] \geq p wSpoi[w]p。候选集中元素的分布服从:

p ( w i + 1 1 , … , w i + 1 ∣ S p ∣ ) = { exp ⁡ ( o i [ w i + 1 1 ] ) ∑ j = 1 ∣ S p ∣ exp ⁡ ( o i [ w i + 1 j ] ) , … , exp ⁡ ( o i [ w i + 1 ∣ S p ∣ ] ) ∑ j = 1 ∣ S p ∣ exp ⁡ ( o i [ w i + 1 j ] ) } p(w_{i+1}^1, \ldots, w_{i+1}^{|S_p|}) = \left\{ \frac{\exp(o_i[w_{i+1}^1])}{\sum_{j=1}^{|S_p|} \exp(o_i[w_{i+1}^j])}, \ldots, \frac{\exp(o_i[w_{i+1}^{|S_p|}])}{\sum_{j=1}^{|S_p|} \exp(o_i[w_{i+1}^j])} \right\} p(wi+11,,wi+1Sp)={j=1Spexp(oi[wi+1j])exp(oi[wi+11]),,j=1Spexp(oi[wi+1j])exp(oi[wi+1Sp])}

然后根据该分布采样出本轮的预测的结果,即:

w i + 1 ∼ p ( w i + 1 1 , … , w i + 1 ∣ S p ∣ ) w_{i+1} \sim p(w_{i+1}^1, \ldots, w_{i+1}^{|S_p|}) wi+1p(wi+11,,wi+1Sp)

Top-P采样可以避免选到概率较小、不符合常理的词,从而减少“胡言乱语”

其还可以容纳更多的具有相近概率的词,增加文本的丰富度,改善“枯燥无趣”

3)Temperature 机制

Top-K 采样和 Top-P 采样的随机性由语言模型输出的概率决定,不可自由调整。引入Temperature 机制可以对解码随机性进行调节。

Temperature机制通过对Softmax 函数中的自变量进行尺度变换,然后利用Softmax函数的非线性实现对分布的控 制。设Temperature 尺度变换的变量为T。

引入Temperature 后,Top-K 采样的候选集的分布如下所示:

p ( w i + 1 1 , … , w i + 1 K ) = { exp ⁡ ( o i [ w i + 1 1 ] T ) ∑ j = 1 K exp ⁡ ( o i [ w i + 1 j ] T ) , … , exp ⁡ ( o i [ w i + 1 K ] T ) ∑ j = 1 K exp ⁡ ( o i [ w i + 1 j ] T ) } p(w_{i+1}^1, \ldots, w_{i+1}^K) = \left\{ \frac{\exp\left(\frac{o_i[w_{i+1}^1]}{T}\right)}{\sum_{j=1}^K \exp\left(\frac{o_i[w_{i+1}^j]}{T}\right)}, \ldots, \frac{\exp\left(\frac{o_i[w_{i+1}^K]}{T}\right)}{\sum_{j=1}^K \exp\left(\frac{o_i[w_{i+1}^j]}{T}\right)} \right\} p(wi+11,,wi+1K)= j=1Kexp(Toi[wi+1j])exp(Toi[wi+11]),,j=1Kexp(Toi[wi+1j])exp(Toi[wi+1K])

引入Temperature 后,Top-P 采样的候选集的分布如下所示:

p ( w i + 1 1 , … , w i + 1 ∣ S p ∣ ) = { exp ⁡ ( o i [ w i + 1 1 ] T ) ∑ j = 1 ∣ S p ∣ exp ⁡ ( o i [ w i + 1 j ] T ) , … , exp ⁡ ( o i [ w i + 1 ∣ S p ∣ ] T ) ∑ j = 1 ∣ S p ∣ exp ⁡ ( o i [ w i + 1 j ] T ) } p(w_{i+1}^1, \ldots, w_{i+1}^{|S_p|}) = \left\{ \frac{\exp\left(\frac{o_i[w_{i+1}^1]}{T}\right)}{\sum_{j=1}^{|S_p|} \exp\left(\frac{o_i[w_{i+1}^j]}{T}\right)}, \ldots, \frac{\exp\left(\frac{o_i[w_{i+1}^{|S_p|}]}{T}\right)}{\sum_{j=1}^{|S_p|} \exp\left(\frac{o_i[w_{i+1}^j]}{T}\right)} \right\} p(wi+11,,wi+1Sp)= j=1Spexp(Toi[wi+1j])exp(Toi[wi+11]),,j=1Spexp(Toi[wi+1j])exp(Toi[wi+1Sp])

容易看出:

  • 当T >1时,Temperature机制会使得候选集中的词的概率差距减 小,分布变得更平坦,从而增加随机性。

  • 当0<T<1时,Temperature机制会使得 候选集中的元素的概率差距加大,强者越强,弱者越弱,概率高的候选词会容易被 选到,从而随机性变弱。

Temperature机制可以有效的对随机性进行调节来满足不同的需求。

.


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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/29013.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis - XML CRUD 其他查询

1. XML 配置文件 使用 MyBatis 操作数据库的方式有两种: 注解 (在注解中定义 SQL 语句)XML 配置文件 (在 XML 文件中定义 SQL 语句) 在上一篇博客中, 已经讲解了如何使用注解操作数据库, 本篇文章来讲解如何使用 XML 进行 MyBatis 开发. 使用 XML 的步骤, 和使用注解的步骤…

DeepSeek + 飞书多维表格搭建你的高效工作流

众所周知&#xff0c;大模型DeepSeek擅长于处理大规模语言模型推理任务&#xff0c;特别是在成本降低和思维链推理方面表现出色‌&#xff0c;我们一般把大模型必做我们的大脑&#xff0c;但是一个人不能只有大脑&#xff0c;还需要其他输入输出以及操作支配的眼耳鼻嘴手足等。…

跨域-告别CORS烦恼

跨域-告别CORS烦恼 文章目录 跨域-告别CORS烦恼[toc]1-参考网址2-思路整理1-核心问题2-个人思考3-脑洞打开4-个人思考-修正版1-个人思考2-脑洞打开 3-知识整理1-什么是跨域一、同源策略简介什么是源什么是同源是否是同源的判断哪些操作不受同源策略限制跨域如何跨域 二、CORS 简…

基于Django创建一个WEB后端框架(DjangoRestFramework+MySQL)流程

一、Django项目初始化 1.创建Django项目 Django-admin startproject 项目名 2.安装 djangorestframework pip install djangorestframework 解释: Django REST Framework (DRF) 是基于 Django 框架的一个强大的 Web API 框架&#xff0c;提供了多种工具和库来构建 RESTf…

基于多目标向日葵优化算法(Multi-objective Sunflower Optimization,MOSFO)的移动机器人路径规划研究,MATLAB代码

一、机器人路径规划介绍 移动机器人路径规划是机器人研究的重要分支&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或局部已知的局部路径规划。随着科技的快速发展以及机器人的大量…

cursor使用经验分享(java后端服务开发向)

前言 cursor是一款基于vscode&#xff0c;并集成AI能力的代码编辑器&#xff0c;其功能包括但不限于代码生成及补全、AI对话&#xff08;能够直接将代码环境作为上下文&#xff09;、即时应用建议等等&#xff0c;是一款面向未来的代码编辑器。 对于vscode&#xff0c;最先想…

【Java学习】异常

一、异常的处理过程 异常类的似复刻变量被throw时&#xff0c;会立即中止当前所在的这层方法&#xff0c;即当层方法里throw异常类似复刻变量之后的语句就不会执行了&#xff0c;如果throw异常语句在当层方法中被try{}包裹&#xff0c;则中止就先发生被包裹在了try{}层&#xf…

双足机器狗开发:Rider - Pi

双足机器狗开发:Rider - Pi https://github.com/YahboomTechnology/Rider-Pi-Robot 项目介绍 Rider - Pi是一款为开发者、教育工作者和机器人爱好者设计的桌面双轮腿式机器人,它基于树莓派CM4核心模块构建,具备多种先进功能和特点: 硬件特性 核心模块:采用树莓派CM4核…

vscode 查看3d

目录 1. vscode-3d-preview obj查看ok 2. vscode-obj-viewer 没找到这个插件&#xff1a; 3. 3D Viewer for Vscode 查看obj失败 1. vscode-3d-preview obj查看ok 可以查看obj 显示过程&#xff1a;开始是绿屏&#xff0c;过了1到2秒&#xff0c;后来就正常看了。 2. vsc…

Nginx 本地配置ssl证书

Nginx 本地配置ssl证书 主要为了本地使用https站点访问测试 本地linux 服务器环境为Centos7 本地安装mkcert证书工具 对于 Debian 或 Ubuntu 系统&#xff0c;你可以使用以下命令安装&#xff1a; sudo apt update sudo apt install mkcert # 验证是否安装成功 mkcert --vers…

Redis相关面试题

Redis相关面试题 缓存三剑客 面试官&#xff1a;什么是缓存穿透 ? 怎么解决 ? 缓存穿透是指查询一个一定不存在的数据&#xff0c;如果从存储层查不到数据则不写入缓存&#xff0c;这将导致这个不存在的数据每次请求都要到 DB 去查询&#xff0c;可能导致 DB 挂掉。这种情况…

Android ChatOn-v1.66.536-598-[构建于ChatGPT和GPT-4o之上]

ChatOn 链接&#xff1a;https://pan.xunlei.com/s/VOKYnq-i3C83CK-HJ1gfLf4gA1?pwdwzwc# 添加了最大无限积分 删除了所有调试信息 语言&#xff1a;全语言支持

机器学习(六)

一&#xff0c;决策树&#xff1a; 简介&#xff1a; 决策树是一种通过构建类似树状的结构&#xff08;颠倒的树&#xff09;&#xff0c;从根节点开始逐步对数据进行划分&#xff0c;最终在叶子节点做出预测结果的模型。 结构组成&#xff1a; 根节点&#xff1a;初始的数据集…

求最小公倍数

求最小公倍数 编程实现&#xff1a; 求最小公倍数。 具体要求&#xff1a; 1、小猫询问“请输入第一个数”&#xff0c;并在列表中求出该数的质因数放入列表A&#xff0c;例如输入12&#xff1b; 2、小猫依次询问“请输入第二个数”&#xff0c;并在列表中求出该数的质因数…

【人工智能】GPT-4 vs DeepSeek-R1:谁主导了2025年的AI技术竞争?

前言 2025年&#xff0c;人工智能技术将迎来更加激烈的竞争。随着OpenAI的GPT-4和中国初创公司DeepSeek的DeepSeek-R1在全球范围内崭露头角&#xff0c;AI技术的竞争格局开始发生变化。这篇文章将详细对比这两款AI模型&#xff0c;从技术背景、应用领域、性能、成本效益等多个方…

C/C++蓝桥杯算法真题打卡(Day1)

一、LCR 018. 验证回文串 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; class Solution { public:bool isPalindrome(string s) {int n s.size();// 处理一下s为空字符的情况if (n 0) {return true; // 修正拼写错误}// 定义左右指针遍历字符串int left …

SpringUI高保真动态交互元件库:助力产品原型设计

SpringUI 是一个专为Web设计与开发领域打造的高质量、全面且易于使用的交互元件集合。通过提供一系列预制的、高质量的交互组件&#xff0c;帮助设计师快速构建出功能丰富、界面美观的原型。 ————基础元件&#xff1a; ——————按钮 Button&#xff1a;基础按钮、禁用…

vue+neo4j 四大名著知识图谱问答系统

编号: D039 视频 vueneo4j四大名著知识图谱问答系统 技术架构 vuedjangoneo4jmysql技术实现 功能模块图 问答&#xff1a;基于知识图谱检索、支持图多跳、显示推理路径 姜维的师傅的主公的臣是谁&#xff1a; 马谡 知识图谱&#xff1a;四大名著总共4个图谱 红楼梦图谱 …

学习使用ESP8266进行MQTT通信并在网页上可视化显示

目录 一、工具 二、 流程 三、代码实现 设置MQTT服务器地址 设置服务器和端口号 连接MQTT服务器并订阅话题 回调处理函数 发布数据到话题 四、调试软件使用 打开MQTTx 添加话题 五、网页使用 一、工具 arduino ide esp8266/32单片机 lot物联网网页 MQTTx软件或者m…

大模型应用开发学习笔记

Huggingface 下载模型&#xff1a; model_dirr"G:\python_ws_g\code\LLMProject\session_4\day02_huggingface\transformers_test\model\uer\uer\gpt2-chinese-cluecorpussmall\models--uer--gpt2-chinese-cluecorpussmall\snapshots\c2c0249d8a2731f269414cc3b22dff021…