RNN总结
RNN既可以表述为循环神 经网络(recurrent neural network),也可以表述为递归神经网络(recursive neural network),前者一般用于处理以时间序列为输入的问题(比如把一个句子看成词组成的序列),每次向循环神经网络输入一个词,知道整个句子输入结束。后者一般用于处理图结构或树结构问题(比如为了处理歧义问题,我们构造语法树为输入,而不是循环输入每一个词)。
下图是循环神经网络的展开

图1
下面是一个句子对上图的应用

图2
可以这样理解:将所有用到的英文词向量化之后,the表示为(0.4,0.3),对应图1中的x输入,经过神经元计算之后输出为(1,3.5),神经元内部的计算方式为:

函数f通常是诸如tanh或者ReLU的非线性函数,U,x,St-1都为向量且U、V、W都是待训练参数。输出O可以选择softmax函数,其表达式如下

这里的变量i对应图1中的变量t,可见

也就是说循环神经网络所有输出之和为1,输出O的计算公式为

其中V和St都是向量。也就是说神经元先计算隐状态St,然后计算输出Ot
下面以树结构为例来说明递归神经网络的输入与计算
1.将句子分词之后,给每个词一个向量,这里词的向量化可以采用one-hot或者其他一些向量化工具,比如Google的gensim
2.将词按照树形结构输入,以图3为例

图3
2.1 首先计算“两个”和“外语学院”的父节点的向量,计算方法是:假设“两个”的词向量表示为c1,“外语学院”的词向量表示为c2,那么父节点对应的向量P为

其中W和b是训练好的参数,tanh是双曲正切函数,表达式为

2.2 依次迭代计算各个父节点对应的向量,最终得到根节点对应向量。
因为是以语法树输入的,所以对于歧义问题有较好的处理能力,比如图3中的句子也可以用图4的语法树来表示:

图4
事实上,图3与图4对应的根节点向量完全不同,因为词向量的输入顺序是不一样的。
在得到根节点向量后,我们就可以去完成一些更高级的任务,比如计算语义相似度或者情感分析等。
RNN总结的更多相关文章
- RNN求解过程推导与实现
RNN求解过程推导与实现 RNN LSTM BPTT matlab code opencv code BPTT,Back Propagation Through Time. 首先来看看怎么处理RNN. ...
- 在RNN中使用Dropout
dropout在前向神经网络中效果很好,但是不能直接用于RNN,因为RNN中的循环会放大噪声,扰乱它自己的学习.那么如何让它适用于RNN,就是只将它应用于一些特定的RNN连接上. LSTM的长期记 ...
- RNN 入门学习资料整理
建议按序阅读 1. RNN的一些简单概念介绍 A guide to recurrent neural networks and backpropagation Deep learning:四十九(RN ...
- lecture7-序列模型及递归神经网络RNN
Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...
- RNN 入门教程 Part 4 – 实现 RNN-LSTM 和 GRU 模型
转载 - Recurrent Neural Network Tutorial, Part 4 – Implementing a GRU/LSTM RNN with Python and Theano ...
- RNN 入门教程 Part 3 – 介绍 BPTT 算法和梯度消失问题
转载 - Recurrent Neural Networks Tutorial, Part 3 – Backpropagation Through Time and Vanishing Gradien ...
- RNN 入门教程 Part 2 – 使用 numpy 和 theano 分别实现RNN模型
转载 - Recurrent Neural Networks Tutorial, Part 2 – Implementing a RNN with Python, Numpy and Theano 本 ...
- RNN 入门教程 Part 1 – RNN 简介
转载 - Recurrent Neural Networks Tutorial, Part 1 – Introduction to RNNs Recurrent Neural Networks (RN ...
- CNN & RNN 及一些常识知识(不断扩充中)
参考: http://blog.csdn.net/iamrichardwhite/article/details/51089199 一.神经网络的发展历史 五六十年代,提出感知机 八十年代,提出多层感 ...
- 循环神经网络(RNN, Recurrent Neural Networks)介绍(转载)
循环神经网络(RNN, Recurrent Neural Networks)介绍 这篇文章很多内容是参考:http://www.wildml.com/2015/09/recurrent-neur ...
随机推荐
- 建立自己的Servlet--成功
1--用记事本新建一个servlet程序,文件名为HelloWorld.java,文件内容如下: import java.io.*; import javax.servlet.*; import ja ...
- OO面向对象多线程编程作业总结
第五次作业:多线程电梯调度 设计策略 在本次电梯作业当中,我构造了一个电梯请求队列线程,一个调度器线程,三个电梯线程,一个文件输出线程,还有主线程. 调度器扫描用户的请求队列,将每个队列分配给 ...
- 算法训练 Multithreading
算法训练 Multithreading 时间限制:1.0s 内存限制:256.0MB 问题描述 现有如下一个算法: repeat ni times yi := y y := yi+ ...
- 阿里java面试题
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- shell 脚本实战笔记(5)--搭建资源的镜像服务器
背景: 由于访问国外站点资源, 有时特别慢. 偶尔一次下载, 肯定还能忍受, 对于多次使用或者小团队内部使用, 搭建一个镜像站点, 无疑是个明智的决定. 这边以搭建CDH5的yum源镜像, 作为例子, ...
- 【python基础】如何注释代码块
前言 编写python程序有时候需要对代码块进行comment,本文对此介绍. 方法 python注释的三种方法: 1.井号注释单行代码: # 2.三个单引号或三个双引号注释语句块: ''' 或者&q ...
- GPIO口的输入输出模式
1.浮空输入 GPIO_Mode_IN_FLOATING 2.带上拉输入 GPIO_Mode_IPU 3.带下拉输入 GPIO_Mode_IPD 4.模拟输入 ...
- MyEclipse快捷键及经验总结 绝对的有用 太给力了
Ctrl+Shift+L 显示所有快捷键 Ctrl+K 参照选中的词(Word)快速定位到下一个 Ctrl+Shift+K 参照选中的词(Word)快速定位到上一个 C ...
- 利用spring-mail模块发送带附件邮件dome
本例为maven项目,直接撸代码吧. pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi ...
- POJ 3253 Fence Repair STL 优先队列
这题做完后觉得很水,主要的想法就是逆过程思考,原题是截断,可以想成是拼装,一共有n根木棍,最后要拼成一根完整的,每两根小的拼成一根大的,拼成后的木棍长度就是费用,要求费用最少.显然的是一共会拼接n-1 ...