吴恩达深度学习笔记:序列模型(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模型
敏捷模型 前面的那些模型以前非常流行,但现在开发人员在使用的时候会遇到各种问题。主要困难包括在项目开发期间处理来自客户的变更请求,以及合并这些变更所需要的高成本和时间。 在实际工作中,一款产品的功能是不断在变化的 所以为了克服这…...

【go从零单排】接口(interface)和多态(Polymorphism)
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在Go语言中,interface 是一种重要的类型,用于定义一组方法…...

SI5319C-C-GM,SiliconLabs芯科 SI5319C-C-GMR,时钟合成器/抖动清除器 封装 QFN-36 在售 20000PCS 23+
SI5319C-C-GM是SiliconLabs公司生产的时钟合成器和抖动清除器。它是一款高性能的时钟解决方案,可用于各种应用领域,包括通信、数据中心、消费电子等。 该器件采用了SiliconLabs独有的DSPLL技术,能够提供低抖动和高精度的时钟信号。它具有多个…...

使用批处理脚本批量删除Maven无效依赖
背景 在开发过程中,我们经常会遇到以下情况: 在pom.xml文件中错误地指定了依赖的名称。因为网络问题,某些依赖下载不完全。依赖版本号错误,导致下载的文件无法使用。 这些情况会导致Maven在本地仓库中留下一些无效的文件&#…...

腾讯cos对象存储,下行流量费贵,是否可以加入服务器减少费用,架构如何设计
腾讯云COS(Cloud Object Storage)对象存储服务提供了一种高效、安全、低成本的方式存储大量数据。然而,当涉及到外网下行流量时,确实会产生一定的费用,这可能会增加整体的成本。为了减少这些费用,可以通过以…...

【SAP】关于权限的继承
关于权限的父role和子role的权限继承,既可以 从子role主动去父role那里“取”。从父role“推”到子role 我自己之前一直用的是方法1,但由于子role很多,一个一个手工维护花了不少时间。 后来得知有方法2,特此测试。 我准备了父R…...

SpringBoot技术下的共享汽车运营平台
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理共享汽车管理系统的相关信息成为必然。开发…...

SwiftUI开发教程系列 - 第7章:数据流和状态管理
SwiftUI 的核心优势之一在于其声明式的数据绑定和状态管理系统,使得在多视图间传递和更新数据变得更加直观和高效。在本章中,我们将讨论如何使用 ObservedObject、EnvironmentObject、StateObject 等属性包装器进行复杂的数据管理,确保应用的…...

Ubuntu系统安装NVIDIA驱动、CUDA、PyTorch等GPU深度学习环境
学习目标: 在Ubuntu系统上安装CUDA、PyTorch等GPU深度学习环境,主要目标是为深入研究深度学习和深度强化学习提供高效的计算支持。通过构建GPU环境,计划掌握深度学习的基本概念和算法应用,提高模型训练效率,特别是在复…...

电子学会2024年3月青少年软件编程(图形化)等级考试试卷(三级)真题,含答案解析
我们今天分享的资料是:电子学会2024年3月青少年软件编程(图形化)等级考试试卷(三级)真题,含答案解析 电子学会 2024 年 3 月青少年软件编程(图形化)等级三级考试的主要考点包括但不限于以下内容: 理解变量的概念:能够新建变量,知道如何在舞台区显示或隐藏变量,理解…...

初学者指南:用例图——开启您的软件工程之旅
目录 背景: 基本组成: 关联(Assciation): 包含(Include): 扩展(Extend): 泛化(Inheritance): 完整银行…...