lstm原始论文_有序的神经元——ON-LSTM模型浅析

f57bf20834408ff6f2d8dccc312cced4.png

尽管最近出现的Transformer系列的模型在nlp领域内很流行,但RNN仍然有着重要的地位。本文介绍的模型来自于ICLR 2019的最佳论文之一,它针对自然语言具有语法分层的特点,对原有的LSTM模型的结构做出了改进,使得新模型不仅具有更好的性能,还能够无监督地从语料文本中学习到句子的语法结构。

LSTM与ON-LSTM

先介绍一下该模型的出发点,自然语言虽然从表面来看呈现出来的是序列形式,但其实句子的结构并不是连续的序列,而是树状结构,如下图所示。因此如果我们能够设计一种可以考虑到句子的语法结构的模型,那么就有可能在nlp任务中表现的更好。

569a1df7e73bfe761b5350ab74b017c0.png

先来看原始的LSTM模型,如下所示,其中

分别是遗忘门和输入门,可以看出它们通过对于
的更新来实现对于历史信息
和当前输入信息
的记忆与忘记。

f7c5d0472f73e0e7719668f6448c8188.png
LSTM流程图(来自参考资料[2])

在原始LSTM中,更新的方式是通过遗忘门和输入门来完成的,即

。而ON-LSTM做出改进的地方就在这里,它通过语法层次来控制哪些信息需要记忆或忘记,对于语法层次较高的内容(语法树中更靠近根节点的内容),它们影响的范围更大,对于这些信息,模型应该保留较长的时间;而对于层次较低的,它们对之后内容影响较小,模型应该尽快忘记它们,以免这些信息干扰后面的过程。

有序的神经元

为了达到这样的目的,首先我们就需要对信息进行语法分层,对神经元按照语法层次进行排序,语法层次较高的信息储存在上面的神经元中,较低的则储存在下面的神经元,然后根据层次的不同,采用不同的更新方式。如下图所示,对于句子中较高层次的信息S,则位于cell states的上面的维度,这类信息的更新频率不应该很快;而对于底层信息如N和V,它们位于cell states的下部,这些信息应该较快地进行更新。这样,我们就能通过cell stats的维度的高低来将信息中不同语法层次的内容分开,从而实现了有序的神经元。

e945514a802c47a6718009eb5de32d82.png

完成了对cell states的排序之后,我们接下来就是划分区间,以便模型按照区间的不同实现不同的更新方式。为了实现区间的划分,模型用到了两个整数

,它们分别用来表示历史信息的最低层次和当前信息的最高层次,如下图所示。

c7edcf69a6fe63b3beae796b90876af6.png
区间划分(来自参考资料[3])

对于上面的区间,有如下的更新规则:

  • 时,两区间有交叠。对于交叠的部分,采用原始LSTM的方式进行更新;对于高于
    的部分,
    只保留原来的历史信息;对于低于
    的部分,
    只保留当前输入的信息。
  • 时,两区间没有交叠。对于没有交叠的部分,直接设其为0;而对于大于
    和小于
    的部分,分别只保留历史信息和当前输入信息。

8132a592a952fbfc33e54aa0a2df0b9c.png
更新规则(来自参考资料[3])

可以看出,其实模型在这里认为高层次的语法信息主要是来自于历史信息,而低层次的主要来自当前输入信息,而这也比较符合人们的直观印象,对于一个新的输入,它对于语法信息的影响往往局限于一个较低的层次,高层次的信息(如句子或者短语信息)仍然来自于历史信息,只有当一个句子或者短语完结的时候,历史信息的影响变小,这时新的输入才有可能影响较高语法层次的信息。而这样也就使得高语法层次的信息的更新频率较低,大多时候是保持不变,而低语法层次的信息则随着当前的输入在一直变化。

上面是区间划分的思想,而具体的实现过程如下:

定义向量

定义函数

可以得到

它们表示了历史信息和当前信息的影响范围,可以看作窗口函数,也就起到了区间划分的作用。这两个向量需要通过模型学习得到,但是如果直接去学习

这样的one hot向量,会导致更新过程不可导,这就会比较麻烦,因此我们对它做一些
“软化”,用
函数来表示one hot向量,输入历史信息
和当前输入信息
,通过神经网络来对
进行预测,则有

得到

之后,就可以按照上面的思想进行区间划分,具体形式如下:

其中

对上式简单分析一下,

主要由三个区间组成,如下图所示:

d74d4790e22d77d8765f9a2394b177be.png
区间分布

与此类似,这样我们就实现了对于
的更新,把公式放到一起,则整个ON-LSTM的更新公式为:

其流程图如下:

da8643464d9dbf9de001bcf1fce16012.png
ON-LSTM流程图,来自参考资料[2]

最后补充一下,通常隐层神经元的数目都比较大,而实际中语法的层数远远达不到这个数字,因此对于

而言,其实不需要那么多的维数,这样会导致需要学习的参数量过多,但是
要求它们的维数必须这么大,因此我们可以构造一个维数为
的向量,其中D为隐层神经元的维数,然后在将其扩充为D维向量,例如D=6,c=3,先构造一个向量
,然后将其扩充为

