本文讨论一种新的类型的模型:递归神经网络(RNNs),区别于循环神经网络(RNN)的是,前者是后者的一个超集。
递归神经网络
递归神经网络(左图):需要树形结构
循环神经网络(右图):不能捕捉没有前缀背景的短语,最后的向量经常捕捉最后的词的太多信息
递归神经网络非常适合具有嵌套层次结构和内在递归结构的设置。思考一个句子 “A small crowd quietly enters the historical church” 首先将句子分成名词短语、动词短语 “A small crowd” 和 “quietly enters the historical church”。在动词短语中又有一个名词短语,动词短语 “quietly enters” 和 “historical church”,这就是递归的一个例子。
语言的句法规则是高度递归的,因此RNN模型可以充分利用这种递归结构。用RNNs建模的另一个好处是可以输入任意长度的句子,不论输入句子的长度如何,都能转换成相等规模的句子进行输出(树形结构的特点)。
RNNs的输入与输出
输入:两个子节点的语义表示
输出:1)两个节点合并时的语义表示;2)新节点的合理程度得分
基于树的递归结果计算
- 需要计算所有结点的导数和
- 在每个节点拆分计算导数
- 总的误差等于父节点和节点本身的误差之后
讨论:简单TreeRNN
- 单层TreeRNN可以取得不错的效果
- 单权重矩阵TreeRNN可以捕捉一些现象,但不适用于更复杂、更高阶的组成和长句子的解析
- 输入词之间没有真正的交互作用
- 所有句法类别、标点符号等的组成功能是相同的
Syntactically Untied SU-RNN
上面介绍的简单的TreeRNN是 W 共用一个的情况,这样会有一个问题:由于words存在不同词性,会产生不同的组合方式,比如“副词+形容词”、“动词+名词”等。不同方式的组合理应使用不同的 W ,所以针对每一种组合方式设置了相应的的 W。
一个想法是“从语法上解开”不同任务的权重。从理论上说,某一类输入的最优W与另一类输入的最优W不是完全相关的,所以使用的W应该是不一样的。这会增加要学习的权重矩阵,但能得到模型性能的较大提升。
模型的主要区别是初始化了标识符的W,默认做法是对进来的两个单词向量求平均。模型会知道哪个向量更重要,以及向量的任何旋转或缩放都可以提高性能。从下图可知,经过训练的权重矩阵能学到实际含义,如DT-NP规则或限定词后跟名词词组(如“the cat” 或 “a man”)与限定词相比更强调名词词组。
但是这样又产生了一个新问题,由于存在多种不同此词性的组合方式,就会产生很多不同的 W ,太多的参数会降低模型训练的速度。
这篇文章Parsing with Compositional Vector Grammars - Socher et al. 给出了一些解决方法。比如,去掉一些不太可能出现的组合方式;或者只考虑可能性最大的几种组合方式。
Matrix-Vector Recursive Neural Network & Recursive Neural Tensor Network
SU-RNN确实比标准的递归网络模型表现更好,但它的表现力还不够。考虑修改单词,比如副词“very”,副词的字面意思是“用于强调”。这时就需要一种方法能体现出这种word的意义。
在每个word开始训练时,为其增加一个参数,如下图,通过这种方式,训练的结果一般能使“ operator”达到目的。
针对这种情况,还有一些更复杂的操作:RNTNs
Recursive Neural Tensor Network
- 参数比MV-RNN少
- 允许两个单词或短语矢量相乘地交互
Improving Deep Learning Semantic Representations using a TreeLSTM
- 仍然试图用(高维、连续的)向量空间中的一个位置来表示句子的意义
- 准确地处理语义组成和句子意义
- 将广泛使用的链结构LSTM推广到树
将顺序LSTM一般化为具有任意分支因子的树
成分句法分析
前面的笔记中介绍过依存关系分析,即通过在单词及其依赖项之间建立二进制非对称关系,显示哪个单词依赖于哪个单词。现在关注成分句法分析,将单词变成嵌套形式。
成分句法分析是将一段文本(例如一个句子)分成子短语的一种方法 (也称为“短语结构分析”) 其目标之一是识别文本中的成分,这些成分在文本信息提取时非常有用。通过分析句子成分,可以生成语法正确的相似句子。
成分
在句法分析中,成分可以是一个单词或短语,作为层次结构中的一个单元。短语是由两个或以上的单词组成的序列,围绕头部词汇项,在句子中作为一个单元。作为短语的一组词应该在句子中发挥特定的作用。此外,该组词可以整体移动或替换,句子依旧保持流利和语法正确。
例如,下面的句子包含名词短语:“wonderful CS224N”。
I want to be enrolled in the wonderful CS224N !
可以把整个短语移到前面来重写这个句子,如下所示。
The wonderful CS224N I want to be enrolled in !
或者这个短语可以替换成一个功能和意义相似的组成部分,比如"great CS course in Stanford about NLP and Deep Learning"
I want to be enrolled in the great CS course in Stanford about NLP
and Deep Learning !
对于成分分析,基本子句结构被理解为主语(名词短语NP)和谓语(动词短语VP)的二元划分。对于句子中的每个元素,树结构中都有一个或多个节点。
S -> NP VP
事实上,解析过程说明了某些类似的规则。从句子符号S开始推导,依次应用短语结构规则,最后用替换规则代替抽象符号的实际单词。根据提取规则可以生成相似的句子。如果规则正确,那么以这种方式产生的任何句子都应该在语法上正确。然而,生成的句子在语法上可能是正确的,但在语义上可能是无意义的,比如:Colorless green ideas sleep furiously
成分解析树
在自然语言中各个成分很可能彼此嵌套在一起。因此,短语的自然表示形式是树。通常使用成分解析树来显示解析过程。树中的非终端被标记为短语的类型(如名词短语),终端是句子中的准确单词。以John hit the ball为例,句法结构如下图所示。
解析树从表示整个句子的根S开始,到表示句子中的每个单词的每个叶子节点结束。使用以下缩写:
S代表句子,最高级的结构。
NP代表名词短语,包括句子的主语和宾语。
VP代表动词短语,用作谓语。
V代表动词。
D代表限定词,如定冠词the
N代表名词
参考:http://web.stanford.edu/class/cs224n/slides/cs224n-2020-lecture18-TreeRNNs.pdf