机器学习-30-Recursive Network(递归网络)

Recursive Network

Application: Sentiment Analysis(应用:情节分析)

Recursive Network是比RNN更一般型式的神经网路。

RNN来看情绪分析的案例,将Word Sequence输入神经网路,经过相同的function-f最后经过function-g得到结果。

如果是Recursive Network的话,必需先决定这几个Sequence的关联,上图下案例来看,我们将 x 1 , x 2 x_1,x_2 x1,x2丢到function-f得到 h 1 h^1 h1,再将 x 3 , x 4 x^3,x^4 x3,x4丢入相同的function-f,得到 h 2 h^2 h2,再将 h 1 , h 2 h^1,h^2 h1,h2丢到function-f得到 h 3 h^3 h3,再经过function-g得到最后结果。

在实作Recursive Network的时候要注意, x , h x,h x,h的维度必需要相同(因为用的是同一个f)。

事实上RNN是Recursive Network的一种结构模式。


Recursive Network

递归网络时一种RNN的扩展形式,他是空间的展开,且具有树形结构。

要决定这句话是好,还是坏。

从syntactic structure(文法结构)可以看的出这句话的结合方式

  1. 用词嵌入将每一个Word用Vectory来表示。
  2. 根据文法结构来结合:将Very, Good丢入function-f得到输出(词向量维等于| Z |)输入:| 2Z |,输出:| Z |
    直观来看,我们希望得到的输出代表着『Very Good』

function-f是一个nn,它所处理的事情或许比想像中还要复杂一些,因此不会只是单纯的将两个向量相加而以。

扫描二维码关注公众号,回复: 12409566 查看本文章

举例来说,not是中性字,而good是正面,两个加起来并不是正面偏中性,而是一个负面字眼,因此这不可能是单纯的相加就可以达成的。

透过训练资料的学习,让『not very good』经过function-f的产出再经过function-g来得到最终的情绪等级,再依据与实际情绪的loss做优化。


Recursive Network Tensor Network

那么我们的function f到底应该是什么样子的呢?

我们看下面这张图:

最简单的就是上图上半部分所示:把蓝色和黄色向量串联起来,乘以一个权重矩阵 W W W,经过一个激活函数激活,这样做的缺点是 a , b a,b a,b缺少交互,不能做到反转或者加重情感,因此无法满足我们上说明的需求期望,或者很难达到理想的效果。

改进:加号后面就是上半部分的内容,加号前面是两次运算,权重矩阵不一样,得到情感。
注意:后面还是传统的做法,但是前面加上了一个vector。这个vector的元素就是来学习这些词之间的interaction,然后将这些interaction变成bias,因为recursive network的function都是不变的,因此这些bias就这样被传递下去了。那么这里有一个需要注意的就是,我们这里有几个词,那我们就需要多少个bias,而且每个bias中间的这个矩阵W都是不一样的。

如下图是实验结果:

接下来,他有很多版本:比如下一个 Matrix-Vector Recursive Network

Matrix-Vector Recursive Network.

该网络的核心思想:将词向量分成两部分,1是自己的部分,2是影响别人的部分。
这个方法感觉比较有道理,但实际上的Performance是较Recursive Network Tensor Network差。


Tree LSTM


More Application(更多应用:句子关联)

这种recursive network模型还有很多应用:句子关联

猜你喜欢

转载自blog.csdn.net/qq_44766883/article/details/111995390