NLP基础——序列模型(动手学深度学习)

news2025/3/9 22:35:10

序列模型

定义

序列模型是自然语言处理(NLP)和机器学习领域中一类重要的模型,它们特别适合处理具有时间顺序或序列结构的数据,例如文本、语音信号或时间序列数据。

举个例子:一部电影的评分在不同时间段的评分可能是不一样的,锚定效应:当一部电影获得某项大奖后,该电影的评分可能会上升。季节性:新年贺岁电影和圣诞电影在相应时间会更受欢迎。电影评分不是不变的,和时间是有相关性的。

统计工具

处理序列数据需要统计工具和新的深度神经网络架构。我们通常使用 x t x_t xt 表示模型在时间 t t t 的输出, t t t 代表时间步,通过以下公式进行预测: x t ∼ P ( x t ∣ x t − 1 , … , x 1 ) x_t\sim P(x_t|x_{t-1},\dots,x_1) xtP(xtxt1,,x1)
使用条件概率展开: P ( a , b ) = P ( a ) P ( b ∣ a ) = P ( b ) P ( a ∣ b ) P(a,b)=P(a)P(b|a)=P(b)P(a|b) P(a,b)=P(a)P(ba)=P(b)P(ab)
根据条件概率的链式法则有: P ( x ) = P ( x 1 ) ⋅ P ( x 2 ∣ x 1 ) ⋅ P ( x 3 ∣ x 1 , x 2 ) ⋅ ⋯ P ( x t ∣ x 1 , ⋯   , x t − 1 ) P(x)=P(x_1)\cdot P(x_2|x_1)\cdot P(x_3|x_1,x_2)\cdot \cdots P(x_t|x_1,\cdots,x_{t-1}) P(x)=P(x1)P(x2x1)P(x3x1,x2)P(xtx1,,xt1)

对条件概率建模, P ( x t ∣ x 1 , ⋯   , x t − 1 ) = P ( x t ∣ f ( x 1 , ⋯   , x t − 1 ) ) P(x_t|x_1,\cdots,x_{t-1})=P(x_t|f(x_1,\cdots,x_{t-1})) P(xtx1,,xt1)=P(xtf(x1,,xt1))这里的 f f f 函数可以看作对之前的数据进行建模,来预测序列中的下一个元素。(这正是序列模型如循环神经网络(RNN)、长短时记忆网络(LSTM)、门控循环单元(GRU)和最近的Transformer模型所做的事情)

举个序列预测的例子(文本生成):输入一段文本,根据该文本的数据训练好一个模型,现在有一句话“今天天气……”,要求对之后的话进行续写,续写其实就是预测下一个最可能的字(这也是GPT系列模型的原理),这里每个字就可以看作在时间 t t t 的输出。 根据之前的文本,可能之前出现很多次“今天天气真好”,那么“真”字在“今天天气”已经存在的情况下的概率就会比较高 P ( 真 ∣ 今天天气 ) > P ( 不 ∣ 今天天气 ) P(真|今天天气) >P(不|今天天气) P(今天天气)>P(今天天气)。再根据“真”,预测出“好”。

自回归模型

自回归模型:根据自己之前的序列数据建模进行之后元素的预测,所以叫自回归。
输入数据的数量, 输入 x t − 1 , … , x 1 x_{t-1},\dots,x_1 xt1,,x1 本身因 t t t而异。 也就是说,输入数据的数量这个数字将会随着我们遇到的数据量的增加而增加(计算量甚至是指数级的增长), 因此需要一个近似方法来使这个计算变得容易处理。有以下两种策略。

马尔可夫模型

马尔可夫假设认为现实情况下相当长的序列 x t − 1 , ⋯   , x 1 x_{t-1},\cdots,x_1 xt1,,x1 可能是不必要的, 因此我们只需要满足某个长度为 τ \tau τ 的时间跨度, 即使用观测序列 x t − 1 ⋯   , x t − τ x_{t-1}\cdots,x_{t-\tau} xt1,xtτ 来进行 x t x_t xt 的预测。 这样当 t > τ t>\tau t>τ 时参数的数量总是不变的。
在这里插入图片描述

