斯坦福NLP课程 | 第18讲 - 句法分析与树形递归神经网络

简介: NLP课程第18讲介绍了基于词向量空间模型的构建、结构反向传播(BTS)及其Python编程、简单TreeRNN及应用、 复杂TreeRNN结构、斯坦福大学HAI研究所等。

ShowMeAI研究中心

作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI
教程地址http://www.showmeai.tech/tutorials/36
本文地址http://www.showmeai.tech/article-detail/256
声明:版权所有,转载请联系平台与作者并注明出处
收藏ShowMeAI查看更多精彩内容


句法分析与树形递归神经网络
ShowMeAI斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》课程的全部课件,做了中文翻译和注释,并制作成了GIF动图!

句法分析与树形递归神经网络
本讲内容的深度总结教程可以在这里 查看。视频和课件等资料的获取方式见文末


引言

Tree RNN与短语句法分析

授课计划

授课计划

  • Motivation: Compositionality and Recursion
  • Structure prediction with simple Tree RNN: Parsing
  • Backpropagation through Structure
  • More complex TreeRNN units
  • Other uses of tree-recursive neural nets
  • Institute for Human-Centered Artificial Intelligence

1.CS语言谱

CS语言谱

  • 词袋模型和复杂形式的语言表达结构

1.1 语言的语义解释:不仅仅是词向量

语言的语义解释:不仅仅是词向量

  • 我们怎样才能弄清楚更大的短语的含义?

    • The snowboarder is leaping over a mogul
    • A person on a snowboard jumps into the air
  • The snowboarder 在语义上相当于 A person on a snowboard,但它们的字长不一样

人们通过较小元素的语义成分来解释较大文本单元的意义

  • 实体,描述性术语,事实,论点,故事

语言的语义解释:不仅仅是词向量

  • 人们之所以可以理解 A person on a snowboard,是因为组合原则 ( the principle of compositionality)

    • 人们知道每个单词的意思,从而知道了 on a snowboard 的意思
    • 知道组件的含义并将他们组合成为更大的组件

语言的语义解释:不仅仅是词向量

  • 小的组件元素构建成完整图片场景

语言的语义解释:不仅仅是词向量

  • 语言理解 - 和人工智能 - 需要能够通过了解较小的部分来理解更大的事物

语言的语义解释:不仅仅是词向量

  • 我们拥有将较小的部分组合起来制作出更大东西的能力

1.2 语言是递归的吗?

语言是递归的吗?

  • 认知上有点争议 (需要前往无限)
  • 但是:递归对于描述语言是很自然的

    • [The person standing next to [the man from [the company that purchased [the firm that you used to work at]]]]
    • 包含名词短语的名词短语,包含名词短语
  • 它是语言结构的一个非常强大的先验

1.3 Penn Treebank tree

Penn Treebank tree

Penn Treebank tree

2.基于词向量空间模型的构建

基于词向量空间模型的构建

  • the country of my birth
  • the place where I was born
  • 我们怎样表示更长短语的意思呢?
  • 通过将他们映射到相同的向量空间!

2.1 我们应该如何将短语映射到向量空间?

我们应该如何将短语映射到向量空间?

  • 基于组合原则

    • 使用单词的含义和组合他们的规则,得到一个句子的含义向量
  • 同时学习解析树以及组合向量表示

2.2 Constituency Sentence Parsing

Constituency Sentence Parsing

  • 我们需要能够学习如何解析出正确的语法结构,并学习如何基于语法结构,来构建句子的向量表示

2.3 递归与循环神经网络

递归与循环神经网络

  • 循环神经网络需要一个树结构
  • 循环神经网络不能在没有前缀上下文的情况下学习理解短语,并且经常它得到的最终向量包含太多末尾单词的信息 (而忽略了前面的一些内容)

2.4 结构预测对的递归神经网络

递归与循环神经网络

  • 如果我们自上而下的工作,那么我们在底层有单词向量,所以我们想要递归地计算更大成分的含义
  • 输入:两个候选的子节点的表示
  • 输出:

    • 两个节点被合并后的语义表示
    • 新节点的合理程度

2.5 递归神经网络定义

递归神经网络定义

2.6 用递归网络分析句子

用递归网络分析句子

  • 自左向右重复遍历,每次将得分最高的两者组合在一起

