吴恩达深度学习笔记:序列模型(Sequence Models) 1.1-1.2
目录
- 第五门课 序列模型(Sequence Models)
- 第一周 循环序列模型(Recurrent Neural Networks)
- 1.1 为什么选择序列模型?(Why Sequence Models?)
- 1.2 数学符号(Notation)
第五门课 序列模型(Sequence Models)
第一周 循环序列模型(Recurrent Neural Networks)
1.1 为什么选择序列模型?(Why Sequence Models?)
在本课程中你将学会序列模型,它是深度学习中最令人激动的内容之一。循环神经网络(RNN)之类的模型在语音识别、自然语言处理和其他领域中引起变革。在本节课中,你将学会如何自行创建这些模型。我们先看一些例子,这些例子都有效使用了序列模型。
在进行语音识别时,给定了一个输入音频片段 𝑥,并要求输出对应的文字记录 𝑦。这个例子里输入和输出数据都是序列模型,因为 𝑥是一个按时播放的音频片段,输出 𝑦是一系列单词。所以之后将要学到的一些序列模型,如循环神经网络等等在语音识别方面是非常有用的。
音乐生成问题是使用序列数据的另一个例子,在这个例子中,只有输出数据 𝑦是序列,而输入数据可以是空集,也可以是个单一的整数,这个数可能指代你想要生成的音乐风格,也可能是你想要生成的那首曲子的头几个音符。输入的 𝑥可以是空的,或者就是个数字,然后输出序列𝑦。
在处理情感分类时,输入数据𝑥是序列,你会得到类似这样的输入:“There is nothing to like in this movie.”,你认为这句评论对应几星?
系列模型在 DNA 序列分析中也十分有用,你的 DNA 可以用 A、C、G、T 四个字母来表示。所以给定一段 DNA 序列,你能够标记出哪部分是匹配某种蛋白质的吗?
在机器翻译过程中,你会得到这样的输入句:“Voulez-vou chante avecmoi?”(法语:要和我一起唱么?),然后要求你输出另一种语言的翻译结果。
在进行视频行为识别时,你可能会得到一系列视频帧,然后要求你识别其中的行为。在进行命名实体识别时,可能会给定一个句子要你识别出句中的人名。
所以这些问题都可以被称作使用标签数据 (𝑥, 𝑦)作为训练集的监督学习。但从这一系列例子中你可以看出序列问题有很多不同类型。有些问题里,输入数据 𝑥和输出数据𝑦都是序列,但就算在那种情况下,𝑥和𝑦有时也会不一样长。或者像上图编号 1 所示和上图编号 2 的𝑥和𝑦有相同的数据长度。在另一些问题里,只有 𝑥或者只有𝑦是序列。
所以在本节我们学到适用于不同情况的序列模型,下节中我们会定义一些定义序列问题要用到的符号。
1.2 数学符号(Notation)
本节先从定义符号开始一步步构建序列模型。
比如说你想要建立一个序列模型,它的输入语句是这样的:“Harry Potter and Herminoe Granger invented a new spell.”,(这些人名都是出自于 J.K.Rowling 笔下的系列小说 Harry Potter)。假如你想要建立一个能够自动识别句中人名位置的序列模型,那么这就是一个命名实体识别问题,这常用于搜索引擎,比如说索引过去 24 小时内所有新闻报道提及的人名,用这种方式就能够恰当地进行索引。命名实体识别系统可以用来查找不同类型的文本中的人名、公司名、时间、地点、国家名和货币名等等。
现在给定这样的输入数据𝑥,假如你想要一个序列模型输出𝑦,使得输入的每个单词都对应一个输出值,同时这个𝑦能够表明输入的单词是否是人名的一部分。技术上来说这也许不是最好的输出形式,还有更加复杂的输出形式,它不仅能够表明输入词是否是人名的一部分,它还能够告诉你这个人名在这个句子里从哪里开始到哪里结束。比如 Harry Potter(上图编号 1 所示)、Hermione Granger(上图标号 2 所示)。
更简单的那种输出形式:这个输入数据是 9 个单词组成的序列,所以最终我们会有 9 个特征集和来表示这 9 个单词,并按序列中的位置进行索引, x < 1 > 、 x < 2 > 、 x < 3 > x^{<1>}、x^{<2>}、x^{<3>} x<1>、x<2>、x<3>等等一直到 x < 9 > x^{<9>} x<9>来索引不同的位置,我将用 x < t > x^{<t>} x<t>来索引这个序列的中间位置。𝑡意味着它们是时序序列,但不论是否是时序序列,我们都将用𝑡来索引序列中的位置。
输出数据也是一样,我们还是用 y < 1 > 、 y < 2 > 、 y < 3 > y^{<1>}、y^{<2>}、y^{<3>} y<1>、y<2>、y<3>等等一直到 y < 9 > y^{<9>} y<9>来表示输出数据。同时我们用 T x T_x Tx来表示输入序列的长度,这个例子中输入是 9 个单词,所以 T x T_x Tx= 9。我们用𝑇𝑦来表示输出序列的长度。在这个例子里 T x = T y T_x = T_y Tx=Ty,上个视频里你知道 T x T_x Tx和 T y T_y Ty可以有不同的值。
你应该记得我们之前用的符号,我们用 x ( i ) x^{(i)} x(i)来表示第𝑖个训练样本,所以为了指代第𝑡个元素,或者说是训练样本𝑖的序列中第𝑡个元素用 x ( i ) < t > x^{(i)<t>} x(i)<t>这个符号来表示。如果 T x T_x Tx是序列长度,那么你的训练集里不同的训练样本就会有不同的长度,所以 T x ( i ) T_x^{(i)} Tx(i)就代表第𝑖个训练样本的输入序列长度。同样 y ( i ) < t > y^{(i)<t>} y(i)<t>代表第𝑖个训练样本中第𝑡个元素, T y ( i ) T_y^{(i)} Ty(i)就是第𝑖个训练样本的输出序列的长度。
所以在这个例子中, T x ( i ) T_x^{(i)} Tx(i)= 9,但如果另一个样本是由 15 个单词组成的句子,那么对于这个训练样本, T x ( i ) T_x^{(i)} Tx(i)= 15。
既然我们这个例子是 NLP,也就是自然语言处理,这是我们初次涉足自然语言处理,一件我们需要事先决定的事是怎样表示一个序列里单独的单词,你会怎样表示像 Harry 这样的单词, x < 1 > x^{<1>} x<1>实际应该是什么?
接下来我们讨论一下怎样表示一个句子里单个的词。想要表示一个句子里的单词,第一件事是做一张词表,有时也称为词典,意思是列一列你的表示方法中用到的单词。这个词表(下图所示)中的第一个词是 a,也就是说词典中的第一个单词是 a,第二个单词是 Aaron,然后更下面一些是单词 and,再后面你会找到 Harry,然后找到 Potter,这样一直到最后,词典里最后一个单词可能是 Zulu。
因此 a 是第一个单词,Aaron 是第二个单词,在这个词典里,and 出现在 367 这个位置上,Harry 是在 4075 这个位置,Potter 在 6830,词典里的最后一个单词 Zulu 可能是第 10,000个单词。所以在这个例子中我用了 10,000 个单词大小的词典,这对现代自然语言处理应用来说太小了。对于商业应用来说,或者对于一般规模的商业应用来说 30,000 到 50,000 词大小的词典比较常见,但是 100,000 词的也不是没有,而且有些大型互联网公司会用百万词,甚至更大的词典。许多商业应用用的词典可能是 30,000 词,也可能是 50,000 词。不过我将用 10,000 词大小的词典做说明,因为这是一个很好用的整数。
如果你选定了 10,000 词的词典,构建这个词典的一个方法是遍历你的训练集,并且找到前 10,000 个常用词,你也可以去浏览一些网络词典,它能告诉你英语里最常用的 10,000个单词,接下来你可以用 one-hot 表示法来表示词典里的每个单词。
举个例子,在这里 x < 1 > x^{<1>} x<1>表示 Harry 这个单词,它就是一个第 4075 行是 1,其余值都是 0的向量(上图编号 1 所示),因为那是 Harry 在这个词典里的位置。
同样 x < 2 > x^{<2>} x<2>是个第 6830 行是 1,其余位置都是 0 的向量(上图编号 2 所示)。and 在词典里排第 367,所以$x^{<3>}}就是第 367 行是 1,其余值都是 0 的向量(上图编号3 所示)。如果你的词典大小是 10,000 的话,那么这里的每个向量都是 10,000 维的。
因为 a 是字典第一个单词,$x^{<7>}}对应 a,那么这个向量的第一个位置为 1,其余位置都是 0 的向量(上图编号 4 所示)。
所以这种表示方法中,$x^{}}指代句子里的任意词,它就是个 one-hot 向量,因为它只有一个值是 1,其余值都是 0,所以你会有 9 个 one-hot 向量来表示这个句中的 9 个单词,目的是用这样的表示方式表示𝑋,用序列模型在𝑋和目标输出𝑌之间学习建立一个映射。我会把它当作监督学习的问题,我确信会给定带有(𝑥, 𝑦)标签的数据。
那么还剩下最后一件事,我们将在之后的视频讨论,如果你遇到了一个不在你词表中的单词,答案就是创建一个新的标记,也就是一个叫做 Unknow Word 的伪单词,用作为标记,来表示不在词表中的单词,我们之后会讨论更多有关这个的内容。
总结一下本节课的内容,我们描述了一套符号用来表述你的训练集里的序列数据𝑥和𝑦,在下节课我们开始讲述循环神经网络中如何构建𝑋到𝑌的映射。
相关文章:

