序列模型之循环神经网络(二)

news2024/11/27 10:22:21

目录

一.语言模型和序列生成

二.新序列采样

三.带有神经网络的梯度消失

四.GRU单元


一.语言模型和序列生成

上图的例子就是咱们的手机上的语音转文字输入差不多,说一句话,可能有多种可能的句子,那么到底是哪一种呢,咱们的语言模型就可以给出这些所有可能的句子的概率,最大概率的那个句子就是模型认为符合语音的那条句子。

术语:

corpus 语料库

语料库是自然语言处理的一个专有名词,就是很长的或者说数量众多的英文句子组成的文本。

构建语言模型:

像上篇文章讲的一样,假如你从训练集里得到一句话,那么我们需要先标记各个单词,然后我们为了能够区分出句子在哪里结尾,有时候可以给每个句子加一个结束标识符<EOS>。然后如果你想把标点符号也标记,那么你需要把标点符号也加入你的词典。然后就是上篇文章提到过的词典中没出现的词,标记为<UNK>。所以我们的模型不会对具体的哪个词典中没有的词建立概率模型,而是对<UNK>建立概率模型。

 我们现在用RNN来训练一个自动生成文本的模型(有点像上节课讲的那个一对多模型,但是一对多是上一步的预测值当作下一步的喂入,而这里是用真实值喂入),如下图,假设我们最初输出入一个x^<1>是零向量,然后初始激活值a^<0>也设为零向量,模型计算出一个yhat^<1>(假设我们的词典有10000个词,然后我们的模型输出是经过了一个softmax,那么就有10000个分类,所以对应就有10000个概率,可能有10002个,因为我们可能还要加<UNK>和<EOS>标记),yhat^<1>就是最高概率对应的那个单词,然后第二个时间步时输入除了上一步的激活值,还有y^<1>(y^<1>就是真实序列的第一个单词,及训练集第i个训练示例的第一个元素,在本例中就是左下角那句话的第一个单词Cats),然后再计算y^<2>,y^<2>就是以前面的一个单词是Cats为前提条件的一个预测值,往后依此类推,可以看到这有点像概率论中的条件概率。

比如一个句子是由y^<1>,y^<2>,y^<3>组成的,则最终输出这个句子的概率就是三个条件概率相乘:

损失函数是下图右下角的式子

二.新序列采样

当你训练了一个模型想知道这个模型到底学到了什么,我们可以对新序列采样。

一个序列模型模拟了任意特定单词序列的概率,我们要做的就是对这个概率分布进行采样,

来生成一个新的单词序列。

让我们来看看具体怎么做:

来根据向量中这些概率的分布进行采样(词典中对应的每个单词的输出概率都不一样,所以抽样时不是等概率抽样),上半部分是已经训练好的模型,下面是我们调用模型生成新序列的过程,最开始给a^<0>和x^<1>都赋值为零向量,然后得到yhat^<1>,和上一节讲的一样,时间步最后经过softmax之后可能得到10002个值,所以我们随机取样是在这10002个值里取样(可以用np.random.choice函数来取样得到yhat^<1>),然后将yhat^<1>作为下一个时间步的输入之一(还有激活值a^<1>),以此类推,直到得到一个预测输出是<EOS>或者时间步数超出了咱们设定的最长时间步数才停止。

然后现在有一些方法不是基于单词来训练,而是基于字符,优点是不会收到<UNK>的困扰,缺点是计算昂贵等,现在应用得还不多,除非一些特定场景,比如很多专有词汇等场景。具体可以百度或看吴老师得视频课,我就不多说了。

三.带有神经网络的梯度消失

RNN不擅长处理长期依赖的关系,因为当网络层数很深的时候,就会容易遇到梯度爆炸和梯度消失的情况,对于RNN来说主要是梯度消失的问题(下面再详细说),梯度爆炸的话很容易被发现,因为梯度爆炸(比如RNN处理有1000个或者10000时间序列的数据集)会导致很多参数大到崩溃,比如参数值是NAN或者不是数字的情况,但是梯度爆炸比较好解决,但是梯度消失就比较棘手。

 如上图,有两个很长的句子(这个猫吃了很多东西),上面的句子主语是cat,下面的句子主语是cats,然后句子末尾处使用一个be动词,如果是cat要用was,cats要用were。但是随着网络的加深,如果出现梯度消失,前面的层和后面的层越来越难以产生相互影响,比如输出yhat^<3>可能就受其附近的单元的输入(比如x^<1>,x^<2>,x^<3>)的影响。

四.GRU单元

GRU很好的解决了上述问题。

先来回看一眼RNN单元的结构 :

GRU这里的新符号:

c代表记忆单元(memory cell),于是在时间t处记忆细胞有关于t的值c,对于GRU来说,c^<t>=a^<t>,但是对于LSTM来说,c^<t>和a^<t>不是同一个东西。