2.7 分析一个句子

分析一个句子

2.8 Max-Margin Framework:细节

Max-Margin Framework:细节

  • 树的得分是通过每个节点的解析决策得分的总和来计算的

$$ s(x, y)=\sum_{n \in n o d e (y)} s_{n} $$

  • 公式 是句子,公式 是解析树

Max-Margin Framework:细节

Max-Margin Framework:细节

  • 类似于最大边距解析 (Taskar et al.2004) ,有一个监督学习的最大边际目标

公式

  • 损失 公式 惩罚所有不正确的决策
  • 结构搜索 公式 是贪婪的 (每次加入最佳节点)

    • 相反:使用 Beam search 搜索图

2.9 场景分析

场景分析

  • 和组合类似的准则

    • 场景图像的含义也是较小区域的函数
    • 它们如何组合成部分以形成更大的对象
    • 以及对象如何相互作用

2.10 图像解析算法

图像解析算法

  • Same Recursive Neural Network as for natural language parsing! (Socher et al. ICML 2011)

2.11 多类分割

多类分割

3.结构反向传播(BTS)

结构反向传播(BTS)

  • Introduced by Goller & Küchler (1996)
  • 和通用的反向传播的规则相同

公式公式

递归和树结构导致的计算:

  • ① 从所有节点 (像RNN一样) 求 公式 的导数
  • ② 在每个节点处拆分导数 (对于树)
  • ③ 从父节点和节点本身添加 error message

3.1 结构反向传播:第1步

结构反向传播:第1步

  • 求所有节点的偏导

公式公式

3.2 结构反向传播:第2步

结构反向传播:第2步

  • 在每个节点处分开偏导

3.3 结构反向传播:第3步

结构反向传播:第3步

  • 叠加 error message

3.4 BTS Python 编程:前向传播

BTS Python 编程:前向传播

3.5 BTS Python 编程:反向传播

BTS Python 编程:反向传播

4.版本1:简单TreeRNN

版本1:简单TreeRNN

  • 使用单矩阵 TreeRNN 的结果
  • 单个权重矩阵 TreeRNN 可以捕获一些现象但不适合更复杂的现象以及更高阶的构成或解析长句
  • 输入词之间没有真正的交互
  • 组合函数对于所有句法类别,标点符号等都是相同的

5.版本2: Syntactically-Untied RNN

版本2: Syntactically-Untied RNN

  • 符号的上下文无关的语法(Context Free Grammar CFG)主干是足以满足基本的句法结构
  • 我们使用子元素的离散句法类别来选择组合矩阵
  • 对于不同的语法环境,TreeRNN可以针对不同的组合矩阵做得更好
  • 结果为我们提供了更好的语义

补充讲解

  • 左边 RNN 是使用概率的上下文无关的语法解析,为句子生成可能的树结构
  • 右边 SU-RNN 是语法解开的递归神经网络,此时每个节点和序列都有一个类别,我们可以使用对应不同类别的矩阵组合起来,例如将类别 B 和类别 C 的矩阵组合起来作为本次计算的权重矩阵,所以这个权重矩阵是更符合句子结构的

5.1 组合向量文法

组合向量文法

  • 问题:速度

    • 集束搜索中的每个候选分数都需要一次矩阵向量乘法
  • 解决方案:仅针对来自更简单,更快速模型(Probabilistic Context Free Grammar (PCFG))的树的子集计算得分

    • 对概率低的候选进行剪枝以获得更快的速度
    • 为每个集束候选提供子句的粗略语法类别
  • 组合矢量语法= PCFG + TreeRNN

5.2 解析相关工作

解析相关工作

  • 产生的 CVG Parser 与以前扩展PCFG解析器的工作有关
  • Klein and Manning (2003a):手工特征工程
  • Petrov et al. (2006):分解和合并句法类别的学习算法
  • 词汇化解析器(Collins, 2003; Charniak, 2000):用词汇项描述每个类别
  • Hall and Klein (2012) 在一个因式解析器中结合了几个这样的注释方案
  • CVGs 将这些想法从离散表示扩展到更丰富的连续表达

5.3 实验

实验

5.4 #论文解读# SU-RNN / CVG

#论文解读# SU-RNN / CVG

  • Learns soft notion of head words
  • 初始化:公式

    • 初始化为一对对角矩阵
    • 学习的是一个短语中哪个子节点是重要的

