目录:
1. 从词袋模型 VS 树结构模型
2. 从词向量到短语向量
3. RNN(递归神经网络)分析句子实例
4. CNN VS RNN(递归神经网络)
5. Recursive Neural Network(递归神经网络) VS (循环神经网络) Recurrent Neural Network
此部分主要讲了如何通过树RNN刻画短语的语义,将短语也映射到词向量的空间,可以刻画短语与短语,短语和词之间的相关性。至于如何刻画,下面我们将一步步介绍。
PS:
此节课中大部分提到的RNN(比如树RNN)都是Recursive Neural Network 递归神经网络,而不是前面提到的RNN(时序模型)Recurrent Neural Network 循环神经网络。下面博客中如果不是明显说明,提到的RNN均为递归神经网络。
\newline
\newline
1. 从词袋模型到树结构模型
简单的人们通过词袋模型来表示一句话或者短语,如下左半图;但是图片形象的反映了词袋模型不能完全包含所有的词,其他的词散落在下面。
复杂的就是通过语法树结构来表示一句话或者短语,如下右半图;模型变得比较复杂。
但是,即使是简单的词袋模型,在加入很多trick以后,有时还是可以击败深度学习的模型的。
2. 从词向量到短语向量
那么,既然有了词向量,我们为啥还要得到短语的向量呢?我们来看下面这个例子:
由上图我们可以看出,加粗的部分"snowboarder" 和"person on a snowboard"具有相同的语义,但是一个是词级别的,一个是短语级别的,因此短语级别的向量表示应运而生。
当然课程中还提到了将词向量和短语向量映射到一个空间的必要性,因为上例中,一个短语可能和一个词具有相关性,要让他们具有可比较性,就应该将他们映射到一个空间内。
3. RNN(递归神经网络)分析句子实例
那么我们怎么做到利用词向量和句法树结构得到短语或者句子的embedding表示呢?
首先,根据下图我们知道,想得到短语的vector,我们要学习出如何构造句子的句法树和对向量如何进行复合性表示。
然后我们根据学习到的如何构造句法,先构造短语的句法树,如下左半图:
最后我们根据学习到的如何对向量进行复合和上面构造短语的句法树,对向量进行复合性表示。如下右半图:
下面是一个具体的例子,描述上面过程:
本例中一个单元的构成,是输入 两个子节点,输出是 合并后的embedding+合并的评分:
(1)开始的时候是计算每个相邻的单词之间的评分:
(2)然后通过贪心算法,对分数高的组合进行复合性计算合并:
重复以上过程,直至合并的只剩下一个节点,那这个节点就是句子的复合性表示:
上述过程的改进:
(1)不再根据整个句子的总分挑选,而是采用 max-margin损失 使每个预测分值离错误类别要尽量远;
(2)采用束搜索取代贪心算法,效果会更好;
(3)矩阵运算中W可视作两个矩阵的拼接,
c
1
c_1
c1和
c
2
c_2
c2其实没有交互,可以考虑采用attention机制那一节课中的方式,采用metric learning或者其他让两者交互可能效果会更好。
(4)模型中使用同一个权值矩阵W处理NP、VP、PP关系,这明显是不合理的,于是替换成了各种不同的权重矩阵
W
N
P
W^{NP}
WNP,
W
V
P
W^{VP}
WVP。
(5)最后还讲了一种 矩阵-向量 的方式改进,主要思想还是增加两个即将合并节点的交互,此处不再赘述。
需要强调的一点是,树结构的求导过程要注意,前向传播信号流入某节点,反向传播误差就得从某节点分流到所有源节点。如下图:
4. CNN VS RNN(递归神经网络)
其实CNN就是不管符不符合语法,就讲节点合并;而RNN就是将它不符合语法结构的合并删除了。如下图所示:
5. Recursive Neural Network(递归神经网络) VS (循环神经网络) Recurrent Neural Network
(1)课程中讲到递归神经网络需要树形结构;循环神经网络不能很好的捕捉短语的语义。
(2)递归神经网络从下往上传递信号;循环神经网络更像是一种受限的树结构,循环神经网络从左往右传递信号。
(3)目前人们使用更多的是循环神经网络。因为递归神经网络需要句法树,而树结构就无法简单地利用反向传播训练。此外树结构导致不易在GPU上优化。
ok,这节课就介绍到这儿了~
我感觉本节课主要让我学习到了一种将句子或者短语embedding的方式。over~~