Skip to content

Commit

Permalink
Update 第六章_循环神经网络(RNN).md
Browse files Browse the repository at this point in the history
  • Loading branch information
tectal authored Oct 26, 2018
1 parent c9729b9 commit 6d5d96c
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions MarkDown/第六章_循环神经网络(RNN).md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ http://blog.csdn.net/heyongluoyao8/article/details/48636251

## 6.1 RNNs和FNNs有什么区别?

不同于传统的前馈神经网络(FNNs),RNNs引入了定向循环,能够处理那些输入之间前后关联的问题。定向循环结构如下图所示:
不同于传统的前馈神经网络(FNNs),RNNs引入了定向循环,能够处理那些输入之间前后关联的问题。**定向循环结构如下图所示**

![](../img/ch6/figure_6.1_1.jpg)

## 6.2 RNNs典型特点?

RNNs的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。
RNNs之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNNs能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关,下图便是一个典型的RNNs:
RNNs之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNNs能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关,**下图便是一个典型的RNNs**

![](../img/ch6/figure_6.2_1.png)

Expand Down Expand Up @@ -78,19 +78,19 @@ RNNs已经被在实践中证明对NLP是非常成功的。如词向量表达、
### 6.6.1Simple RNNs(SRNs)

SRNs是RNNs的一种特例,它是一个三层网络,并且在隐藏层增加了上下文单元,下图中的**y**便是隐藏层,**u**便是上下文单元。上下文单元节点与隐藏层中的节点的连接是固定(谁与谁连接)的,并且权值也是固定的(值是多少),其实是一个上下文节点与隐藏层节点一一对应,并且值是确定的。在每一步中,使用标准的前向反馈进行传播,然后使用学习算法进行学习。上下文每一个节点保存其连接的隐藏层节点的上一步的输出,即保存上文,并作用于当前步对应的隐藏层节点的状态,即隐藏层的输入由输入层的输出与上一步的自己的状态所决定的。因此SRNs能够解决标准的多层感知机(MLP)无法解决的对序列数据进行预测的任务。
SRNs网络结构如下图所示:
**SRNs网络结构如下图所示**

![](../img/ch6/figure_6.6.1_1.png)

### 6.6.2Bidirectional RNNs

Bidirectional RNNs(双向网络)的改进之处便是,假设当前的输出(第t步的输出)不仅仅与前面的序列有关,并且还与后面的序列有关。例如:预测一个语句中缺失的词语那么就需要根据上下文来进行预测。Bidirectional RNNs是一个相对较简单的RNNs,是由两个RNNs上下叠加在一起组成的。输出由这两个RNNs的隐藏层的状态决定的。如下图所示:
Bidirectional RNNs(双向网络)的改进之处便是,假设当前的输出(第t步的输出)不仅仅与前面的序列有关,并且还与后面的序列有关。例如:预测一个语句中缺失的词语那么就需要根据上下文来进行预测。Bidirectional RNNs是一个相对较简单的RNNs,是由两个RNNs上下叠加在一起组成的。输出由这两个RNNs的隐藏层的状态决定的。**如下图所示**

![](../img/ch6/figure_6.6.2_1.png)

### 6.6.3Deep(Bidirectional) RNNs

Deep(Bidirectional)RNNs与Bidirectional RNNs相似,只是对于每一步的输入有多层网络。这样,该网络便有更强大的表达与学习能力,但是复杂性也提高了,同时需要更多的训练数据。Deep(Bidirectional)RNNs的结构如下图所示:
Deep(Bidirectional)RNNs与Bidirectional RNNs相似,只是对于每一步的输入有多层网络。这样,该网络便有更强大的表达与学习能力,但是复杂性也提高了,同时需要更多的训练数据。**Deep(Bidirectional)RNNs的结构如下图所示**
![](../img/ch6/figure_6.6.3_1.png)

### 6.6.4Echo State Networks(ESNs)
Expand All @@ -106,7 +106,7 @@ ESNs(回声状态网络)虽然也是一种RNNs,但是它与传统的RNNs相差

