当前位置: 首页 > news >正文

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

序列模型

定义

序列模型是自然语言处理(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.lryc.cn/news/362170.html

相关文章:

  • 机器学习AI大模型的开源与闭源:哪个更好?
  • 关于大模型多轮问答的两种方式
  • 达梦数据库相关SQL及适配Mysql配置总结
  • Centos7.9实现多台机器ssh免密登录
  • Unity3D DOTS JobSystem物理引擎的使用详解
  • vue3+element-plus 表单校验和循环form表单校验
  • Java集合基础知识点系统性总结篇
  • 智能网联汽车信息安全风险识别与应对策略研究综述
  • python-web应用程序-Django数据库-数据库表设计
  • C#知识|封装典型的SQLServer数据库查询方法。
  • 第一篇 逻辑门(与门、或门、非门、异或门)
  • 车牌号码智能监测识别摄像机
  • Python局部变量:深入探索与实战应用
  • Java面试八股之怎么降低锁竞争
  • 数组的操作方法
  • RK3588 Android13添加开机logo或开机动画
  • JVM学习-监控工具(一)
  • 基础—SQL—DQL(数据查询语言)分页查询
  • 独立开发者通过这100种方式赚钱
  • gitlab服务器迁移(亲测有效)
  • 【刷题(12)】图论
  • FASTGPT:可视化开发、运营和使用的AI原生应用
  • 代码随想录-Day27
  • TalkingData数据统计:洞察数字世界的关键工具
  • printf 一次性写
  • 【Axure高保真原型】切换查看大图列表
  • Ant-Design-Vue动态表头并填充数据
  • Python-匿名函数
  • 探索Web3工具:正确使用区块链平台工具的秘诀
  • 器利而事善——datagrip 的安装以及连接mysql