吴恩达深度学习笔记:序列模型(Sequence Models) 1.1-1.2
目录 第五门课 序列模型(Sequence Models)第一周 循环序列模型(Recurrent Neural Networks)1.1 为什么选择序列模型?(Why Sequence Models?)1.2 数学符号(Notation) 第五门课 序列模型(Sequenc…...

【Spring】Spring Web MVC基础入门~(含大量例子)
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:什么是Spring Web MVC 1:Servlet 2:总结 二:MVC …...

使用ThorUi
摘要: 官网 今天遇到一个老项目,使用的是ThorUi组件库!之前没有用过这组件库,所以记录一下不同框架是使用情况! ThorUI 是一个基于 Thorium 的 UI 框架,用于构建跨平台的桌面应用程序。如果你打算使用 Thor…...
【Promise】自定义promise
文章目录 1 定义整体结构2 Promise 构造函数的实现3 promise.then()与promise.catch()的实现4 Promise.resolve()与Promise.reject()的实现5 Promise.all与Promise.race()的实现6 Promise.resolveDelay()与Promise.rejectDelay()的实现 1 定义整体结构 /*自定义 Promise */ (f…...

Docker容器部署Windows系统教程
本章教程,使用Docker容器部署一个Windows操作系统容器。 一、拉取容器 dockurr/windows:latest二、运行容器 docker run -dit --name win11 -v $PWD:/share -v /opt/iso/win11.iso:/custom.iso -p 3389:3389 -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-tim…...
js id数组转字符串
在 JavaScript 中,将数组转换为字符串有几种常见的方法。每种方法都有其特定的用途和格式。以下是一些常用的方法: 1. Array.prototype.join(separator) join 方法将数组的所有元素连接成一个字符串,并使用指定的分隔符(默认为逗…...

如何在 Android 上增加 SELinux 权限
SELinux(Security-Enhanced Linux)是一种强制访问控制(MAC)机制,它为 Android 系统提供了额外的安全层。通过 SELinux,系统管理员可以定义细粒度的安全策略,限制进程对文件、网络和其他资源的访…...

MySQL:数据类型建表
问题:我想建一个名为create和database的库可以吗? 如果按照一般的类型来建带有关键字的库 就会出现报错 如果我们这样写的话:关键词 ,则会建库成功。 选择要进行操作的数据库 use数据库 判断选择的库是否成功 删除数据库 drop…...

Linux:版本控制器git的简单使用+gdb/cgdb调试器的使用
一,版本控制器git 1.1概念 为了能够更方便我们管理不同版本的文件,便有了版本控制器。所谓的版本控制器,就是能让你 了解到⼀个文件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录工程的每⼀次改动和版本迭代的⼀个…...

【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案
作者:CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境:WebStorm 目录 问题概述 原因 解决方案 解决方法 潜在问题修改 最终效果呈现 额外内容 管理员界面路由配置 WebStorm背景更换 法一: 法二: 问题概…...

力扣力扣力:91.解码方法
91. 解码方法 - 力扣(LeetCode) 在完成动态规划入门之后,我们先整一个中档题,也是前面简单题的变体。 分析思路: 在拿到最终结果之前,我们应该明确什么样的数字序列能够解码。 规则1:由于只有…...

一些面试题总结(二)
21、TCP的四次挥手? 在断开TCP连接时,需要通过四次挥手来断开,过程是: (1)客户端向服务端发送FIN1和序列号SEQx的数据包,用来关闭客户端到服务端的数据传送。然后客户端进入 FIN-WAIT-1 状态。 (2)服务端接收FIN后,…...
Hive-testbench套件使用文档
Hive-testbench套件使用文档 hive-testbench 是hortonworks的一个开源项目,用于测试和基准测试 Apache Hive 的工具集。它提供了一系列的测试数据集和查询样例,用于评估和比较 Hive 在不同配置和环境下的性能。hive-testbench 的主要目标是模拟真实的大规模数据集和复杂查询…...

大数据新视界 -- 大数据大厂之 Impala 性能优化:新技术融合的无限可能(下)(12/30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

Python | Leetcode Python题解之第540题有序数组中的单一元素
题目: 题解: class Solution:def singleNonDuplicate(self, nums: List[int]) -> int:low, high 0, len(nums) - 1while low < high:mid (low high) // 2mid - mid & 1if nums[mid] nums[mid 1]:low mid 2else:high midreturn nums[l…...

AHB Matrix 四星级 验证笔记(2.4) Tt3.3AHB总线协议测试时的 并行数据
文章目录 前言一、代码二、错误1.地址范围2. 并行执行线程中变量覆盖的情况3.有关incr的beat 前言 来源路科验证本节搞定 T3.3 AHB总线协议的覆盖:AHB_PROTOCOL_COVER 即测试ahb slave接口和master接口支持(尽可能)全部的ahb协议传输场景&am…...
前端零基础学习Day-Eight
CSS字体和文本样式 CSS文字样式 字体:font-family 语法:font-family:[字体1][,字体2][,...] p{font-family:"微软雅黑","宋体","黑体";} 含空格字体名和中文,用英文引号括起 属性值:具体字体名&…...

贪心算法day3(最长递增序列问题)
目录 1.最长递增三元子序列 2.最长连续递增序列 1.最长递增三元子序列 题目链接:. - 力扣(LeetCode) 思路:我们只需要设置两个数进行比较就好。设a为nums[0],b 为一个无穷大的数,只要有比a小的数字就赋值…...

【论文复现】MSA+抑郁症模型总结(三)
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀MSA抑郁症模型 热门研究领域:情感计算的横向发展1. 概述2. 论文地址3. 研究背景4. 主要贡献5. 模型结构和代码6. 数据集介绍7. 性…...

【软件测试】敏捷模型(Scrum模型)和V模型、W模型
敏捷模型 前面的那些模型以前非常流行,但现在开发人员在使用的时候会遇到各种问题。主要困难包括在项目开发期间处理来自客户的变更请求,以及合并这些变更所需要的高成本和时间。 在实际工作中,一款产品的功能是不断在变化的 所以为了克服这…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...

Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...