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) xt∼P(xt∣xt−1,…,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(b∣a)=P(b)P(a∣b)
根据条件概率的链式法则有: 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(x2∣x1)⋅P(x3∣x1,x2)⋅⋯P(xt∣x1,⋯,xt−1)
对条件概率建模, 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(xt∣x1,⋯,xt−1)=P(xt∣f(x1,⋯,xt−1)),这里的 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 xt−1,…,x1 本身因 t t t而异。 也就是说,输入数据的数量这个数字将会随着我们遇到的数据量的增加而增加(甚至是指数级的增长), 因此需要一个近似方法来使这个计算变得容易处理。有以下两种策略。
马尔可夫模型
马尔可夫假设认为现实情况下相当长的序列 x t − 1 , ⋯ , x 1 x_{t-1},\cdots,x_1 xt−1,⋯,x1 可能是不必要的, 因此我们只需要满足某个长度为 τ \tau τ 的时间跨度, 即使用观测序列 x t − 1 ⋯ , x t − τ x_{t-1}\cdots,x_{t-\tau} xt−1⋯,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,⋯,xt−1).
这样模型需要同时预测 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(ht−1,xt−1) x t = P ( x t ∣ h t ) x_t=P(x_t|h_t) xt=P(xt∣ht)
总结
本专栏用于记录学习笔记和理解,其内容都是基于李沐老师的课程:动手学深度学习。
可以在b站学习老师的课程:动手学深度学习 PyTorch版
教材:教材
相关文章:

NLP基础——序列模型(动手学深度学习)
序列模型 定义 序列模型是自然语言处理(NLP)和机器学习领域中一类重要的模型,它们特别适合处理具有时间顺序或序列结构的数据,例如文本、语音信号或时间序列数据。 举个例子:一部电影的评分在不同时间段的评分可能是…...

机器学习AI大模型的开源与闭源:哪个更好?
文章目录 前言一、开源AI模型1.1 开源的优点1.2 开源的缺点 二、闭源AI模型2.1 闭源的优点2.2 闭源的缺点 三、开源与闭源的平衡3.1 开源与闭源结合的案例3.2 开源与闭源的战略选择 小结 前言 在过去的几年里,人工智能(AI)和机器学习…...

关于大模型多轮问答的两种方式
前言 大模型的多轮问答难点就是在于如何精确识别用户最新的提问的真实意图,而在常见的使用大模型进行多轮对话方式中,我接触到的只有两种方式: 一种是简单地直接使用 user 和 assistant 两个角色将一问一答的会话内容喂给大模型,…...

达梦数据库相关SQL及适配Mysql配置总结
🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…...
Centos7.9实现多台机器ssh免密登录
1.本机(172.16.10.228)先生成密钥对 ssh-keygen -t rsa 2.执行命令,把本机公钥拷贝到远程机器 ssh-copy-id rootdistinctIp 3.查看一下远程机器 、/root/.ssh/authorized_keys文件 cat /root/.ssh/authorized_keys 会看到里边多了个公钥…...
Unity3D DOTS JobSystem物理引擎的使用详解
前言 Unity3D DOTS(Data-Oriented Technology Stack)是Unity引擎的一项新技术,旨在提高游戏性能和扩展性。其中的Job System是一种用于并行处理任务的系统,可以有效地利用多核处理器的性能。在本文中,我们将重点介绍如…...
vue3+element-plus 表单校验和循环form表单校验
1.HTML页面 //el-form 标签添加上 ref"form2Form" :rules"rules2" :model"form2" 正常表单校验 //没有循环表单的使用事例<el-form-item label"投保人名称" class"insurance-date-no1" prop"tbrName">…...