无监督提取语法结构

上面就是ON-LSTM模型的全部内容,不过该模型除了在性能表现上更优以外,还有一个很有意思的特性,那就是能够无监督地提取出句子的语法结构,其基本思想如下:

在时间步t,可以得到历史信息的语法层次

,我们可以认为这个数字的大小代表了历史信息对当前输入影响的大小,如果
较小,则时间步t之前的历史信息对当前影响较小,可以认为出现了一个新的语法结构。对于所有的时间步,则可以得到一个序列
,然后采用下面的贪心算法来提取出语法结构:对于然后找出层级序列中最大值所在的下标,比如k,那么就将输入序列分区为
。然后对子序列
重复上述步骤,直到每个子序列长度为1。

其中

的计算方式如下:

下图是一些语法结构提取的实验结果对比,其中左侧是模型结果,右侧是人类专家的结果

70e4a94fb01f9a29389c3a717b050ffb.png

总结

该ON-LSTM模型从语法结构的角度出发,根据语法层次对cell states进行有序排列,再按照语法层次的不同实行不同的更新规则,从而实现对于较高语法层次信息的保留,这样对于语言模型等任务无疑是很有利的。另外,利用该模型还能够较好地从句子中无监督地提取出语法结构,而这也是该模型的一大亮点。

参考资料

[1] ORDERED NEURONS: INTEGRATING TREE STRUCTURES INTO RECURRENT NEURAL NETWORKS

[2] 苏剑林. (2019, May 28). 《ON-LSTM:用有序神经元表达层次结构 》[Blog post]. Retrieved from https://kexue.fm/archives/6621

[3] ON-LSTM:能表示语言层次的LSTM

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

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

相关文章

c++ 航空管理系统_浅谈航站楼能源管理系统的设计与应用

蒋超萍江苏安科瑞电器制造有限公司 江苏江阴 214400 【摘要】根据航站楼的特点,从航站楼能源消耗现状、能源管理系统的功能、系统架构、子系统以及能源的优化调度方案五个方面介绍了航站楼能源管理系统的设计,并对节能效果进行了预测。关键词&#xff1a…

LeetCode 1785. 构成特定和需要添加的最少元素(贪心)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff0c;和两个整数 limit 与 goal 。 数组 nums 有一条重要属性&#xff1a;abs(nums[i]) < limit 。 返回使数组元素总和等于 goal 所需要向数组中添加的 最少元素数量 &#xff0c;添加元素 不应改变 数组中 …

insert和update 锁等待_黑龙F5智感双全智能锁全球首发,掀起惊艳风潮

2020备受瞩目重磅新品 —— 黑龙F5智感双芯智能门锁&#xff0c;正式官宣&#xff0c;革新行业的智感解锁交互&#xff0c;强大的双芯片双智控&#xff0c;再次掀起惊艳风潮。双芯片科技感交互&#xff0c;领行业新风向黑龙F5智能锁前沿性地配备双芯片&#xff0c;以双核分别掌…

怎么更改苹果账户名称_番茄todo小组件背景怎么改 苹果番茄todo小组件背景更改方法介绍...

番茄todo小组件背景怎么改&#xff0c;这也是大家会用到的一款倒计时APP&#xff0c;那么用户们应该怎么更改小组件的背景图片呢&#xff0c;可能还有些人不知道更改的方法。所以这里就为大家带来了具体的步骤!番茄todo小组件背景怎么改1.在打开APP后&#xff0c;如没有待办事项…

LeetCode 1786. 从第一个节点出发到最后一个节点的受限路径数(迪杰斯特拉 + 拓扑排序)

文章目录1. 题目2. 解题1. 题目 现有一个加权无向连通图。 给你一个正整数 n &#xff0c;表示图中有 n 个节点&#xff0c;并按从 1 到 n 给节点编号&#xff1b;另给你一个数组 edges &#xff0c;其中每个 edges[i] [ui, vi, weighti] 表示存在一条位于节点 ui 和 vi 之间…

java选择题多选题系统小程序_单选题与多选题判断得分(自动考试小程序,入门级)...

【单选题与多选题判断得分】【核心代码】using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace 自动…

diskfileitemfactory 需要的包_浅析电动汽车电池包低压线束设计及制造

点击上方右侧“EDC电驱未来”可订阅哦&#xff01;般的电池包低压线束承载着模组通信、模组采样和电池管理等功能。电池包低压线束一般分为模组通信线束、模组采样线束、BMS线束等。这里结合实际工作中的经历和遇到的困扰&#xff0c;主要分析和探讨SUV纯电动汽车电池包低压线束…

xgboost实例_XGBoost超详细推导,终于有人讲明白了!

- XGB中树结点分裂的依据是什么&#xff1f;- 如何计算树节点的权值&#xff1f;- 为防止过拟合&#xff0c;XGB做了哪些改进&#xff1f;相信看到这篇文章的各位对XGBoost都不陌生&#xff0c;的确&#xff0c;XGBoost不仅是各大数据科学比赛的必杀武器&#xff0c;在实际工作…

