论文赏析[ICLR18]联合句法和词汇学习的神经语言模型(一)

简介: 一般来说,自然语言是由词汇和句法组成的,但是标准的语言模型一般都只用RNN对词汇进行建模,句法信息都是隐式的学习到的,没有办法显式地拿出来使用。所以本文提出的语言模型的变体可以结合结构上的attention,在中间过程中学习到结构信息,然后这层结构信息可以拿来生成句法树,用来做无监督的句法分析。

介绍


一般来说,自然语言是由词汇和句法组成的,但是标准的语言模型一般都只用RNN对词汇进行建模,句法信息都是隐式的学习到的,没有办法显式地拿出来使用。所以本文提出的语言模型的变体可以结合结构上的attention,在中间过程中学习到结构信息,然后这层结构信息可以拿来生成句法树,用来做无监督的句法分析。

那么为什么要做无监督的句法分析呢?主要原因还是一些小语种标注语料太少了甚至没有,不能用监督句法分析来做。而且无监督句法分析学到的信息还可以用来增强语言模型或者更为下游的任务的性能,使它们能更好的融合句法结构信息。

本文提出的模型(PRPN)主要有如下三个组成部分:

  • 可微分的Parsing Network 主要用来学习句子的句法距离(syntactic distance),这个在之前的博客中有讲到,是同一个组做的工作,链接:Straight to the Tree:Constituency Parsing with Neural Syntactic Distance 然后产生出门函数(gate function),也就是句子中每个词的权重,这样跑RNN的时候就没有必要考虑之前的所有信息了,只需要考虑句法距离最近的,也就是同一个短语中的信息。这里可微分后面会详细讲到,也就是不能直接预测离散的序列,不然梯度没办法反向传播,所以预测的是一个分布。
  • Reading Network。这个部分就和普通的RNN差不多,区别就是利用了上面的attention,然后每个时刻的输入不仅仅是上一个时刻的隐含层状态,还包括了历史所有相关的隐含层状态。
  • Predict Network。最后预测下一个词也不是直接采用当前时刻的隐含层输出,而是采用所有attention后的历史隐含层信息。

最后模型训练好之后,用Parsing Network学习到的句法距离就可以产生出无监督的句法树,当然这里只能产生unlabeled的句法树,也就是说,无监督的成分句法分析都是只评测unlabeled F1值,因为nonterminal信息实在是无法无监督的预测出来,除非结合外部标注器或者人工制定规则?

由于我觉得这篇论文写作有点粗糙,很多地方写的很乱,甚至还有公式变量和图片不对应,所以下面的公式我有些自行修改过了,如果觉得有疑问的,可以参考原文,并且告诉我。

动机


下图是一个输入句子及其对应的句法树示例:

image.png

其中实线表示成分句法树的结构,而虚线表示同一棵子树的若干个子结点之间的联系。我们用 image.png 表示输入句子,用 image.png 表示句法树中的某一个结点,用 r 表示根结点。定义 image.png 所表示的短语范围是 image.png ,例如在上图中 image.png 表示的范围是 image.png ,所以有 image.png

下图是模型的Reading Network和Predict Network大致框架:

image.png

其中实线表示Reading Network中RNN每个时刻的输入依赖于之前的哪些时刻,虚线表示Predict Network中预测下一个词时需要考虑哪些时刻的隐含层输出(这里有个小错误,图中最上面一行函数参数从image.png开始,但实际上虚线表明应该从image.png开始)。

