深度学习在NLP中的应用---RNN

首先来看下什么是句子解析:

0?wx_fmt=png

0?wx_fmt=png

给定输入:两个候选孩子节点的表示

输出:

  1. 如果两个节点聚合在一起,输出语义表示。

  2. 新节点的可信度,即一个打分。

比如下面例子,输出向量是(8, 3),对应的得分是1.3。

0?wx_fmt=png

下面来看下循环神经网络的定义。

0?wx_fmt=png

其中

0?wx_fmt=png

树中所有节点的权值 W 相同。

Socher et al. (ICML 2011) 相关工作有以下几个代表性的:

•  Pollack (1990): Recursive auto-associative memories

•  Goller & Küchler (1996), Costa et al. (2003) 作了假设:树结构是固定的,并且使用 one hot 向量表示法。

•  Hinton (1990) and Bottou (2011): 循环模型和循环算子相关的思想,出发点是对logic算子平滑化。

下面是一个利用RNN解析句子的示例

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

最大间隔框架细节

树的得分通过在每个节点解析决策得分求和得到。

跟最大间隔解析类似(Taskar et al. 2004 ),有监督最大间隔目标函数如下:

0?wx_fmt=png

损失函数会对所有错误决策加以惩罚

A(x) 的结构搜索法是最大限度贪婪式进行的,可以利用基于图的定向搜索法来代替。

下面介绍通过结构来反向传播的方法。

这种方法由Goller 和 Küchler提出,Goller & Küchler (1996)。原理上跟一般的反向传播算法一样。两个不同点由树结构引起:

在每个节点分离梯度;

将所有节点处W的梯度求和。

下面来看看如何在每个节点分离梯度。

0?wx_fmt=png

如上图,前向传播时,父节点是由两个子节点计算而来。

0?wx_fmt=png

所以,误差反向传播时需要对每个子节点都计算相应的误差传播量,并且每个子节点的误差都是n维的。

接下来需要对所有节点梯度求和。

可以假设每个节点具有不同的 W 。下面是一个直观的例子:

0?wx_fmt=png

当然,分别计算再求和,也可以得到同样的结果0?wx_fmt=png

如何优化上述问题呢?跟前面类似,可以将梯度融合成一个标准且现成的L-BFGS优化器。最好的结果是AdaGrad方法(Duchi et al, 2011):

0?wx_fmt=png

简单的RNN有哪些特点呢? 简单的矩阵RNN已经取得了不错的效果。单个权值矩阵RNN可以捕捉到一些现象,但是,不足以应对更复杂的由高阶成分和语法解析的长句子。

0?wx_fmt=png

成分函数对于句法分类,标点符号等都是相同的。

针对以上不足,如何解决呢?下面看几种解决方案。

第一种是句法自由的RNN。其思想在于对句法分类构建成分函数加上条件,使得权值自由可变。对于不同的句法分类对,比如Adv+AdjP, VP+NP,可以具有不同的成分函数。这种方法可以将离散的句法分类跟连续的语义信息结合起来。如下图所示:

0?wx_fmt=png

0?wx_fmt=png

下面来看下第二种解决方案,即 CVG = PCFG + 句法自由RNN。

这种方法考虑的问题在于,速度,定向搜索每个候选分都需要计算矩阵向量乘积,这无疑需要很大计算量。为了解决这个问题,该解决方案,利用简单的PCFG+RNN和对数似然函数的线性组合来计算得分,并且对可能性较小的候选分进行剪枝,以提高速度。这种方法对每个定向候选评分都提供了对孩子节点粗略的句法分类。

其中CVG全称是Compositional Vector Grammars: CVG = PCFG + RNN。

下面来看下CVG。CVG中每个节点的得分都是将PCFG和SU-RNN结合计算而来的。

0?wx_fmt=png

具体解释即为,在一个模型中分解成离散和连续句法分析:

0?wx_fmt=png

更多细节见ACL论文, Socher et al 2013。

一些相关论文如下:

•  Klein and Manning (2003a) : 手工特征工程 

•  Petrov et al. (2006): 学习算法将句法结构分离并聚合

•  Lexicalized parsers (Collins, 2003; Charniak, 2000): 每个类都用一个词条来表示

•  Hall and Klein (2012) : 每个分解词法解析都包含了若干注解

•  Hermann & Blunsom (2013): 将组合类别语法跟RNN结合,并且权值是自由变化的

下面来看个实验设置及结果

标准的WSJ分割,标签F1

基于简单的具有少数状态的PCFG

搜索空间的快速剪枝,少量的矩阵向量乘积

F1 提高了 3.8%, 比斯坦福解析器快了 20%

0?wx_fmt=png

接下来看看SU-RNN分析

0?wx_fmt=png

能够从单个相关例子中转换语法信息。比如

训练句子:

• He eats spaghetti with a fork.

• She eats spaghetti with pork.

测试句子:

• He eats spaghetti with a spoon.

• He eats spaghetti with meat. 

0?wx_fmt=png

RNN中的标注是怎么做的呢?可以将每个节点的表示作为softmax分类器的特征。

0?wx_fmt=png

训练时目标函数可以是标准的交叉熵误差+评分。

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值