修改dts后重编译_「正点原子FPGA连载」第二十章另一种方式编译ZYNQ镜像

1)摘自【正点原子】领航者 ZYNQ 之linux驱动开发指南2)实验平台&#xff1a;正点原子领航者ZYNQ开发板3)平台购买地址&#xff1a;https://item.taobao.com/item.htm?&id6061601087614)全套实验源码手册视频下载:http://www.openedv.com/docs/boards/fpga/zdyz_linhanz.ht…

流畅的Python 2. 数据结构 - 序列构成的数组

文章目录1. 内置序列2. 列表推导 []、生成器() 表达式3. 元组 tuple4. 切片5. , * 操作6. 增量赋值7. 排序8. bisect管理已排序序列8.1 用 bisect.bisect 二分搜索8.2 用 bisect.insort 二分插入新元素9. 列表的替代9.1 数组9.2 内存视图9.3 NumPy、SciPy9.4 队列1. 内置序列 …

hadoop 多机全分布式安装步骤(虚拟机1master+2slave)

文章目录1. 虚拟机安装Centos72. 配置静态IP3. 更改主机名4. 编辑域名映射5. 安装配置Java6. 配置SSH免密登录7 .安装Hadoop8. 关闭防火墙9. 格式化文件系统10. 启动验证11. 第一个MapReduce程序: WordCount12. 关闭Hadoop参考书&#xff1a;《Hadoop大数据原理与应用》1. 虚拟…

ie浏览器模拟器_航空飞机模拟器安卓版下载-航空飞机模拟器游戏下载

3D建模射击&#xff0c;真实的飞行世界&#xff0c;在航空飞机模拟器游戏中玩家将化身为飞行员&#xff0c;这里的飞机类型非常齐全&#xff0c;每一辆都要熟练操作&#xff0c;最大程度还原了飞行员最真实的驾驶场景&#xff0c;完成任务获得奖励还能提高它的性能哦&#xff0…

npm安装vue_vue搭建脚手架的方式

基于window系统整理的vue脚手架npm、yarn安装方法&#xff0c;记得网络一定要好先说npm的安装方法先在需要创建项目的文件夹下打开终端&#xff0c;如果没有node可以先去官网下载&#xff0c;然后一路next&#xff0c;就OK&#xff0c;记得看清楚电脑操作系统是64还是32&#x…

《BI那点儿事》运用标准计分和离差——分析三国超一流统帅综合实力排名 绝对客观,数据说话...

数据分析基础概念&#xff1a;标准计分&#xff1a; 1、无论作为变量的满分为几分&#xff0c;其标准计分的平均数势必为0&#xff0c;而其标准差势必为1。2、无论作为变量的单位是什么&#xff0c;其标准计分的平均数势必为0&#xff0c;而其标准差势必为1。公式为&#xff1a…

天池 在线编程 最佳利用率(二分查找 + 哈希)

文章目录1. 题目2. 解题1. 题目 给两个排序的数组。 从两个数组中各取取一个数&#xff0c;这两个数之和需要小于或等于k&#xff0c; 需要找到两数之和最大的索引组合。 返回一对包含两个列表的索引。 如果有多个两数之和相等的索引答案&#xff0c;你应该选择第一个数组索引…

python re 匹配多行_Python正则表达式,看这一篇就够了

作者 | 猪哥来源 | 裸睡的猪(ID: IT--Pig)大多数编程语言的正则表达式设计都师从Perl&#xff0c;所以语法基本相似&#xff0c;不同的是每种语言都有自己的函数去支持正则&#xff0c;今天我们就来学习 Python中关于 正则表达式的函数。re模块主要定义了9个常量、12个函数、1个…

nsga2算法_用遗传算法进行容量管理 让虚拟机放置策略更优

随着互联网技术的高速发展&#xff0c;云计算已经成为各行各业的“水电煤”&#xff0c;成为“互联网”的基础设施&#xff0c;而数据中心则是云服务背后的刚性保障。无论是传统的数据中心&#xff0c;还是云形态的数据中心&#xff0c;虚拟化技术都是提升其资源利用率、降低管…

php预处理_如何用预处理让 PHP 更先进

原标题&#xff1a;如何用预处理让 PHP 更先进先来点趣事。不久以前&#xff0c; 来添加 Python 的 range 语法。然后&#xff0c; 大虾 &#xff0c;并且 建议为 PHP 添加 C# 风格的 getter 和 setter。我意识到对于一个局外人来说&#xff0c;建议和实现新的语言特性是件缓慢…

天池 在线编程 两句话中的不常见单词(哈希计数)

文章目录1. 题目2. 解题1. 题目 给定两个句子 A 和 B 。 &#xff08;句子是一串由空格分隔的单词。每个单词仅由小写字母组成。&#xff09; 如果一个单词在其中一个句子中只出现一次&#xff0c;在另一个句子中却没有出现&#xff0c;那么这个单词就是不常见的。 返回所有…

iphone屏幕上的圆圈怎么设置_iPhone手机屏幕突然变暗或者黑屏怎么办?看这里你就知道该怎么办...

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到各种有关娱乐的文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。 …