5.5 结果向量表示的分析

结果向量表示的分析

  • 所有数据均根据季节变化进行调整

    • 所有数字都根据季节性波动进行调整
    • 调整所有数字以消除通常的季节性模式
  • night-Ridder不会评论这个提议

    • Harsco declined to say what country placed the order
    • Coastal wouldn’t disclose the terms
  • Sales grew almost 公式 to 公式 \text{UNK}$$ m. from <img src="https://www.zhihu.com/equation?tex=%5C" alt="公式"> \text{UNK}$$ m.

    • Sales rose more than 公式 to 公式 94.9$$ m. from <img src="https://www.zhihu.com/equation?tex=%5C" alt="公式"> 88.3$$ m.
    • Sales surged 公式 to 公式 b. yen from 公式 b.

6.版本3: Compositionality Through Recursive Matrix-Vector Spaces

版本3: Compositionality Through Recursive Matrix-Vector Spaces

  • 之前:公式
  • 公式公式 之间并没有相互影响
  • 使组合函数更强大的一种方法是解开权重 公式
  • 但是,如果单词主要作为运算符,例如very goodvery 是没有意义的,是用于增加 good 的规模的运算符
  • 提案:新的组合函数
  • 问题是如何定义呢,因为不知道 公式公式 哪个是 operator,比如 very good ,就应该讲 very 视为作用在 good 的矩阵上的向量

Compositionality Through Recursive Matrix-Vector Recursive Neural Networks

  • 每个单词都拥有一个向量意义和一个矩阵意义
  • 左侧计算得到合并后的向量意义
  • 右侧计算得到合并后的矩阵意义
  • 可以捕获运算符语义,即中一个单词修饰了另一个单词的含义

6.1 预测情绪分布

预测情绪分布

  • 语言中非线性的好例子

6.2 语义关系的分类

语义关系的分类

  • MV-RNN 可以学习到大的句法上下文传达语义关系吗?
  • 为包括两项的最小成分构建单个组合语义

6.3 语义关系的分类

语义关系的分类

  • 问题:参数量过大,且获得短语的矩阵意义的方式不够好

7.版本4: Recursive Neural Tensor Network

Version 4: Recursive Neural Tensor Network

  • 比 MV-RNN 更少的参数量
  • 允许两个单词或短语向量乘法交互

7.1 词袋之上: 情感检测

词袋之上: 情感检测

  • 一段文字的语调是积极的,消极的还是中性的?

    • 某种程度上情绪分析是容易的
    • 较长文档的检测精度~90%,但是
  • 有了这样的演员阵容和题材,这部电影应该会更有趣,更具娱乐性。

7.2 斯坦福情感分析数据集

斯坦福情感分析数据集

  • 215,154 phrases labeled in 11,855 sentences
  • 可以真的训练和测试组合
  • http://nlp.stanford.edu:8080/sentiment/

7.3 好的数据集对所有模型都有提升帮助

好的数据集对所有模型都有提升帮助

  • 负面情感的难样本仍然大多判断错误的
  • 我们还需要一个更强大的模型!

7.4 版本4: Recursive Neural Tensor Network

版本4: Recursive Neural Tensor Network

  • 思路:允许载体的加性和介导的乘法相互作用
  • 在树中使用结果向量作为逻辑回归的分类器的输入
  • 使用梯度下降联合训练所有权重

补充讲解

  • 回到最初的使用向量表示单词的意义,但不是仅仅将两个表示单词含义的向量相互作用,左上图是在中间插入一个矩阵,以双线性的方式做注意力并得到了注意力得分。即令两个单词的向量相互作用并且只产生一个数字作为输出
  • 如上中图所示,我们可以拥有三维矩阵,即多层的矩阵(二维),从而得到了两个得分
  • 使用 softmax 做分类

7.5 递归神经张量网络/Recursive Neural Tensor Network

递归神经张量网络/Recursive Neural Tensor Network

7.6 数据集上的实验效果

数据集上的实验效果

  • RNTN 可以捕捉类似 公式 but 公式 的结构
  • RNTN accuracy of 72%, compared to MV-RNN (65%), biword NB (58%) and RNN (54%)

7.7 否定的样本结果

否定的样本结果