从结构上讲,ESNs是一种特殊类型的循环神经网络,其基本思想是:使用大规模随机连接的循环网络取代经典神经网络中的中间层,从而简化网络的训练过程。因此ESNs的关键是中间的储备池。网络中的参数包括:W为储备池中节点的连接权值矩阵,Win为输入层到储备池之间的连接权值矩阵,表明储备池中的神经元之间是连接的,Wback为输出层到储备池之间的反馈连接权值矩阵,表明储备池会有输出层来的反馈,Wout为输入层、储备池、输出层到输出层的连接权值矩阵,表明输出层不仅与储备池连接,还与输入层和自己连接。Woutbias表示输出层的偏置项。
对于ESNs,关键是储备池的四个参数,如储备池内部连接权谱半径SR(SR=λmax=max{|W的特征指|},只有SR <1时,ESNs才能具有回声状态属性)、储备池规模N(即储备池中神经元的个数)、储备池输入单元尺度IS(IS为储备池的输入信号连接到储备池内部神经元之前需要相乘的一个尺度因子)、储备池稀疏程度SD(即为储备池中互相连接的神经元个数占储备池神经元总个数的比例)。对于IS,如果需要处理的任务的非线性越强,那么输入单元尺度越大。该原则的本质就是通过输入单元尺度IS,将输入变换到神经元激活函数相应的范围(神经元激活函数的不同输入范围,其非线性程度不同)。
ESNs的结构如下图所示:
**ESNs的结构如下图所示**

![](../img/ch6/figure_6.6.4_1.png)
![](../img/ch6/figure_6.6.4_2.png)
Expand All @@ -122,7 +122,7 @@ GRUs也是一般的RNNs的改良版本,主要是从以下**两个方面**进
![](../img/ch6/figure_6.6.5_1.png)

### 6.6.6LSTM Netwoorks
LSTMs与GRUs类似,目前非常流行。它与一般的RNNs结构本质上并没有什么不同,只是使用了不同的函数去去计算隐藏层的状态。在LSTMs中,i结构被称为cells,可以把cells看作是黑盒用以保存当前输入xt之前的保存的状态ht−1,这些cells更加一定的条件决定哪些cell抑制哪些cell兴奋。它们结合前面的状态、当前的记忆与当前的输入。已经证明,该网络结构在对长序列依赖问题中非常有效。LSTMs的网络结构如下图所示。
LSTMs与GRUs类似,目前非常流行。它与一般的RNNs结构本质上并没有什么不同,只是使用了不同的函数去去计算隐藏层的状态。在LSTMs中,i结构被称为cells,可以把cells看作是黑盒用以保存当前输入xt之前的保存的状态ht−1,这些cells更加一定的条件决定哪些cell抑制哪些cell兴奋。它们结合前面的状态、当前的记忆与当前的输入。已经证明,该网络结构在对长序列依赖问题中非常有效。**LSTMs的网络结构如下图所示**

![](../img/ch6/figure_6.6.6_1.png)

Expand All @@ -144,5 +144,5 @@ CW-RNNs也是一个RNNs的改良版本,是一种使用时钟频率来驱动的

CW-RNNs与SRNs网络结构类似,也包括输入层(Input)、隐藏层(Hidden)、输出层(Output),它们之间也有向前连接,输入层到隐藏层的连接,隐藏层到输出层的连接。但是与SRN不同的是,隐藏层中的神经元会被划分为若干个组,设为$g$,每一组中的神经元个数相同,设为$k$,并为每一个组分配一个时钟周期$T_i\epsilon\{T_1,T_2,...,T_g\}$,每一个组中的所有神经元都是全连接,但是组$j$到组$i$的循环连接则需要满足$T_j$大于$T_i$。如下图所示,将这些组按照时钟周期递增从左到右进行排序,即$T_1<T_2<...<T_g$,那么连接便是从右到左。例如:隐藏层共有256个节点,分为四组,周期分别是[1,2,4,8],那么每个隐藏层组256/4=64个节点,第一组隐藏层与隐藏层的连接矩阵为64$\times$64的矩阵,第二层的矩阵则为64$\times$128矩阵,第三组为64$\times$(3$\times$64)=64$\times$192矩阵,第四组为64$\times$(4$\times$64)=64$\times$256矩阵。这就解释了上一段的后面部分,速度慢的组连到速度快的组,反之则不成立。

CW-RNNs的网络结构如下图所示:
**CW-RNNs的网络结构如下图所示**
![](../img/ch6/figure_6.6.7_1.png)

0 comments on commit 6d5d96c

Please sign in to comment.