ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2020-10-10 吴恩达DL学习-C5 序列模型-W1 循环序列模型(1.2 数学符号-时序序列数据表示符号/序列长度/one-hot表示字典里的单词)

2021-01-01 11:01:26  阅读:131  来源: 互联网

标签:10 Tx 符号 单词 000 序列 词典


1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

1.2 数学符号 Notation

上节课,你了解了一些能应用序列模型的例子。本课先从定义符号开始一步步构建序列模型。

比如说你想要建立一个序列模型,它的输入语句是这样的:“Harry Potter and Herminoe Granger invented a new spell.”,(这些人名都是出自于J.K.Rowling笔下的系列小说Harry Potter)。假如你想要建立一个能够自动识别句中人名位置的序列模型,那么这就是一个命名实体识别问题,这常用于搜索引擎,比如说索引过去24小时内所有新闻报道提及的人名,用这种方式就能够恰当地进行索引。

命名实体识别系统可以用来查找不同类型的文本中的人名、公司名、时间、地点、国家名和货币名等等。
在这里插入图片描述

现在给定上图这样的输入数据 x x x,假如你想要一个序列模型输出 y y y,使得输入的每个单词都对应一个输出值,同时这个 y y y 能够表明输入的单词是否是人名的一部分。

技术上来说这也许不是最好的输出形式,还有更加复杂的输出形式,它不仅能够表明输入词是否是人名的一部分,它还能够告诉你这个人名在这个句子里从哪里开始到哪里结束。比如:Harry Potter、Hermione Granger。

不过对于这个例子,有更简单的输出形式。

约定符号

在这里插入图片描述

上图中的输入数据 x x x 是9个单词组成的序列,所以最终我们会有9个特征集合来表示这9个单词,并按序列中的位置进行索引, x < 1 > x^{<1>} x<1>、 x < 2 > x^{<2>} x<2>、 x < 3 > x^{<3>} x<3>等等一直到 x < 9 > x^{<9>} x<9>来索引不同的位置。

  • 我将用 x < t > x^{<t>} x<t>来索引这个序列的中间位置。 t t t 意味着它们是时序序列,但不论是否是时序序列,我们都将用 t t t 来索引序列中的位置。
  • 输出数据 y y y 也是一样,我们还是用 y < 1 > y^{<1>} y<1>、 y < 2 > y^{<2>} y<2>、 y < 3 > y^{<3>} y<3>等等一直到 y < 9 > y^{<9>} y<9>来表示输出数据。
  • 同时我们用 T x T_x Tx​ 来表示输入序列的长度,这个例子中输入是9个单词,所以 T x = 9 T_x=9 Tx​=9 。
  • 我们用 T y T_y Ty​ 来表示输出序列的长度。

在这个例子里 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) 来表示第 i i i 个训练样本,所以为了指代第 t t t 个元素,或者说是训练样本 i i i 的序列中第 t t t 个元素用 x ( i ) < t > x^{(i)<t>} x(i)<t> 这个符号来表示。
  • 如果 T x T_x Tx​ 是序列长度,那么你的训练集里不同的训练样本就会有不同的长度,所以 T x ( i ) T_x^{(i)} Tx(i)​ 就代表第 i i i 个训练样本的输入序列长度。
  • y ( i ) < t > y^{(i)<t>} y(i)<t> 代表第 i i i 个训练样本中第 t t t 个元素。
  • T y ( i ) T_y^{(i)} Ty(i)​ 就是第 i i i 个训练样本的输出序列的长度。

所以在这个例子中, T x ( i ) = 9 T_x^{(i)}=9 Tx(i)​=9。
如果另一个样本是由15个单词组成的句子,那么对于这个训练样本, T x ( i ) = 15 T_x^{(i)}=15 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的向量,因为那是Harry在左边词典里的位置。

同样 x < 2 > x^{<2>} x<2> Potter是一个第6830行是1,其余位置都是0的向量。

and在词典里排第367,所以 x < 3 > x^{<3>} x<3> 就是第367行是1,其余值都是0的向量。

如果你的词典大小是10,000的话,那么这里的每个向量都是10,000维的。

再看单词a。因为a是字典第一个单词, x < 7 > x^{<7>} x<7> 对应a,那么这个向量的第一个位置为1,其余位置都是0的向量。

所以这种表示方法中, x < t > x^{<t>} x<t> 指代句子里的任意词,它就是个one-hot向量,因为它只有一个值是1,其余值都是0,所以你会有9个one-hot向量来表示这个句中的9个单词,目的是用这样的表示方式表示 X X X,用序列模型在 X X X 和目标输出 Y Y Y 之间学习建立一个映射。我会把它当作监督学习的问题,我确信会给定带有 ( x , y ) (x,y) (x,y) 标签的数据。

还剩下最后一件事,我们将在之后的课程讨论,如果你遇到了一个不在你词表中的单词,答案就是创建一个新的标记,也就是一个叫做Unknow Word的伪造单词,用作为标记,来表示不在词表中的单词,我们之后会讨论更多有关这个的内容。

总结

总结一下本节课的内容,我们描述了一套符号用来表述你的训练集里的序列数据 x x x和 y y y,在下节课我们开始讲述循环神经网络中如何构建到的映射。

标签:10,Tx,符号,单词,000,序列,词典
来源: https://blog.csdn.net/weixin_42555985/article/details/108990298

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有