在你训练一个序列模型之后,要想了解这个模型学到了什么,一种非正式的方法就是进行一次新序列采样,来看看到底应该怎么做。

记住,一个序列模型模拟了任意特定单词序列的概率,我们要做的就是对这个概率分布进行采样来生成一个新的单词序列。这个网络已经被训练过了,而为了进行采样,你要做一些截然不同的事情,第一步要做的就是对你想要模型生成的第一个词进行采样,于是你输入x<1>=0x^{<1>}=0x<1>=0,a<0>=0a^{<0>}=0a<0>=0,现在你的第一个时间步得到的是所有可能的输出是经过softmax层后得到的概率,然后根据这个softmax的分布进行随机采样。softmax分布给你的信息就是第一个词是a的概率是多少,第一个是aaron的概率是多少,第一个词是zulu的概率是多少,第一个词是未知标识的概率是多少,这个标识可能代表句子结尾的概率是多少,然后对这个向量使用例如numpy命令,np.random.choice,来根据向量中这些概率的分布进行采样,这样就能对第一个词进行采样了。

然后继续下一个时间步,记住第二个时间步需要y^<1>\hat{y}^{<1>}y^​<1>作为输入,而现在要做的是把刚刚采样得到的y^<1>\hat{y}^{<1>}y^​<1>作为下一个时间步的输入,所以不管你在第一个时间步得到的是什么词都要把它传递到下一个位置作为输入,然后softmax层会预测y^<2>\hat{y}^{<2>}y^​<2>是什么。举个例子,假如说对第一个词进行抽样后得到的是the,the作为第一个词的情况很常见,然后把the作为x<2>x^{<2>}x<2>,现在你要计算出在第一个词是the的情况下第二个词应该是什么,然后得到结果y^<2>\hat{y}^{<2>}y^​<2>,然后再次用这个采样函数来对y^<2>\hat{y}^{<2>}y^​<2>进行采样,然后再到下一个时间步,无论你得到什么样的,用one-hot码表示的选择结果,都把它传递到下一个时间步,然后对第三个词进行采样,不管得到什么都把它传递下去,一直到最后一个时间步,那你要怎么知道一个句子结束了呢?方法之一就是如果代表句子结尾的标识在你的字典中,你可以一直进行采样,直到得到EOS标识,这代表你已经抵达结尾,可以停止采样了。另一种情况是如果字典中没有这个词,你可以决定从20个或100个或其它个词中进行采样,然后一直采样,直到达到所设定的时间步,不过这种过程有时候会产生一些未知标识。如果你要确保你的算法不会输出这种标识,你能做的一件事就是拒绝采样过程中产生任何未知的标识,一旦出现就继续在剩下的词中进行重采样,直到得到一个不是未知标识的词,你也可以完全不管它们,如果你不介意有未知标识产生的话。这就是你如何从你的RNN语言模型中生成一个随机选择的句子。直到现在我们所建立的是基于词汇的RNN模型,意思就是字典中的词都是英语单词。根据你实际的应用,你还可以构建一个基于字符的RNN结构,在这种情况下,你的字典仅包含从a到z的字母,可能还会有空格符,如果你需要的话还可以有数字0到9,如果你想区分字母大小写,你可以再加上大写的字母,你还可以实际地看一看训练集中可能会出现的字符,然后用这些字符组成你的字典。如果你建立一个基于字符的语言模型,比起基于词汇的语言模型,你的序列y<1>{y}^{<1>}y<1>,y<2>{y}^{<2>}y<2>,y<3>{y}^{<3>}y<3>等在训练数据中都将是单独的字符而不是单独的词汇。所以对于前面的猫睡觉的例子来说,在该例中y<1>{y}^{<1>}y<1>就是c,y<2>{y}^{<2>}y<2>是a等等,使用基于字符的语言模型,又优点也有缺点,优点就是你不必担心会出现未知的标识,例如基于字符的语言模型会将mau这样的序列也视为可能性非零的序列,而对于基于词汇的语言模型,如果mau不在字典中,你只能把它当做是未知标识,不过基于字符的语言模型一个主要的缺点就是你最后会得到太多太长的序列,大多数英语句子只有10到20个单词,但却可能包含很多很多字符。所以基于字符的语言模型在捕捉句子中的依赖关系也就是句子较前部分如何影响较后部分不如基于词汇的语言模型那样可以捕捉长范围的关系,并且基于字符的语言模型训练起来计算成本比较高昂。所以吴恩达先生看到的自然语言处理的趋势就是绝大多数都是使用基于词汇的语言模型,但随着计算机性能越来越高,会有更多的应用。在一些特殊情况下,会开始使用基于字符的模型,但是这确实需要更昂贵的算力来训练,所以现在并没有得到广泛的使用。

