递归神经网络(recursive NN)结合自编码(Autoencode)实现句子建模

递归神经网络(recursive NN)结合自编码(Autoencode)实现句子建模


递归神经网络(recursive NN)

目前有两种RNN比较常用,一种是recurrent neural networks,另一种是recursive neural networks。这两种句子转换模型相似而又有所不同。


recurrent neural networks

recurrent neural networks,是markov提出来的,其模型如下:
recurrent neural networks
隐藏层如下:
这里写图片描述
合成顺序:沿着序列进行
合成特点:每个结点的表示都包含之前所有历史信息
合成函数:LSTM/GPU/Vanilla
应用:建模句子


recursive neural networks

recursive neural networks,是Richard提出来的,其模型如下:
recursive neural networks
这个树的构成,有多种方法,常用且最实用的就是采用贪心思想,具体怎么实现,要结合模型。
合成顺序:沿着某种树结构
合成特点:每个结点的表示与其孩子结点相关
合成函数:Vanilla/Tensor/LSTM
应用:建模短语,句子

注:这两种表示方法到底哪个效果更好现在还没有定论(still cognitively debatable),用recurrent neural network来建模,就是假设句子后面的词的信息和前面的词有关,而用recursive neural network来建模,就是假设句子是一个树状结构,由几个部分(主语,谓语,宾语)组成,而每个部分又可以在分成几个小部分,即某一部分的信息由它的子树的信息组合而来,整句话的信息由组成这句话的几个部分组合而来。


自编码(Autoencode)

Auto-Encoder(AE)是20世纪80年代晚期提出的,它是一种无监督学习算法,使用了反向传播算法,让目标值等于输入值。基本的AE可视为一个三层神经网络结构:一个输入层、一个隐藏层和一个输出层,其中输出层与输入层具有相同的规模。具体如下图所示。
AE
Auto-Encoder(AE)尝试学习一个 hW,b(x)x 的函数,来尽可能复现输入信号的神经网络。这么做的意义在于我们想发现输入数据中隐含的一些特定的结构,并训练出一种更好的表达输入数据的方法。


recursive autoencoder

这个模型是将recursive NN结合Autoencoder构成一个无监督的句子转换模型。可以将不定长的句子转换成句子向量。其结构如下:
RAE
具体算法如下:
准备工作:将句子的词训练成词向量
1. 将句子里面的词的词向量,两两结合,形成一个词向量对
2. 用这些词向量对去初始化Autoencoder,生成模型和参数
3. 将句子中邻近的词结合,输入初始化训练的Autoencoder模型,选择还原度最高的两个词生成的隐藏层输出,即x3,x4和对应的y1。
4. 将y1代替句子中的x3,x4,重复步骤3,直到句子所有词合并完成
5. 将选出的句子对,即[x3,x4],[x2,y1],[x1,y2]放入模型Autoencoder继续训练,更新参数
6. 直到所有还原度都大于阈值为止
7. 保留模型参数,计算句子向量


参考各位大牛的博客和论文
deep learning 自编码算法详细理解与代码实现(超详细)
人人都能用Python写出LSTM-RNN的代码
http://blog.csdn.net/pi9nc/article/details/27711441
CS224d lecture 9札记
这个大牛Richard Socher的课程和论文

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值