那么c^<t>的作用是什么呢?

用我们上一节的那个例子说明一下就是从左往右遍历句子的时候记忆单元可以记住猫是单数还是复数,然后在后面要用到be动词的时候,可以通过记忆来判断是该用was还是were。

在每个时间步,我们将用一个候选值(c^~<t>)重写(更新)记忆单元(c^<t>)

门(gamma_u)来决定是否要真的去更新记忆单元。

可以看到门是用sigmoid函数修饰的,所以门的输出大部分都很接近于1或0。可以看到右下角的式子,当门接近于0时,那么c^<t>=c^<t-1>(不更新),当门接近于1时,c^<t>=c^~<t> (更新)。

然后现在看到左下角的那句文本,遇见cat时,比如单数时让c^<t>=1,然后再往后的一串单词对应的门都是接近于0,也就是不更新,这样就保留了记忆单元的值,这样即便cat/cats和was/were隔得很远,也不会因为距离的变远而发生梯度消失的问题。当下次主语改变时,可能门的值也就改变了,随着而来的就是记忆单元的值也会发生改变。

下面是一个更加完整的GRU单元,可以看到又新增了一个门gamma_r,除了gamma_r的式子,c^~<t>也做了改动,gamma_r代表着c^~<t>和c^<t-1>的关联性。在其他学术文章中,可能会用其他符号(左侧那四个)。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【EDA365电子论坛】硬件人经历南下、北上,回乡创业,后悔了吗?

南下&#xff1f;北上&#xff1f;留下来&#xff1f;亦或是回乡&#xff1f;这些问题或许是每个电子人都曾遇到过的&#xff0c;如果可以&#xff0c;谁不想留在自己所熟悉的地方呢&#xff0c;但生活&#xff0c;总会让你想要的更多&#xff0c;只能选择再前行一步。 前几天在…

LeetCode题目笔记——2486. 追加字符以获得子序列

文章目录题目描述题目难度——中等方法一&#xff1a;一次遍历代码/C总结这个是上周末的周赛题目&#xff0c;当时忘做了&#xff0c;晚上的时候才想起&#xff0c;可惜了&#xff0c;题目还挺有意思的&#xff0c;类似的好像在以前做过&#xff0c;题目联机在这题目链接 题目…

你好,法语!A2知识点总结(4)

4.固定表达 4.1 devoir faire 4.2 ne…que ne…que&#xff1a;只…,仅仅 注意 用ne…que替换句子 Ex : En ce moment, il mange surtout des crales. En ce moment, il ne mange que des crales. 1)Elle lit surtout des romans. Il fait surtout du tennis.Ils s’intres…

NeRF算法Keras实现教程

在这个教程中&#xff0c;我们展示了 Ben Mildenhall 等人的研究论文 NeRF&#xff1a;将场景表示为用于视图合成的神经辐射场的最小实现。作者提出了一种巧妙的方法&#xff0c;通过神经网络对体积场景函数进行建模来合成场景的新颖视图。 为了帮助你直观地理解这一点&#x…

Mac下adb性能测试实战

本次实验以Editor App为例 1.测试Editor启动时长 打开终端&#xff0c;依次输入如下命令&#xff1a; adb devices 查看设备是否连接 adb shell 进入手机系统 adb devices pm list package -f | grep vidma 获取Editor包名 dumpsys package vidma.video.editor.video…

[glacierctf 2022] 只会3个

目录 Crypto CryptoShop 完成 Strange Letters Simple Crypto ChaCha60 Unpredictable Misc The Climber Size Matters ClipRipStage1 pwn Break the Calculator old dayz File-er rev Whats up Sandboxer 这个比赛完事后马上关网站。想复现都困难。会的不…

【宝塔面板安装与配置、Redis安装与配置、MySQL安装与配置】

提示&#xff1a;宝塔面板下载地址&#xff1a;https://www.bt.cn/new/download.html 文章目录前言一、快速迁移二、设置固定ip一.保证可以连接网络二.设置固定ip三、搭建宝塔面板四、做好备份五、安装Redis六、安装MySQL一、8.0版本以下二、8.0版本以上三、安全组开放端口四、…

GitHub上最全的Java面试题库竟还要收费?黑客强行开源后遭起诉

“金三银四”、“金九银十” 一直被称为是跳槽的旺季&#xff0c;最近也有不少小伙伴找我咨询一些面试相关的问题。但是我的建议是跳槽之前先想清楚自己为什么要跳槽&#xff0c;不要看到身边的同事跳槽之后薪资涨了不少&#xff0c;没有做好充分的准备就盲目开始投简历去面试。…

最新版 Cesium(1.99.0) 构建封装开发环境以及遇到问题