在现有方法下,现在你可以构建一个RNN结构,看一看英文文本的语料库,然后建立一个基于词汇的或者基于字符的语言模型,然后从训练的语言模型中进行采样。

循环序列模型 —— 1.7 对新序列采样相关推荐

  1. 循环序列模型 —— 1.6 语言模型和序列生成

    语音识别系统,你听到一个句子,the apple and pear salad was delicious,所以究竟说了什么. 究竟是the apple and pair salad 还是the ap ...

  2. 力荐 | 吴恩达《序列模型》精炼笔记(1)-- 循环神经网络(RNN)

    AI有道 不可错过的AI技术公众号 关注 序列模型(Recurrent Neural Networks)是Andrw Ng深度学习专项课程中的第五门课,也是最后一门课.这门课主要介绍循环神经网络(RN ...

  3. Coursera吴恩达《序列模型》课程笔记(1)-- 循环神经网络(RNN)

    红色石头的个人网站:redstonewill.com <Recurrent Neural Networks>是Andrw Ng深度学习专项课程中的第五门课,也是最后一门课.这门课主要介绍循 ...

  4. 0.0 目录-深度学习第五课《序列模型》-Stanford吴恩达教授

    文章目录 目录 第五课 第四课 第三课 第二课 第一课 目录 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1. ...

  5. 「PyTorch自然语言处理系列」7. 自然语言处理的进阶序列模型

    来源 |  Natural Language Processing with PyTorch 作者 | Rao,McMahan 译者 | Liangchu 校对 | gongyouliu 编辑 | a ...

  6. 【中文】【吴恩达课后编程作业】Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测

    [中文][吴恩达课后编程作业]Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测 上一篇:[课程5 - 第三周测验]※※※※※ [回到目录]※※※※※下一篇:无 致谢: 感谢@e ...

  7. 吴恩达深度学习 | (20) 序列模型专项课程第一周学习笔记

    课程视频 第一周PPT汇总 吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第五部分序列模型专项的第一周课程:循环序列模型. 目录 1. 为什么选择序列模型? 2. 数学符号 3. 循环神经网络模 ...

  8. 吴恩达深度学习课程第五课笔记——序列模型

    文章目录 第五门课 序列模型 (Sequence Models) 第一周 循环序列模型(Recurrent Neural Networks) 1.1 为什么选择序列模型?(Why Sequence M ...

  9. 1.8 循环神经网络的梯度消失-深度学习第五课《序列模型》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 对新序列采样 回到目录 1.9 GRU 单元 循环神经网络的梯度消失 (Vanishing Gradient with RNNs) 你已经了解了RNN时如何工作的了, ...

最新文章

  1. 喀什市2021年高考成绩查询,2021年新疆高考查分网站查分网址:http://www.xjzk.gov.cn/...
  2. uncompressing linux .................................................后没反应解决办法
  3. sklearn RandomForest(随机森林)模型使用RandomSearchCV获取最优参数及模型效能可视化
  4. 看看我最关心的动态库中到底有多少函数 - gdiplus.dll
  5. 简单的对象监听器 观察者设计模式
  6. uvalive4838(凸包+重心)
  7. 一位大神的Python数据分析与可视化笔记
  8. Java客户端操作elasticsearch--查询索引库(高亮显示)
  9. 文字转语音+html5,JS实现文字转语音并播放
  10. leetcode初级算法6.字符串转整数(atoi)
  11. orderby排序慢_使用@OrderBy对Spring Data MongoDB集合进行排序
  12. CS144 lab2 笔记
  13. javascript测试框架mocha
  14. Centos 7安装与配置nagios监控(一)
  15. 【华为云技术分享】人脸识别算法的训练之路(下)
  16. Internet 打印提示“打印机安装失败、打印机名称无效”的解决
  17. 海康威视NVR萤石云配置及不在线故障排除
  18. 遥感学习笔记:遥感数据源免费数据获取途径
  19. CEAA自动汇编脚本常用命令
  20. Hexo博客备份方案

热门文章

  1. Juniper Olive动态路由RIP配置案例
  2. 使用OmniDB数据库管理工具,管理Oracle/MariaDB/PostgreSQL等关系型数据库
  3. 如何在MySQL中创建新用户并授予权限
  4. 如何使用KingShard构建MySQL集群
  5. vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多
  6. 任何字符串indexOf(‘‘)返回都是0,数组indexOf(‘‘)返回是-1
  7. 带用户名和密码的GitHub链接
  8. keras构建卷积神经网络_通过此简单教程学习在网络上构建卷积神经网络
  9. SAS在金融中的应用五
  10. 用python可以画的可爱的图形_利用Python绘制诱人的桑基图