隐变量自回归模型

在序列模型中,隐变量(Latent Variable)是指那些在时间序列数据中不可直接观测,但却对序列的产生及其动态变化有着重要影响的变量。在这里隐变量可以看作对过去序列观测的总结 h t = f ( x 1 , ⋯   , x t − 1 ) h_t = f(x_1,\cdots,x_{t-1}) ht=f(x1,,xt1).
这样模型需要同时预测 x t x_t xt 和更新 h t h_t ht,于是模型形式上就变成: h t = g ( h t − 1 , x t − 1 ) h_t=g(h_{t-1},x_{t-1}) ht=g(ht1,xt1) x t = P ( x t ∣ h t ) x_t=P(x_t|h_t) xt=P(xtht) 在这里插入图片描述

总结

在这里插入图片描述

本专栏用于记录学习笔记和理解,其内容都是基于李沐老师的课程:动手学深度学习。
可以在b站学习老师的课程:动手学深度学习 PyTorch版
教材:教材

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IO流----字节流

字节流 字节流:操作:文件字节输入输出流 :写入数据:读取数据:文件拷贝: 带缓冲区的字节输入输出流:拷贝文件:写入数据:读取数据: 深入 带缓冲区的字节输出流 &#xff1a…

OTTO、亚马逊、Temu卖家如何运用测评补单来提高购买率?

在跨境电商的广阔舞台上,测评补单无疑是一股不可或缺的强劲动力。商家们深知,通过补单这一手段,能够快速为产品注入活力,使销量迅猛攀升,评论如潮涌至,进而在激烈的竞争中脱颖而出,勇攀销量之巅…

论文AI率不达标?AI工具助你一臂之力

告诉大家一个非常残忍的答案,以后所有论文都会被查ai率的。 学术界不仅关注传统的抄袭问题,还增加了一项名为“AIGC检测”的指标。例如知网、维普等平台都能检测论文AI率。 用GPT写论文虽然重复率基本不用担心,但是AI率基本都较高&#xff…

异常概述

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在程序运行过程中,经常会遇到各种各样的错误,这些错误统称为“异常”。这些异常有的是由于开发者将关键字敲错导致的&#xf…

探索魁北克:IT专业人士的移民新天地

在这个数字化飞速发展的时代,IT专业人士无疑是推动社会进步的关键力量。魁北克省,作为加拿大的科技与文化中心,正以其开放的姿态和优越的移民政策,吸引着全球IT精英的目光。今天,让我们一起探索魁北克省为IT专业人士量…

用 DataGridView 控件显示数据

使用DataGridView,可以很方便显示数据。 1.为解决方案添加数据集XSD,用作为项目数据源。 2.拖DataGridView控件到WinForms上。 3.在DataGridView控件的任务处,选择数据源。 4.选好数据源后,VS自动添加DataSet、BindingSourse和T…

2024年5月第四周LLM重要论文总结

本文总结了2024年5月第四周发表的一些最重要的LLM论文。这些论文的主题包括模型优化和缩放到推理、基准测试和增强性能。 LLM发展与基准 1、Towards Modular LLMs by Building and Reusing a Library of LoRAs 基本大型语言模型(LLM)的参数越来越对,这就要求我们研…

nvm for wins下载地方

https://github.com/coreybutler/nvm-windows

使用springboot+vue实现阿里云oss上传

一、前言 我们后端开发中,时常需要用到文件上传的功能,无非是保存到服务器本地或者如阿里云、七牛云这种云存储的方案。本篇介绍一种使用后台springboot结合前端vue实现阿里云oss上传的功能。 二、前端实现过程 前端实现一个通用的上传组件UploadFile…

C# 声音强度图绘制