首先是Parsing Network。这种和之前状态的连接在这里被叫做“跨越连接”(skip connection),而具体和哪些状态连接,就要用到门 image.png ,表示当前处在 t 时刻,和之前的第 i 时刻有没有关联,有就是1,没有就是0。在这里先定义变量 image.pngimage.png 和之前最远到哪个位置的单词有关联,分成两种情况:如果 image.png 不是某个子树最左边的叶子结点,那么 image.png 就定义为它的父结点的最左边那个叶子结点,也就是 image.png 最左边那个兄弟结点。比如上图中的 image.png ,因为它在子树中位于中间,所以 image.png ,也就是说它最远和 image.png 有一定关联,而再往前的单词由于不在同一个短语里,关联就不大了。如果 image.png 是某一个子树 image.png 最左边的子结点,那么 image.png 就定义为 image.png 最左边那个兄弟结点的最左边的叶子结点。比如上图中 image.png ,因为image.png 的最左边的子结点,而 image.png 最左边的兄弟结点,image.png 最左边的叶子结点,也就是说 image.png 最远和之前的 x2 有关联,它们共同组成了更大的短语 image.png 。(这里定义又不是很严谨,例如对于上面那个例子,image.png的最左子结点,这种情况下不能按照image.png来计算,因为它没有最左的兄弟结点!所以按照image.png来算的话得到image.png

根据这个 image.png 就可以将 image.png 定义为:

image.png

但是因为这是离散的决策,没法传递梯度,所以之后会介绍用概率来替代这里的0和1。

然后是Reading Network。得到了gates之后,就可以修改RNN,用下面公式计算 t 时刻的隐含层状态:

image.png

具体是怎么使用这个gates的,后面再具体介绍,反正只要知道多考虑了很多个历史状态就行了,每个状态都有一个权重,表示考虑了多少。

最后就是Predict Network,用来预测下一个单词 image.png ,用到的是历史多个隐含层状态信息:

image.png

这里后面也会具体讲到。

模型


这里我不按照论文上的顺序讲,论文是倒序,变量定义都得看完整篇论文才出来,实在是看的太杂乱了。。。

Parsing Network

第1步: 首先第一步要预测出相邻两个单词的句法距离,用宽度为 image.png 的卷积核来对单词进行卷积。例如要预测 image.png 的句法距离,那么就对 image.png 进行卷积(其实就是两层前馈神经网络),得到如下输出(注意原文中这一段里的词向量 e 应该都是 x ,并且这里原文中定义为 h 是和后面符号冲突的,有误):

image.png

当然了,第二行也可以看做是窗口大小为1的卷积核,第一个单词之前要补上 image.png 个0。

最后得到的句法距离反映出了相邻两个词之间的语义相关程度,如果距离比较大,说明两个词可能位于两个不同的短语中,否则就位于同一个短语。一个形象化的句法距离就是相邻两个单词的最近公共祖先的高度。

下面这个图就是一个例子,卷积核窗口宽度为2:

image.png

第2步: 然后就可以根据句法距离,求出 image.png 最远到哪个位置有联系。用  来衡量 image.pngimage.png 的分别与前一个单词的句法距离的差距:

image.png

这里的 image.png 就是当输入大于1或者小于-1时,截取掉,给它限制在-1到1这个范围内,所以最后 image.png 的范围就是0到1。可以看出,如果 image.png 很大,那么 image.png ,否则的话 image.png 。这也很合乎直观上的认知,如果 image.png ,那么说明image.png 的最近公共祖先的高度比较低,那么说明 image.png 在同一棵子树中,差值自然大,反之的话 image.png 是当前子树的最左边的子结点,差值就很小。

所以模型只需要一步步往左寻找第一个 image.png 最接近0的点,也就是之前提到过的 image.png 。为了实现这个目标,可以定义 image.png 的概率        image.png                                      

image.png

注意到这个概率密度函数在  时值基本很小接近于0,而大于等于它时很大,越来越接近于1。这和设计的初衷已经很像了,所以可以近似用来作为 image.png

这里要提几点证明,可看可不看。

相关文章
|
缓存 JavaScript 前端开发
浏览器对地址栏中输入的URL的处理过程
【8月更文挑战第20天】
458 0
|
监控 微服务 Python
微服务的故障恢复与弹性设计
【8月更文第29天】在微服务架构中,由于服务间的相互依赖,任何单点故障都可能导致整个系统崩溃。因此,设计具备高可用性和弹性的微服务系统至关重要。本文将探讨如何通过重试机制、断路器和超时设置等策略来增强系统的容错能力和恢复能力。
536 2
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
1613 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
安全 编译器 Go
Go 1.21: 泛型函数的全面回顾
Go 1.21: 泛型函数的全面回顾
|
Java
Java的控制流程语句:深入理解条件语句、循环语句与跳转语句
Java的控制流程语句:深入理解条件语句、循环语句与跳转语句
175 1
|
网络协议 网络架构
ensp中默认路由和静态路由实验
默认路由的作用是将无法匹配路由表中其他路由表项的数据包转发到指定下一跳路由器。在实际网络中,默认路由通常用于简化路由配置,通常在网络边缘的路由器上配置 静态路由的作用是将特定网络的数据包转发到指定下一跳路由器。在实际网络中,静态路由通常用于更精细地控制数据包的转发,通常在网络核心路由器上配置。
689 6
ensp中默认路由和静态路由实验
|
存储 缓存 网络协议
SYN Flood是什么?这篇给你讲明白!
SYN Flood是1994年发现的DDoS攻击方式,利用TCP三次握手的漏洞,通过发送大量伪造源IP的SYN报文,使服务器创建半连接,耗尽资源,导致服务中断。防御策略包括源认证、首包丢弃和使用Anti-DDoS系统。高防服务器和抗D盾等解决方案提供DDoS清洗和CC攻击防御,通过智能分布式云接入隐藏真实IP,保持TCP连接稳定,同时提供网络加速和防掉线功能。
|
运维 监控 Devops
研发管理之认识DevOps
DevOps是促进开发、技术运营和质量保障部门间沟通与协作的一组过程和方法,旨在通过自动化软件交付和架构变更流程,提高软件发布的速度和可靠性。起源于对传统开发模式应对快速市场变化不足的反思,DevOps强调开发和运维的紧密合作,采用自动化工具实现持续集成、持续部署,以缩短开发周期并提升产品质量。其核心目标是缩短系统开发生命周期,提供持续交付和快速反馈。DevOps通过自动化、协作和实时监控等手段,降低了运维成本,增强了安全性,提高了客户满意度和创新能力。
320 0
研发管理之认识DevOps
|
Java
JAVA输入输出流
JAVA输入输出流
131 1
|
iOS开发 Java 程序员
ios开发之AppDelegate
创建应用程序之后之后,默认有AppDelegate.h文件与AppDelegate.m文件。   AppDelegate为何物?  AppDelegate为整个应用的一个代理,提供程序启动、退出等类似监控的接口。
1638 0