今天看啥  ›  专栏  ›  prophet__

吴恩达深度学习-序列模型 1.7 对新序列进行采样

prophet__  · 简书  ·  · 2020-01-28 23:05

我们今天要学习的东西叫做采样,使用到的是numpy里面的np.random.choice这个函数。进行y<t-1>的随机采样。

np.random.choice()函数讲解 https://blog.csdn.net/u013733326/article/details/80890454

吴恩达的课后作业里关于采样的部分

然后就像之前我们所讲到的那样,把前一个采样到的,放到后一个作为输入,注意的是,y<t-1>是一个概率值,通过softmax输出之后,得到的是一个准确的值。比如说第一个得到的概率是the最大,那么在这里就会选择the这个词作为y<t-1>,并且把这个词放到下一个输入里。

我们刚刚说的是关于 单词自动生成序列 ,也就是生成单位是一个词,那么使用的one-hot编码里的集合也是词。

但是我们也可以换成另外一种方式,比如说用 字符生成序列 ,我们把26个字母大小写都放进集合,再放入一些常用的符号比如(,./:';空格)等等,同时放入数字,这个时候也可以通过一个个字符来生成语句。

在这种情境下,y就会变成一个字符,而不是一个词。

这种情况下的优点是:不会出现那种字典里没有出现过的单词而变成UNK标记。

同时问题是,由于一个英语句子会包含很长的一个字符串,整个模型的长度也会变得很长,导致不能很好地找到句子前后的相关关联关系,而且计算成本会很高昂,因此生成序列的效果不如使用整个单词作为生成单位的时候。

现在使用单个字符作为生成单位的应用比较少,只有在有很多未知单词或者文本的时候才会使用这个方法,同时需要有很强的算力。


在最后,吴恩达展示了两种使用了不同训练集的生成训练模型的效果,左边是新闻体,右边是莎士比亚体。




原文地址:访问原文地址
快照地址: 访问文章快照