李宏毅机器学习22—Recursive network

Recursive network(递归神经网络)

摘要:

这节课学习了Recursive network,RNN是Recursive network的特殊情况。

主要以句子的情感分析为例,讲了Recursive network是如何对句子进行分析的。

对于recursive network中的f函数,有几种不同的做法:

1.recursive neural tensor network:将两个word串接在一起,组成vector x,用xTwx来表示两个word合并在一起的意思。

2.matrix-vector recursive network:将每个word分成两部分,一部分表示本身含义,一部分表示影响其他word的含义。这样可以更加准确的表达意思。

3.tree—lstm:将f函数用lstm表示。因为它们的输入和输出都是多个vector。

 

目录

一、什么是Recursive network

二、分析实例:

复杂情况:

三、recursive neural tensor network

四、matrix-vector recursive network

五、tree lstm

六、应用

总结:


 

一、什么是Recursive network

Recursive network是Recurrent Neural NetworkRNN)的泛化版本。

以句子的情感分析为例

输出一个句子,机器要评价这个句子是正面,负面还是中性的。

对于rnn来说:

先将句子转化为一组vector,每个word vector依次输入到一个rnn(图片中的function f)。将得到的结果丢到function g中,最后得到最终的输出。

对于Recursive network来说:

先确定四个word之间的关系,由上图来看,将x1,x2关联得到h1,x3,x4关联得到h2,然后h1h2关联得到h3……

这里要注意hx的维度是一样的。

 

这里可以发现,Rnn其实recursive network的一种特例

 

二、分析实例:

以“not very good”为例,分析句子表达的情感

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

2.Word Embedding将每一个WordVector来表示。
3.根据文法结构来结合:将Very, Good丢入function f得到输出(词向量维度等于z

输入向量维度2| Z |,输出向量维度| Z |

F 不是两个vector的简单运算,因为有很多复杂的情况,所以需要f是一个network

 

复杂情况:

not是中性,good是积极,not good就成了消极

棒是积极,好棒也是积极,好棒棒就成了消极

 

红色表示消极,蓝色表示积极,加上not之后,词义发生了反转。

加上very之后,表示加强后面的词性。

 

那机器是如何训练的呢?

因为我们有训练数据,给机器输入label data,机器将整句话按文法结构,输入到network中,得到输出结果,将结果与reference相比较,根据output与ref的差距,回过头来训练 f和g。

 

经过这样的训练流程,就可以实现我们上面提到的复杂情况了。

 

三、recursive neural tensor network

上边提到的f function是如何实现的?

1.可以将a和b的vector串接在一起,乘以系数w,在通过激活函数,最终得到结果p

但是,这样做没有办法表示出a和b之间可能存在的联系。

比如good是积极地,not good就是消极的。加上not之后,整个词义反转,通过这个方法是没办法实现的。

2.改进:

要让a,b两个向量是有相乘的关系,调整为图片下边的样子,两个向量堆叠之后转置XT乘上权重W再乘上X,这么计算之后得到的是一个数,而后面所得项是一个2x1矩阵,无法相加,因此同样的事再做一次,将两个数串起来就成了2 x1矩阵。

要注意到两个W颜色不同代表的是不同的weight。

 

四、matrix-vector recursive network

实现f 函数的另一种方法

想法:一个word vector包含两部分,一是它本身的意思,一个是它影响其他word的意思。

做法:

将每个word拆成两部分,小写字母表示本身的含义,大写字母表示影响其他word的意思。

以not good为例,not的本身不表达情感,所以a为0,而A表示改变其他word的情感,所以是图上的矩阵。同理可得,good的b表达积极的情感,B则不会影响其他word。

 

这样将B*a和A*b接在一起,再乘以参数w,就得到not good的本身含义。

将A*B,再乘以另一个参数w,就得到not good影响其他word的矩阵。

将这两个结果拉成一个vector,就表示not good的vector

 

 

五、tree lstm

更复杂的一种方法

典型的LSTM:

输入一个h和m,得到输出h和m,但是h的输入输出差别很大,m的不大

Tree LSTM:

就是把那个f换成LSTM,上图表示tree lstm和Recursive network的对应关系

 

六、应用

侦测两个句子是不是同一个意思,把两个句子分别得到word embedding,然后再丢到f训练出来关系来预测

 

总结:

尽管递归神经网络具有更为强大的表示能力,但是在实际应用中并不太流行。

其中一个主要原因是,递归神经网络的输入是树/图结构,而这种结构需要花费很多人工去标注。想象一下,如果我们用循环神经网络处理句子,那么我们可以直接把句子作为输入。

然而,如果我们用递归神经网络处理句子,我们就必须把每个句子标注为语法解析树的形式,这无疑要花费非常大的精力。很多时候,相对于递归神经网络能够带来的性能提升,这个投入是不太划算的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值