最近自然语言处理与深度学习的一个新发现是,我们可以通过深度学习用实数值向量来表示语句的语义。如图3所示,两句话“John loves Mary”和“Mary is loved by John”的语义向量就相近,而这两句话的语义向量就与“Mary loves John”的语义向量相远。
四个深度学习方法:单词嵌入(word embedding)、循环神经网络(Recurrent Neural Network)、卷积神经网络(Convolutional Neural Network)、递归神经网络(Recursive Neural Network)的原理,它们是语句语义学习的强有力工具。
单词嵌入,其中最常用的是称为Word2Vec的工具,将高维的单词向量压缩成为低维的单词向量。矩阵是稀疏的,可以对其进行矩阵分解,这时得到的左矩阵就可以作为单词嵌入使用。它是一个低维稠密矩阵,每一行对应着一个单词,每一列对应着一个话题。
循环神经网络(RNN),RNN把一句话看成单词的序列,每个单词由一个向量表示,每一个位置上有一个中间表示,由向量组成,表示从句首到这个位置的语义。RNN把句末的中间表示当作整个句子的语义表示。参照图4。RNN与隐马尔可夫模型有相似的结构,但具有更强的表达能力,中间表示没有马尔可夫假设,而且模型是非线性的。
卷积神经网络(CNN)[5,6]。CNN对句子进行扫描,抽取特征,选择特征,最后组合成句子的语义表示。首先从左到右用一个滑动窗口对句子进行扫描,每个滑动窗口内有多个单词,每个单词由一个向量表示。在滑动窗口内,通过卷积(convolution)操作,进行特征抽取。这样,在各个位置上得到一系列特征。之后再通过最大池化(max pooling)操作,对特征进行选择。重复以上操作多次。
递归神经网络(ReNN)[7]。ReNN假设对语句进行句法分析,得到句法树。句法树的每个节点上有一个向量中间表示。父节点的表示由其子节点的表示决定,通过神经网络模型化。而根节点的表示就是整个句子的语义表示。参照图6。句法树上的中间表示可以在句法分析的过程中得到,比如在最大间隔分析(max margin parsing)。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深度学习与语义表示学习 - Python技术站