C# 声音强度图绘制 采集PCM音频数据 音频原来自麦克风 音频源来自录音文件 处理PCM音频数据 将PCM数据进行强度值换算 private void UpdateVoice(double[] audio){// 计算RMS值double rms Math.Sqrt(audio.Select(x > x * x).Average());// 将RMS值转换为分贝值&#x…

【Js】深入浅出的js for循环 for loop以及闭坑指南

在JavaScript中使用forEach循环来删除数组中的特定元素可能会导致一些问题,因为forEach不允许你在迭代过程中修改数组的长度。 这会导致意外的行为,例如跳过元素或错误地索引。因此,建议使用其他方法来安全地删除数组中的元素。 存在的问题 1…

大数据基础问题:在Hive中如何实现全增量统一的UDTF、内置函数、聚合、Join等计算引擎常见算子?

仁者见仁智者见智,每个程序员的方法都不一样,老的程序员和新的程序员之间的思维差距很大,新入公司的和老员工的代码差距也很大。 在Apache Hive中,实现全增量统一的用户定义表生成函数(UDTF)、内置函数、聚…

数据结构:模拟栈

数据结构&#xff1a;模拟栈 题目描述参考代码 题目描述 输入样例 10 push 5 query push 6 pop query pop empty push 4 query empty输出样例 5 5 YES 4 NO参考代码 #include <iostream>using namespace std;const int N 1000010;int m, x; int q[N]; string op; int…

爬虫之反爬思路与解决手段

阅读时间建议&#xff1a;4分钟 本篇概念比较多&#xff0c;嗯。。 0x01 反爬思路与解决手段 1、服务器反爬虫的原因 因为爬虫的访问次数高&#xff0c;浪费资源&#xff0c;公司资源被批量抓走&#xff0c;丧失竞争力&#xff0c;同时也是法律的灰色地带。 2、服务器反什么…

Docker基础篇之Docker常规软件安装

文章目录 1. 总体步骤2. 安装tomcat3. 安装Mysql4. 安装Redis 1. 总体步骤 安装软件的总体步骤如下所示&#xff1a; 搜索镜像拉取镜像查看镜像启动镜像停止容器移除容器 2. 安装tomcat docker hub上查找tomcat镜像 或者使用一下命令查找&#xff1a; docker search tomca…

微信小游戏性能优化解决方案全新发布

小游戏凭借其简单易上手、玩法多样、互动性强的特点&#xff0c;迅速在市场中崭露头角。MMO、ARPG、卡牌等游戏类型也纷纷入局。玩家对启动时间长、发热、加载缓慢、闪退等问题也越来越敏感。 为了突破这些性能瓶颈&#xff0c;UWA全新发布了针对微信小游戏的性能优化解决方案…

240.搜索二维矩阵

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,…

深度学习中torch.max函数的作用

文章目录 解释代码举例 解释 torch.max 是 PyTorch 中的一个函数&#xff0c;用于在张量中沿指定维度计算最大值。它有两种用法&#xff1a; ① 如果只提供一个输入张量&#xff0c;则返回该张量中的最大值和对应的索引。     ② 如果提供两个输入张量&#xff0c;则返回两…

算法学习笔记——时间复杂度和空间复杂度

时间复杂度和空间复杂度 常数操作&#xff1a; 固定时间的操作&#xff0c;执行时间和数据量无关 位运算 > 算数运算 > 寻址 > 哈希运算&#xff0c;都是常数操作&#xff0c;哈希运算操作时间最慢 链表的get(i)方法不是常数操作&#xff0c;因为链表不是连续的存储…

【第三节】C/C++数据结构之栈与队列

目录 一、数据结构-栈 1.1 栈的定义 1.2 栈的 ADT (Abstract Data Type) 1.3 栈的顺序存储结构及实现 二、数据结构-队列 2.1 队列的定义 2.2 队列的 ADT 2.3 队列的顺序存储结构与实现 2.4 优先队列 2.5 各种队列异同点 一、数据结构-栈 1.1 栈的定义 栈(Stack)可…