最新版 Cesium&#xff08;1.99.0&#xff09; 构建封装开发环境以及遇到问题使用版本Webpack4.* 集成 Cesium 错误官方示例介绍官方示例配置介绍&#xff1a;官方示例配置补充&#xff1a;webpack5 过程学习资料githup 完整项目最近项目用 Cesium 比较多&#xff0c;因此想把常…

世界各国GDP相关面板数据(1960-2019年)

1、数据来源&#xff1a;世界银行 2、时间跨度&#xff1a;1960-2019年 3、区域范围&#xff1a;全球 4、指标说明&#xff1a; 该数据包含以下指标&#xff1a; 1.世界各国1960-2019年GDP 2.世界各国1960-2019年GDP增长率 3.世界各国1960-2019年人均GDP 4.世界各国196…

SwiftUI 精品源码之学习可视化应用程序基于SceneKit,AVSpeechSynthetizer 文字转语音功能tts(教程)

我是一个非常注重视觉的人,这也适用于我的学习。当他们做某些事情时,我通过观察事物或其他人来学习。我也有很强的听觉倾向,所以你不能指望我读完一本 300 页的小说,但你可以指望我听 1 小时的播客而不会分心,并从中真正学到一些东西。 这种学习方式时常帮助我,从一门学科…

龙蜥开发者说:开源是场马拉松!来自广州大学姚同学的开源成长记 | 第 13 期

「龙蜥开发者说」第 13 期来了&#xff01;开发者与开源社区相辅相成&#xff0c;相互成就&#xff0c;这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的&#xff0c;我们希望在这里让更多人看见技术的力量。本期故事&#xff0c;我们邀请了龙蜥社区开发者姚胤…

远程兴起,前端音视频通话?学

前言 看到前两篇文章都非常受欢迎&#xff0c;加起来有一千多赞了&#x1f44d;&#x1f3fb; &#xff0c;非常的开心&#xff01;&#x1f916;继续加油&#xff01;冲&#xff01; 我们在前两篇文章中大概讲解了 音视频媒体流的获取&#xff0c;处理&#xff0c;以及在上一…

(免费分享)基于jsp的CRM客户管理-带论文

一、课题来源&#xff1a; 自有商业活动&#xff0c;客户关系就一直是商业活动中的一个核心问题&#xff0c;同时也成了商务活动成功的审核标准。在全球经济一体化为时代背景的时代&#xff0c;企业面临着为公司带来更多的客户、为管理者提供准确的信息和便捷的操作查询手段 、…

新旧iphone短信转移,苹果旧手机短信导入新手机

短信携带重要信息内容&#xff0c;新旧iphone短信转移&#xff1f;您可能知道&#xff0c;iOS设备上不支持导出iPhone简讯&#xff0c;更不用说打印iPhone上的短信了。幸运的是&#xff0c;有一些可行的方法可以将iPhone短信导入到另一个iPhone&#xff0c;继续阅读以获得更多帮…

软件协会第01次活动第05次任务布置:爱心代码+演奏歌曲+typora使用pandoc导出+github注册登录+函数练习+写csdn文章

了解更多关注软协官网&#xff1a;https://www.csuftsap.cn/ 来自软件协会编辑&#xff0c;注册会员即可获取全部开源.md资源&#xff0c;请勿转载&#xff0c;归软件协会所有。 文章目录:star: 软件协会第01次活动第05次任务布置1.程序员的浪漫-爱心代码&#xff08;升级版&a…

css3手册

文章目录布局弹性盒生成弹性容器和弹性项目更改方向主轴排列侧轴排列弹性项目伸缩主轴换行网格生成网格布局定义行和列改变排列方向单元格之间的间隙单元格内部的对齐网格项目定位视觉阴影盒子阴影文字阴影圆角背景渐变变形translate 平移scale 缩放rotate 旋转改变变形原点多种…

spring MVC源码探索之AbstractHandlerMethodMapping

AbstractHandlerMethodMapping 是什么 官方解释是这样的。 /*** Abstract base class for {link HandlerMapping} implementations that define* a mapping between a request and a {link HandlerMethod}.** <p>For each registered handler method, a unique mapping…

Java项目:ssm毕业论文管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 毕业设计管理系统 1、本系统使用SSM框架 2、有管理员、教师、学生三种角色&#xff0c;管理员使用admin/admin登录&#xff0c;教师使用t_01/6666登录&a…

JavaWeb简单实例——DBUtils

简单介绍&#xff1a; DBUtils是一个用来简化我们JDBC的编码工作量的一个工具。它可以在不影响数据库访问性能的情况下简化我们的代码编辑量。DBUtils的作用主要是&#xff1a;写数据&#xff0c;读数据&#xff0c;优化性能。 常用的类和对应的API&#xff1a; QureyRunner…