2020-02-25

RNN

循环神经网络(下面简称RNNs)可以通过不停的将信息循环操作,保证信息持续存在,利用前面的事件信息来对后面事件进行分类

    +----+
    | ht |
    +-+--+
      ^
+-----|----+
|     |    |
|   +-+-+  |
+-> | A +--+
    +-+-+
      ^
      |
    +-+--+
    | xt |
    +----+

可以看出A是一组神经网络(可以理解为一个网络的自循环),它的工作是不停的接收并且输出。从图中可以看出A允许将信息不停的再内部循环,这样使得它可以保证每一步的计算都保存以前的信息。

这样讲可能还是有点晕,更好的理解方式,也是很多文章的做法,将RNNs的自循环结构展开,像是将同一个网络复制并连成一条线的结构,将自身提取的信息传递给下一个继承者,如下图所示。

    +----+         +----+    +----+    +----+    
    | ht |         | h0 |    | h1 | .. | hn |    
    +-+--+         +-+--+    +-+--+    +-+--+    
      ^              ^         ^         ^       
+----------+         |         |         |       
|     |    |         |         |         |       
|   +-+-+  |   =   +-+-+     +-+-+     +-+-+     
+-> | A +--+       | A +---->+ A +---->+ A +
    +-+-+          +-+-+     +-+-+     +-+-+     
      ^              ^         ^         ^       
      |              |         |         |       
    +-+--+         +-+--+    +-+--+    +-+--+    
    | xt |         | x0 |    | x1 | .. | xn |    
    +----+         +----+    +----+    +----+    

这种链式的结构揭示了RNNs与序列和列表类型的数据密切相关。好像他们生来就是为了处理序列类型数据的。

长依赖存在的问题

假设现在有个更为复杂的任务,考虑到下面这句话“I grew up in France… I speak fluent French.”,现在需要语言模型通过现有以前的文字信息预测该句话的最后一个字。通过以前文字语境可以预测出最后一个字是某种语言,但是要猜测出French,要根据之前的France语境。这样的任务,不同之前,因为这次的有用信息与需要进行处理信息的地方之间的距离较远,这样容易导致RNNs不能学习到有用的信息,最终推导的任务可能失败。如下图所示。

理论上RNNs是能够处理这种“长依赖”问题的。通过调参来解决这种问题。但是在实践过程中RNNs无法学习到这种特征。

为什么? : Hochreiter (1991) German 和Bengio, et al. (1994) 深入研究过为什么RNNs没法学习到这种特征

LSTM 模型原理

Long Short Term Memory networks(以下简称LSTMs),一种特殊的RNN网络,该网络设计出来是为了解决长依赖问题。该网络由 Hochreiter & Schmidhuber (1997)引入,并有许多人对其进行了改进和普及。他们的工作被用来解决了各种各样的问题,直到目前还被广泛应用。

所有循环神经网络都具有神经网络的重复模块链的形式。 在标准的RNN中,该重复模块将具有非常简单的结构,例如单个tanh层。标准的RNN网络如下图所示

            +-------+            +-------+            +-------+
            | h(t-1)|            | h(t)  |            | h(t+1)|
            +----^--+            +----^--+            +----^--+
                 |                    |                    |
 +---+         +-+-->-----+         +-+--->+---+         +-+--->
     |  +------+          |  +------+          |  +------+
     |  | A    |          |  | tanh |          |  | A    |
   +-+--+------+        +-+--+------+        +-+--+------+
   |                    |                    |
+--+---+             +--+---+             +--+---+
| xt-1 |             | xt   |             | xt+1 |
+------+             +------+             +------+

LSTMs也具有这种链式结构,但是它的重复单元不同于标准RNN网络里的单元只有一个网络层,它的内部有四个网络层。LSTMs的结构如下图所示。

                  +-------+                  +-------+                  +-------+
                  | h(t-1)|                  | h t   |                  | h(t+1)|
                  +----^--+                  +----^--+                  +----^--+
                       |                          |                          |
----ⓧ-----㊉------+------>----ⓧ-----㊉------+------>----ⓧ-----㊉------+------>
    ^      ^       |   |       ^      ^       |   |       ^      ^       |   |
    |      |      tanh |       |      |      tanh |       |      |      tanh |
    |      +       |   |       |      +       |   |       |      +       |   |
    |  +--+ⓧ   +->ⓧ  |       |  +--+ⓧ   +->ⓧ  |       |  +--+ⓧ    +->ⓧ  |
    |  |   |    |  |   |       |  |   |    |  |   |       |  |   |    |  |   |
    σ  σ  tanh  σ  |   |       σ  σ  tanh  σ  |   |       σ  σ  tanh  σ  |   |
    |  |   |    |  |   |       |  |   |    |  |   |       |  |   |    |  |   |
---++--+---+----+  +---+-->---++--+---+----+  +---+-->---++--+---+----+  +---+-->
   |                          |                          |
+--+---+                   +--+---+                   +--+---+
| xt-1 |                   | x    |                   | xt+1 |
+------+                   +------+                   +------+

其中 、 为激活函数

表示向量积操作

表示向量和操作

箭头合并 表示 合并 concat操作

LSTMs的核心思想

LSTMs的核心是细胞状态,用贯穿细胞的水平线表示。

细胞状态像传送带一样。它贯穿整个细胞却只有很少的分支,这样能保证信息不变的流过整个RNNs。细胞状态如下图所示

到 线条

                    +-------+
                    | h t   |
                    +----+--+
Ct-1                     |  Ct
  ----ⓧ-----㊉------+------>
      ^      ^       |   |
      |      |      tanh |
      |      |       v   |
      |  +--+ⓧ   +->ⓧ  |
      |  |   |    |  |   |
      σ  σ  tanh  σ  |   |
ht-1  |  |   |    |  |   |
  ---++--+---+----+  +---+-->
     |                    ht
  +--+---+
  | xt   |
  +------+

LSTM网络能通过一种被称为门的结构对细胞状态进行删除或者添加信息。

门能够有选择性的决定让哪些信息通过。其实门的结构很简单,就是一个sigmoid层和一个点乘操作的组合。如下图所示

---ⓧ---
    ^
    |
    σ
    |

因为sigmoid层的输出是0-1的值,这代表有多少信息能够流过sigmoid层。0表示都不能通过,1表示都能通过。

一个LSTM里面包含三个门来控制细胞状态。

分别为 忘记门、输入门、输出门

2.2.1 忘记门

LSTM核心思想

传送带进行传动,门结构,信息选择性通过

-> 门

你可能感兴趣的:(2020-02-25)