语言模型和序列生成 (吴恩达老师_学习笔记)

目录

前言

语料库编码

构建RNN模型

训练RNN

RNN计算句子出现的概率

对新序列采样


前言

语言模型的工作是计算出某个特定的句子它出现的概率。

 

语料库编码

如何建立一个语言模型?需要先构造一个训练集,包含一个很大的文本语料库

在语料库中,一个句子通过one-hot向量编码,得到在字典中的索引。

另外,用<UNK>标记未知的词语,用<EOS>标记每个句子的结尾。

 

构建RNN模型

对于RNN的第一步,即第0个时间步,

在第1个时间步,要计算激活项 ,它是以 作为输入的函数,而 会被设为0向量。在之前的 按照惯例也设为0向量,于是 要做的就是它会通过softmax进行一些预测来计算出第一个词可能会是什么,其结果就是 。

这一步其实就是通过一个softmax层来预测字典中的任意单词会是第一个词的概率,比如说第一个词是A 的概率有多少,第一个词是Aaron的概率有多少,第一个词是cats的概率又有多少。

所以softmax层输出10,000种结果,因为你的字典中有10,000个词,或者会有10,002个结果,因为你可能加上了未知词,还有句子结尾这两个额外的标志。

然后RNN进入下一个时间步, 的结果被作为,和 一起输入,计算出 ,然后预测出。注意是零向量,=才是Cats。

最后。RNN模型会停在第9个时间步,然后把 也就是 (单词day)传给它(上图编号5所示),最后输出 ,即EOS标志。

 

训练RNN

RNN中的每一步都会考虑前面所有的单词,例如标号7所示,通过前3个单词(Cats average 15),预测出下一个词是hours。

代价函数:

交叉熵

对于某个时间步t,一个是真正的词 ,一个是预测出来的词

总体损失L(标号9),把所有单个预测的损失函数相加

 

RNN计算句子出现的概率

现在有一个新句子,它是 ,为了简单起见,它只包含3个词,现在要计算出整个句子中各个单词的概率。

方法就是第一个softmax层会告诉你 的概率,这也是第一个输出,然后第二个softmax层会告诉你在考虑 的情况下 的概率,然后第三个softmax层告诉你在考虑 的情况下 的概率。

最后把这三个概率相乘,得到这个含3个词的整个句子的概率。

 

对新序列采样

训练完一个序列 模型之后,想要了解这个模型学到了什么,可以通过新序列采样的方法。

一个序列模型已经模拟了特定单词序列的概率,可以先输入零向量,然后无论预测得到的是什么,都作为的输入,一直这样直到最后一个时间步。

这样就可以通过训练好的RNN语言模型中生成一个随机选择的句子。(不同的语料库训练,会得到不同风格的RNN)

另外在一些专门需要处理大量未知文本的应用中,会有基于字符的语言模型(如编码a,b,c,d……)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值