吴恩达深度学习课程DeepLearning.ai笔记(2)

4. Language model and sequence generation

对于下面的例子:

The apple and pair salad.

The apple and pear salad.

两句话有相似的发音,但是想表达的意义和正确性却不相同,如何让我们的构建的语音识别系统能够输出正确地给出想要的输出。也就是对于语言模型来说,从输入的句子中,评估各个句子中各个单词出现的可能性,进而给出整个句子出现的可能性。

使用RNN来构建语言模型:

所谓训练集(Training Set)就是一大堆语言文本的集合(语料库)。Tokenize:将句子使用字典库标记化。

注意:未出现在字典库中的词使用“UNK”来表示。

第一步:使用零向量对输出进行预测,即预测第一个单词是某个单词的可能性;

第二步:通过前面的输入,逐步预测后面一个单词出现的概率;

训练网络:使用softmax损失函数计算损失,对网络进行参数更新,提升语言模型的准确率。

5. Sampling novel sequences

在完成一个序列模型的训练之后,如果我们想要了解这个模型学到了什么,其中一种非正式的方法就是进行一次新序列采样(sample novel sequences)。

对于一个序列模型,其模拟了任意特定单词序列的概率,如P(y,⋯,y),而我们要做的就是对这个概率分布进行采样,来生成一个新的单词序列。

如下面的一个已经训练好的RNN结构,我们为了进行采样需要做的:

首先输入x=0,a=0在这第一个时间步,我们得到所有可能的输出经过softmax层后可能的概率,根据这个softmax的分布,进行随机采样,获取第一个随机采样单词y^;

然后继续下一个时间步,我们以刚刚采样得到的y^作为下一个时间步的输入,进而softmax层会预测下一个输出y^,依次类推;

如果字典中有结束的标志如:“EOS”,那么输出是该符号时则表示结束;若没有这种标志,则我们可以自行设置结束的时间步。

图1是基于单词的一个采样模型,图2是基于字母的采样模型。

图1

图2

但是基于字符的语言模型,一个主要的缺点就是我们最后会得到太多太长的输出序列,其对于捕捉句子前后依赖关系,也就是句子前部分如何影响后面部分,不如基于词汇的语言模型那样效果好;同时基于字符的语言模型训练代价比较高。所以目前的趋势和常见的均是基于词汇的语言模型。但随着计算机运算能力的增强,在一些特定的情况下,也会开始使用基于字符的语言模型。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180613G0M7VW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券