【NLP】13. NLP推理方法详解 --- 穷举和贪心搜索
NLP推理方法详解 — 穷举和贪心搜索
在自然语言处理(NLP)任务中,推理(Inference)是指在给定模型的情况下,找到最可能的输出序列。由于模型通常是神经网络,它会为每个可能的输出分配一个概率,我们需要设计算法来找到最佳输出。
穷举搜索(Exhaustive Search)
方法介绍
穷举搜索是一种最直观的搜索方法,它会遍历所有可能的输出序列,计算每个序列的分数,并选择得分最高的那个。
优势
✅ 全局最优:可以找到得分最高的输出序列,因为它考虑了所有可能性。
✅ 结构完整:可以保证输出的整体一致性,而不会因为局部最优选择导致全局不佳。
问题
❌ 计算量巨大:如果有 n 个单词,每个单词有 m 种可能的标签,搜索空间大小为 m n m^n mn,即 指数级增长。
❌ 不可扩展:当句子变长或者词汇量增加时,穷举搜索变得不可行。
*例子
假设我们要翻译 “I love NLP”:
- 假设每个单词有 5 个可能的翻译,那么可能的翻译组合有 5 3 = 125 5^3 = 125 53=125 种。
- 穷举搜索需要计算所有 125 种组合的分数,选择最优的。
贪心方法(Greedy Method)
方法介绍
贪心方法是指 一步步选择当前概率最高的选项,而不考虑未来可能的更优解。
计算复杂度
O(n⋅m)
相比穷举搜索,贪心方法的计算量小了很多,因为它不考虑所有可能的组合,而是 每一步只选择最优的一个。
例子
假设模型计算出以下翻译概率:
I -> ["我" (0.7), "咱" (0.2), "俺" (0.1)]
love -> ["爱" (0.6), "喜欢" (0.3), "热爱" (0.1)]
NLP -> ["自然语言处理" (0.8), "语言学" (0.2)]
贪心方法选择每一步最高概率的词,最终得到:“我 爱 自然语言处理”。
问题
- 可能错过全局最优解。例如:
- “我 喜欢 自然语言处理” 可能更自然,但贪心算法无法回头修改之前的选择。
- 依赖局部信息,而非整体上下文。
贪心推理的不同变体
1. Top-1 方法
📌 方法:每一步选择 最高概率的选项(argmax)。
📌 特点:
- 计算最快,适用于高确定性的任务(如翻译)。
- 容易陷入局部最优,可能导致不自然的句子。
📌 例子
输入:I love NLP
模型输出概率:
I -> ["我" (0.7), "咱" (0.2), "俺" (0.1)]
love -> ["爱" (0.6), "喜欢" (0.3), "热爱" (0.1)]
NLP -> ["自然语言处理" (0.8), "语言学" (0.2)]
Top-1 选择:“我 爱 自然语言处理”。
2. 随机采样(Random Sampling)
📌 方法:每一步按照概率分布 随机选择一个词。
📌 特点:
- 适用于文本生成任务(如对话系统),增加句子多样性。
- 可能选择低概率的词,导致句子不连贯。
📌 例子 假设 love 有以下翻译:
爱 (0.6)
喜欢 (0.3)
热爱 (0.1)
随机采样可能选择:
- “我 爱 自然语言处理”
- “我 喜欢 自然语言处理”
- “我 热爱 语言学”
3. Top-K 采样
📌 方法:每一步只考虑概率最高的 K 个选项,然后 随机采样。
📌 特点:
- 保持了一定的多样性,但不会选择过于罕见的词。
- 需要 重新缩放(rescale) 选择的 K 个词的概率,使它们的和为 1。
📌 例子 假设 K=3:
love -> ["爱" (0.6), "喜欢" (0.3), "热爱" (0.1)]
只会在 “爱”、“喜欢”、“热爱” 之间随机选择,而不会选到 “崇拜” 这种低概率的词。
4. Top-P 采样(Nucleus Sampling)
📌 方法:每一步只考虑 累积概率超过 P% 的选项,然后 随机采样。
📌 特点:
- 适应性更强,避免了固定 K 的局限性。
- 当某个单词的概率很高时,减少随机性。
- 当多个单词概率接近时,增加多样性。
- 需要 重新缩放(rescale) 选中的单词概率,使它们的和为 1。
📌 例子 假设我们设定 P=80%:
love -> ["爱" (0.6), "喜欢" (0.3), "热爱" (0.1), "崇拜" (0.05), "迷恋" (0.05)]
前 80% 概率的词是 “爱” 和 “喜欢”,所以只在这两个中随机选择。
5. 对比采样(Contrastive Sampling)
📌 方法:
- 在选择时 调整得分,根据之前生成的内容降低重复度,提高句子的多样性。
📌 特点:
- 适合长文本生成,减少重复句子。
- 结合其他方法使用,如 Top-K、Top-P 采样。
📌 例子
输入:"I love NLP because NLP is fun"
如果直接使用 Top-1 方法,可能会生成:
"我 爱 自然语言处理,因为 自然语言处理 很 有趣"
对比采样会调整得分,避免重复 "自然语言处理",可能生成:
"我 爱 自然语言处理,因为 这 门 学科 很 有趣"
方法对比
| 方法 | 计算量 | 生成质量 | 适用场景 |
|---|---|---|---|
| Top-1 (argmax) | 最低 | 单一、确定性强 | 适用于翻译、分类 |
| 随机采样 | 低 | 多样性强,但可能不自然 | 适用于对话系统、文本生成 |
| Top-K 采样 | 中等 | 保持一定多样性,避免极端情况 | 适用于诗歌、创意写作 |
| Top-P 采样 | 中等 | 兼顾确定性和多样性 | 适用于自由文本生成 |
| 对比采样 | 最高 | 控制重复,提高连贯性 | 适用于长文本、摘要 |
相关文章:
【NLP】13. NLP推理方法详解 --- 穷举和贪心搜索
NLP推理方法详解 — 穷举和贪心搜索 在自然语言处理(NLP)任务中,推理(Inference)是指在给定模型的情况下,找到最可能的输出序列。由于模型通常是神经网络,它会为每个可能的输出分配一个概率&am…...
Redis延时队列在订单超时未报到场景的应用分享
一、引言 在电商、医疗预约等众多业务场景中,经常会遇到需要处理超时任务的情况。比如医疗预约订单,如果患者在支付成功后,到了预约结束时间还未报到,系统需要自动取消订单。为了实现这样的功能,我们可以利用 Redis 延…...
精心整理-2024最新网络安全-信息安全全套资料(学习路线、教程笔记、工具软件、面试文档).zip
2024最新网络安全-信息安全全套资料(学习路线、教程笔记、工具软件、面试文档),视频教程文档资料共55GB。 一、网络安全-信息安全学习路线 0、网络安全-信息安全思维导图.jpg 1、网络安全大师课 V2024.pdf 2、网络安全行业白皮书.pdf 3、网络…...
多人协同进行qt应用程序开发应该注意什么?
多人协同进行Qt应用程序开发的注意事项 多人协同开发Qt应用程序时,需要注意以下几个关键方面以确保开发效率和代码质量: 1. 代码版本控制 使用Git:建立合理的分支策略(如Git Flow).gitignore配置:确保忽…...
8.4考研408简单选择排序与堆排序知识点深度解析
考研408「简单选择排序与堆排序」知识点全解析 一、简单选择排序 1.1 定义与核心思想 简单选择排序(Selection Sort)是一种选择排序算法,其核心思想是: 每趟选择:从待排序序列中选择最小(或最大&#x…...
C++中ShellExecute函数使用方法说明,如果一开始参数为隐藏,后面还能再显示出来吗
文章目录 一、ShellExecute基础用法函数原型关键参数 nShowCmd示例代码:启动程序并隐藏窗口 二、隐藏后能否重新显示窗口直接答案 三、实现隐藏后显示窗口的步骤1. 获取目标窗口句柄2. 显示窗口 四、完整流程示例五、注意事项六、总结 在C中使用ShellExecute函数时&…...
MySQL数据库精研之旅第五期:CRUD的趣味探索(上)
专栏:MySQL数据库成长记 个人主页:手握风云 目录 一、CRUD简介 二、Create新增 2.1. 语法 2.2. 示例 三、Retrieve检索 3.1. 语法 3.2. 示例 一、CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作:Create(创建)、Retrieve(检索…...
【文件上传】✈️大文件的上传服务器的简单实现
💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥 🏆本篇文章阅读大约耗时五分钟。 ⛳️motto:不积跬步、无以千里 📋📋📋本文目录如下:🎁🎁&a…...
Windows DOS窗口12个命令
DOS 命令是指在 Windows 命令提示符(CMD)中使用的命令行工具,源于早期的 Disk Operating System。虽然现代 Windows 系统更多使用图形界面,但命令提示符仍然是测试人员的重要工具。测试人员通常需要执行文件操作、测试网络连接、监…...
AI加Python的文本数据情感分析流程效果展示与代码实现
本文所使用数据来自于梯田景区评价数据。 一、数据预处理 数据清洗 去除重复值、空值及无关字符(如表情符号、特殊符号等)。 提取中文文本,过滤非中文字符。 统一文本格式(如全角转半角、繁体转简体)。 中文分词与去停用词 使用 jieba 分词工具进行分词。 加载自定义词…...
Go语言手动内存对齐的四大场景与实践指南
Go语言手动内存对齐的四大场景与实践指南 引言:Go的内存对齐机制 Go语言通过编译器自动处理内存对齐问题,开发者通常无需关心底层细节。然而,在特定场景下,手动干预内存对齐是避免程序崩溃或数据错乱的必要操作。本文将深入探讨G…...
PDF多表格结构识别与跨表语义对齐:基于对抗迁移的鲁棒相似度度量模型
文章目录 一. 项目结构二.流程分析2.1 批处理器核心代码解析 三. 跨页表格相似度匹配原理3.1 表头内容相似度-特征向量归一化3.2 表头内容相似度-余弦相似度3.3 定时缓存清理 ocr扫描有其局限性。对于pdf文本类型这种pdfbox,aspose-pdf,spire直接提取文本…...
docker启动nacos+redis+seata
docker启动nacos 最新版本的nacos需要再启动的时候设置mysql的一些属性,【也可以先启动nacos,再到配置文件中找到application.yml设置mysql的一些属性】。 1.如果直接启动nacos设置的mysql我们需要确定两个容器的ip都是一样的。 查看mysql容器中的ip命令…...
从 select 到 epoll:拆解 I/O 多路复用的演进与实战
目录 一、引言:为什么需要 I/O 多路复用? 二、select 1.函数介绍 2.原理 3.样例代码 4.优缺点总结 三、poll 1.函数介绍 2.样例代码 3.优缺点总结 四、epoll 1.函数介绍 2.原理 3.LT和ET两种工作模式 4.优缺点总结 五、核心机制对比&…...
Go后端架构探索:从 MVC 到 DDD 的演进之路
Go语言 MVC 与 DDD 分层架构详细对比 MVC和DDD是后台开发两种流行的分层架构思想,MVC(Model-View-Controller)是一种设计模式,主要用于分离用户界面、业务逻辑和数据模型,便于分层解耦,而DDD(领…...
【力扣hot100题】(017)矩阵置零
还是挺简单的,使用哈希表记录需要置换的行列即可,这样就可以避免重复节省时间。 class Solution { public:void setZeroes(vector<vector<int>>& matrix) {unordered_set<int> row;unordered_set<int> line;for(int i0;i&l…...
One Commander 3,文件管理新体验
One Commander 3 是一款集多功能于一体 Windows 10/11的文件管理工具,其设计目的在于为用户带来多元化的操作体验。这款工具通过支持多栏界面布局,让用户能够迅速且高效地组织和管理文件。此外,它还提供了多主题选项和多种图标集,…...
Ubuntu 下 nginx-1.24.0 源码分析
main 函数在 src\core\nginx.c int ngx_cdecl main(int argc, char *const *argv) {ngx_buf_t *b;ngx_log_t *log;ngx_uint_t i;ngx_cycle_t *cycle, init_cycle;ngx_conf_dump_t *cd;ngx_core_conf_t *ccf;ngx_debug_init();if (ngx_strerror_in…...
c# ftp上传下载 帮助类
工作中FTP的上传和下载还是很常用的。如下载打标数据,上传打标结果等。 这个类常用方法都有了:上传,下载,判断文件夹是否存在,创建文件夹,获取当前目录下文件列表(不包括文件夹) ,获取当前目录下文件列表(不包括文件夹) ,获取FTP文件列表(包括文件夹), 获取当前目…...
Java进阶——静态代理与动态代理
代理模式是一种常用的设计模式,为其他对象提供一种代理以控制对这个对象的访问。代理模式就像是一个中间人,客户端通过代理来间接访问目标对象,可以在不修改目标对象的基础上,对目标对象的功能进行增强或扩展。代理模式主要分为静…...
VS Code 中 .history`文件的来源与 .gitignore`的正确使用
引言 在使用 VS Code 进行 Git 版本控制时,有时会发现项目中多出一个 .history 目录,并被 Git 识别为未跟踪文件。本文将解释 .history 的来源,并提供 .gitignore 的正确配置方法,确保开发环境的整洁性。 1. .history 文件的来源…...
非手性分子发光有妙招:借液晶之力,实现高不对称圆偏振发光
*本文只做阅读笔记分享* 一、圆偏振发光研究背景与挑战 圆偏振发光(CPL)材料在3D显示、光电器件等领域大有用处,衡量它的一个重要指标是不对称发光因子(glum)。早期CPL材料的glum值低,限制了实际应用。为…...
解释器模式_行为型_GOF23
解释器模式 解释器模式(Interpreter Pattern)是一种行为型设计模式,核心思想是定义语言的文法规则,并构建一个解释器来解析和执行该语言中的表达式。它类似于“翻译器”——将符合特定语法规则的文本(如数学公式、脚本…...
OTN(Optical Transport Network)详解
OTN(光传送网)是一种基于**波分复用(WDM)**的大容量光传输技术,结合了SDH的运维管理优势和WDM的高带宽特性,广泛应用于骨干网、城域核心层及数据中心互联(DCI)。 1. OTN 的基本概念 …...
YOLOv8+ Deepsort+Pyqt5车速检测系统
该系统通过YOLOv8进行高效的目标检测与分割,结合DeepSORT算法完成目标的实时跟踪,并利用GPU加速技术提升处理速度。系统支持模块化设计,可导入其他权重文件以适应不同场景需求,同时提供自定义配置选项,如显示标签和保存…...
【干货】前端实现文件保存总结
⚠️⚠️文前推荐一下👉 前端必备工具推荐网站(图床、API和ChatAI、智能AI简历、AI思维导图神器等实用工具): 站点入口:http://luckycola.com.cn/ 前端实现文件保存实现总结 在Web开发中,文件下载是常见的交互需求。本文将系统总结前端实现文…...
并发编程之FutureTask.get()阻塞陷阱:深度解析线程池CPU飚高问题排查与解决方案
FutureTask.get方法阻塞陷阱:深度解析线程池CPU飚高问题排查与解决方法 FutureTask.get()方法阻塞陷阱:深度解析线程池CPU飚高问题排查与解决方法1、情景复现1.1 线程池工作原理1.2 业务场景模拟1.3 运行结果1.4 发现问题:线程池没有被关闭1.…...
DGNN-YOLO:面向遮挡小目标的动态图神经网络检测与追踪方法解析
一、算法结构与核心贡献 1.1 文章结构 采用经典五段式结构: 引言:分析智能交通系统(ITS)中小目标检测与追踪的挑战,提出研究动机。相关工作:综述小目标检测(YOLO系列、Faster R-CNN)、目标追踪(SORT、Transformer)和图神经网络(GNN)的进展。方法论:提出DG…...
在Ubuntu中固定USB设备的串口号
获取设备信息 lsusb # 记录设备的Vendor ID和Product ID(例如:ID 0403:6001)# 获取详细属性(替换X和Y为实际设备号) udevadm info -a /dev/ttyUSBX 结果一般如下 创建udev规则文件 sudo gedit /etc/udev/rules.d/us…...
javaSE————文件IO(2)、
文件内容的读写——数据流 我们对于文件操作使用流对象Stream来操作,什么是流对象呢,水流是什么样的,想象一下,水流的流量是多种的,可以流100ml,也可以流1ml,流对象就和水流很像,我…...
