学习笔记10 《吴恩达深度学习》Deep Learning

1.2注释(Notation)

上一讲说过,序列模型有很广泛的应用。现在,我们来说一说这些以后建模会用到的符号。

举一个启发性的例子。比如用下列句子,作为序列模型的输入数据,(哈利波特和赫敏格兰杰发明了一种新的咒语)。句子里这些角色来自,J.K.罗琳写的系列小说《哈利波特》。假设你想让序列模型自动识别出,句子中哪些单词是人名。这是个名字识别的例子。常用在搜索引擎中。比如,对过去24小时的新闻报道中,提到的人名进行适当的索引。除此以外,识别系统也能通过名称查找信息,比如人名,企业名称,时间,地点,国家名称,货币名称等等。假设,通过输入变量X,你想让这个模型的输出变量y对应每一个输入的单词,目标输出。y的值标出那些输入单词是人名。当然这种输出方式并非最佳。还有一些更复杂的输出形式不仅告诉你哪个词是人名,还能够指出人民在句子中的起始位置。比如,Harry Potter这个名字从这里开始,到这里结束,从这里开始,到这里结束。不过在这个例子中,我们只关注这种简单输出方式。那么,作为输入的序列数据只有9个单词,所以,我们最终会有9组特征来代表9个单词。并指出位置和序列,我用x和上标‹1› ‹2› ‹3›...‹9›表示句子中单词的位置。我们使用X^‹t›来指示在序列当中的位置。其中的t表明x^‹t›所在的序列为时间序列,而不论(所代表的)序列是否是时间序列,我将使用索引t来指示序列中的位置。输出也一样,y表示输出,上标‹1›,‹2›...‹9›表示位置,用Tx表示输入数据的长度,这个例子中共9个词,所以,Tx等于9,然后我们用Ty表示输出序列的长度。这个例子中,Tx等于Ty。但是,在上一个视频中,我们看到Tx不等于Ty。

也许,你还记得这个符号x^(i),它表示第i个训练样本,所以,为了表示第t个元素,或者是训练样本,i的序列中的第t个元素,我会使用X^(i)‹t›这个符号。而如果T_x表示序列的长度。那么,你的训练集中不同的例子的长度可能不同。所以,T_x^‹i›就代表第i个训练样例的输入序列长度。类似的,y^(i)‹t›代表第i个训练样例的输出序列的第t个元素,Ty^(i)则是第i个训练样例的输出序列的长度。所以,在这个例子中,Tx^(i)等于9,如果你有另外一个练习样本,是由15个单词组成的句子,Tx^(i)则为15。

2dc7f26faee945ccbc3b1e6fcad1b492.png

现在,我们开始讲自然语言处理(NLP)。这是我们第一次正式接触到NLP或者说自然语言处理。我们需要决定,在一个序列中如何表示一个单词?比方说,如何表示Harry这个词,x^‹1›的值应该是什么呢?我们先讲一讲怎么表示句子中的某个单词。

c2e72f2fb8314c2894b33209db337012.png

首先,我们要准备好一个词汇表,有时也称为字典,其实就是将你要用到的单词放到一起做一个清单。比如,这个词汇表中的,第一个词是a,就是字典里的第一个单词。第二个是aaron,再下面就是and,再往下你能看到Harry,然后是Potter。最后一个单词是Zulu。也就是说,a是单词1,aaron是单词2。在我做的词典里,and这个词的位置索引是367,Harry则是4075,Potter是6830,Zulu这个词排在最后,它的位置索引是10,000。

在这个例子中,我用的是词汇量为10,000的字典,对于现代的自然语言处理应用而言,这种规模属于非常小的了。对于商业级的应用,一般的这种商业级应用,常用的字典规模一般为3到5万词汇。10万级词汇的字典也比较常见。有些大型互联网公司会使用,词汇量达到百万量级甚至更大的字典。不过也有很多商业应用使用字典的,词汇规模大概在3万到5万。

我们使用词汇为1万的字典,因为1万是个比较整的数。所以,如果你打算使用大小为1万的字典,其中一种构建这个字典的方法就是去你的训练集中查找,找到出现频率最高的1万个词。另一种方式是查找一些网上的字典,将其中包含的英语中最常见的1万词作为拟构建的字典。

我们可以将这些词汇中的每个都表示成为一位one-hot的表示(representation)。例如,x^‹1›代表的Harry,就被表示为一个向量:向量的其余位全为0,除了在第4075位上有一个1表示。因为,Harry这个单词就在词汇表中的第4075位上。同理对于x^‹2›,也是一个向量,除了在第6830位有个1,其余位均为0。单词“and”,在词汇表中在第367位,所以x^‹3›向量,除了在第367位有个1,其余位也均为0。假如你的词汇表中存在1万个词汇,那个每一个词也就表示成为一个维数为1万的向量。这里有个有个词“a”,我猜在任何一部英文词典中它都是第一个,在句子单词“a”对应于x^‹7›,用向量表示就是向量[1,0,...,0]。也就是说将字典中的第一个元素用1表示了,其余全0。所以,这种表示方法中,句子里的任意一个词t,设为x^‹t›,都将表示为一个one-hot(一位热码)向量,one-hot的意思指只有一位为1其余位全是0。例子中这句话有9个单词,也就需要9个one-hot向量来表示。这样做的目的是,根据x的表示,使用序列模型的映射,然后目标输出y。作为监督式学习问题,用到的数据表中包括x和y。最后还有注意,我们在之后的章节会深入探讨,那就是当你遇到不在词汇表中的单词怎么办?解决办法是,创建一个新的标记,或者说是一个伪词,称其为Unknown Word,并使用尖括号加UNK‹UNK›来表示这些不在词汇表中的词。在后面的章节中我们会详细讲解。

e303f7ac3c1b4e13bc249012b591acdd.png

好,来总结这一讲的内容:我们构建起了一套符号来描述训练集中的序列数据x和y。在下一讲中,我们将开始讲述循环神经网络用于构建从x到y的映射。

 

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值