Java集合基础知识点系统性总结篇
目录 集合一、图解集合的继承体系?([图片来源](https://www.cnblogs.com/mrhgw/p/9728065.html))点击查看大图二、List,Set,Map三者的区别?三、List接口的实现3.1、Arraylist 、 LinkedList、Vector3.2、Arraylist 、 LinkedList、…...

智能网联汽车信息安全风险识别与应对策略研究综述
摘要:随着智能网联汽车技术的飞速发展,其信息安全问题逐渐成为公众关注的焦点。本文概述了智能网联汽车技术的发展背景和信息安全风险的来源,采用STRIDE威胁分析方法对智能网联汽车的四层模型进行风险识别,进一步探讨了抗女巫攻击…...
python-web应用程序-Django数据库-数据库表设计
python-web应用程序-Django数据库-数据库表设计 在models中创建一个类会自动对数据库进行管理,那么如何用类的声明来实现数据库表的设计呢? from django.db import models# Create your models here. class Department(models.Model):title models.Ch…...
C#知识|封装典型的SQLServer数据库查询方法。
哈喽,你好啊,我是雷工! 前边学习封装了增删改的方法封装: 《C#知识|通用数据访问类SQLHelper的编写》; 本节继续学习将两种典型的查询方法封装成类。 下边为学习笔记。 01 封装单一返回结果的封装 在查看封装后的代码之前,可以先看下封装前代码的写法: 《C#知识|通过A…...

第一篇 逻辑门(与门、或门、非门、异或门)
一、实验目的 了解DE1-SOC开发板一些外设。 掌握常用组合逻辑门电路的基本原理。 学习Verilog HDL的基本语法。 学习使用ModelSim工具对设计的电路进行仿真,包括编写Testbench仿真代码,以及ModelSim工具的使用。 熟悉使用Quartus软件从创建Quartus工…...

车牌号码智能监测识别摄像机
车牌号码智能监测识别摄像机是一项革命性的技术,为交通管理和安全提供了全新的解决方案。这种摄像机利用先进的人工智能和图像识别技术,能够实时监测道路上的车辆,并准确识别车辆的车牌号码,为交通管理和安全提供了强有力的支持。…...
Python局部变量:深入探索与实战应用
Python局部变量:深入探索与实战应用 在Python编程中,局部变量是一个至关重要的概念。它们被定义在函数或方法内部,并且只在定义它们的那个特定的代码块中可见。然而,局部变量的使用并不总是那么简单明了,尤其是当涉及…...

Java面试八股之怎么降低锁竞争
怎么降低锁竞争 减少锁的持有时间: 尽量缩短线程持有锁的时间,只在必要时才获取锁,一旦操作完成立即释放锁。可以通过将同步代码块的范围缩小到最小必要程度来实现,避免在锁保护的代码块中执行耗时操作或等待操作,比如…...
数组的操作方法
数组的操作方法 forEach 循环 数组的私有方法 7个内置操作方法 1.push 尾部添加 2.pop 尾部删除 3.shift 头部删除 4.unshift 头部添加 5.splice 删除 替换 插入(本质是删除 返回的是删除的元素组成的数组[因为可以删除多个…...

RK3588 Android13添加开机logo或开机动画
wzhlenkeng-HP-Pro-Tower-ZHAN-99-G9-Desktop-PC:/media/extern_sda/wzh/rk3588_android/device/rockchip/rk3588$ git show commit e8da2099dccfed7f7b348c2e324d9c3d3e555d39 (HEAD) Author: wzh <wuzenghonglenkeng.com> Date: Tue Jun 4 09:53:48 2024 0800添加开…...

JVM学习-监控工具(一)
使用数据说明问题,使用知识分析问题,使用工具处理问题 无监控,不调优! 命令行工具 在JDK安装目录下,可以查看到相应的命令行工具,如下图 jps(Java Process Status) 显示指定系统内所有的Hotpot虚拟机…...

基础—SQL—DQL(数据查询语言)分页查询
一、引言 上一篇博客学习了排序查询,这次来讲查询的最后一个部分:分页查询。 涉及到的关键字是:LIMIT 。 二、DQL—分页查询 对于分页,不管以后做的是传统的管理系统还是做互联网的项目,基本上都会遇到分页查询的操…...
独立开发者通过这100种方式赚钱
独立开发者可以通过多种方式赚钱: 销售游戏:独立开发者可以通过 Steam、Itch.io 和 App Store 等平台直接向消费者销售他们的游戏。 他们还可以在自己的网站上出售游戏的实体副本或数字下载。 提供游戏内购买:一些游戏包括微交易或游戏内购…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...

FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
Java并发编程实战 Day 11:并发设计模式
【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天,今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案,它们不仅提供了优雅的设计思路,还能显著提升系统的性能…...