8.版本5: Improving Deep Learning Semantic Representations using a TreeLSTM

版本5: Improving Deep Learning Semantic Representations using a TreeLSTM

目标:

  • 仍试图将句子的含义表示为 (高维,连续) 向量空间中的位置
  • 一种准确处理语义构成和句子含义的方式
  • 将广泛使用的链式结构 LSTM 推广到树结构

8.1 LSTM Units for Sequential Composition

LSTM Units for Sequential Composition

  • 门是 公式 的向量,用于逐元素乘积的软掩蔽元素

8.2 #论文解读# Tree-Structured Long Short-Term Memory Networks

#论文解读# Tree-Structured Long Short-Term Memory Networks

8.3 Tree-structured LSTM

Tree-structured LSTM

  • 将连续LSTM推广到具有任何分支因子的树

8.4 结果

结果

8.5 忘记门:选择性状态保护

忘记门:选择性状态保护

  • Stripes = forget gate activations; more white ⇒ more preserved
  • 图中的条纹代表遗忘门激活,更多的白色占比表示更多的信息保留

9.#论文解读# QCD-Aware Recursive Neural Networks for Jet Physics

#论文解读# QCD-Aware Recursive Neural Networks for Jet Physics

10.用于程序翻译的tree-to-tree神经网络

用于程序翻译的tree-to-tree神经网络

  • 探索在编程语言之间使用树形结构编码和生成进行翻译
  • 在生成中,将注意力集中在源树上

用于程序翻译的tree-to-tree神经网络

用于程序翻译的tree-to-tree神经网络

11.HAI 以人为中心的人工智能

HAI

以人为中心的人工智能

  • 人工智能有望改变经济和社会,改变我们沟通和工作的方式,重塑治理和政治,并挑战国际秩序
  • HAI的使命是推进人工智能研究,教育,政策和实践,以改善人类状况

HAI

12.视频教程

可以点击 B站 查看视频的【双语字幕】版本

frameLabelStart--frameLabelEnd

13.参考资料

ShowMeAI系列教程推荐

NLP系列教程文章

斯坦福 CS224n 课程带学详解

ShowMeAI用知识加速每一次技术成长

目录
相关文章
|
7天前
|
机器学习/深度学习
HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
17 0
|
8天前
|
机器学习/深度学习 存储 测试技术
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
19 0
|
1月前
|
网络虚拟化 网络架构
网络技术基础(11)—— 生成树STP简单学习
【3月更文挑战第1天】网络基础笔记(加班了几天,中途耽搁了,预计推迟6天),这篇借鉴了之前师兄的笔记,边听边记笔记实在是太慢了。
|
2月前
|
安全 数据库 网络虚拟化
计算机网络:思科实验【4-生成树协议STP及虚拟局域网VLAN】
计算机网络:思科实验【4-生成树协议STP及虚拟局域网VLAN】
|
4月前
|
网络虚拟化
网络之路26:STP生成树协议
网络之路26:STP生成树协议
56 0
|
4月前
|
机器学习/深度学习 网络安全 Python
【Python机器学习】决策树、逻辑回归、神经网络等模型对电信用户流失分类实战(附源码和数据集)
【Python机器学习】决策树、逻辑回归、神经网络等模型对电信用户流失分类实战(附源码和数据集)
46 0
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】决策树、K近邻、神经网络等模型对Kaggle房价预测实战(附源码和数据集)
【Python机器学习】决策树、K近邻、神经网络等模型对Kaggle房价预测实战(附源码和数据集)
80 0
|
4月前
|
机器学习/深度学习 自然语言处理 算法
【Python自然语言处理】概率上下文无关文法(PCFG)及神经网络句法分析讲解(图文解释 超详细)
【Python自然语言处理】概率上下文无关文法(PCFG)及神经网络句法分析讲解(图文解释 超详细)
76 0
|
5月前
|
机器学习/深度学习 数据采集 算法
图像识别4:决策树+神经网络GUI+支持向量机实验
图像识别4:决策树+神经网络GUI+支持向量机实验
43 0
|
6月前
|
机器学习/深度学习 传感器 算法
Elman分类预测 | Matlab基于递归神经网络Elman分类预测,多特征输入模型
Elman分类预测 | Matlab基于递归神经网络Elman分类预测,多特征输入模型

热门文章

最新文章