增加多个RNN问题,待进一步完善

This commit is contained in:
scutan90 2018-11-20 09:21:26 +08:00 committed by GitHub
parent e3f404551b
commit 55cc30bd00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 66 additions and 0 deletions

View File

@ -14,8 +14,74 @@
Editor: 杨国峰-中国农业科学院
Contact: tectalll@gmail.com
新增 https://blog.csdn.net/zhaojc1995/article/details/80572098
RNN发展简述?
为什么需要RNN?
RNN的结构及变体
标准RNN的前向输出流程?
RNN的训练方法——BPTT?
什么是长期依赖Long-Term Dependencies问题?
LSTM 网络是什么?
LSTM 的核心思想?
如何逐步理解LSTM?
常见的RNNs扩展和改进模型
RNN种类?
讲解CNN+RNN的各种组合方式 http://www.elecfans.com/d/775895.html
## CNN和RNN的对比 http://www.elecfans.com/d/775895.html
1、CNN卷积神经网络与RNN递归神经网络直观图
2、相同点
2.1. 传统神经网络的扩展。
2.2. 前向计算产生结果,反向计算模型更新。
2.3. 每层神经网络横向可以多个神经元共存,纵向可以有多层神经网络连接。
3、不同点
3.1. CNN空间扩展神经元与特征卷积RNN时间扩展神经元与多个时间输出计算
3.2. RNN可以用于描述时间上连续状态的输出有记忆功能CNN用于静态输出
3. 3. CNN高级100+深度RNN深度有限
http://blog.csdn.net/heyongluoyao8/article/details/48636251
## 6.1 为什么需要RNN
http://ai.51cto.com/art/201711/559441.htm
神经网络可以当做是能够拟合任意函数的黑盒子只要训练数据足够给定特定的x就能得到希望的y结构图如下
将神经网络模型训练好之后在输入层给定一个x通过网络之后就能够在输出层得到特定的y那么既然有了这么强大的模型为什么还需要RNN循环神经网络
他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。
比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列; 当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。
以nlp的一个最简单词性标注任务来说将我 吃 苹果 三个单词标注词性为 我/nn 吃/v 苹果/nn。
那么这个任务的输入就是:
我 吃 苹果 (已经分词好的句子)
这个任务的输出是:
我/nn 吃/v 苹果/nn(词性标注好的句子)
对于这个任务来说,我们当然可以直接用普通的神经网络来做,给网络的训练数据格式了就是我-> 我/nn 这样的多个单独的单词->词性标注好的单词。
但是很明显,一个句子中,前一个单词其实对于当前单词的词性预测是有很大影响的,比如预测苹果的时候,由于前面的吃是一个动词,那么很显然苹果作为名词的概率就会远大于动词的概率,因为动词后面接名词很常见,而动词后面接动词很少见。
所以为了解决一些这样类似的问题能够更好的处理序列的信息RNN就诞生了。
## 6.1 RNN种类
https://www.cnblogs.com/rucwxb/p/8047401.html
1. sequence-to-sequence输入输出都是一个序列。例如股票预测中的RNN输入是前N天价格输出明天的股市价格。
2. sequence-to-vector输入是一个序列输出单一向量。
3. vector-to-sequence输入单一向量输出一个序列。
4.Encoder-Decoder输入sequence-to-vector称作encoder输出vector-to-sequence称作decoder。
这是一个delay模型经过一段延迟即把所有输入都读取后在decoder中获取输入并输出一个序列。这个模型在机器翻译中使用较广泛源语言输在入放入encoder浓缩在状态信息中生成目标语言时可以生成一个不长度的目标语言序列。
## RNN train的时候Loss波动很大
https://www.jianshu.com/p/30b253561337
由于RNN特有的memory会影响后期其他的RNN的特点梯度时大时小learning rate没法个性化的调整导致RNN在train的过程中Loss是震荡起伏的……
为了解决RNN的这个问题在train的时候可以有个clipping的方式当梯度大于某个临界值直接截断用这个临界值作为梯度的大小防止飞出去…居然还能这么操作66666
## 6.1 RNNs和FNNs有什么区别
1. 不同于传统的前馈神经网络(FNNs)RNNs引入了定向循环能够处理输入之间前后关联问题。