循环神经网络

为什么需要循环神经网络

\( CNN \)的数据表示能力已经非常强悍了,但是世界是复杂的,对于很多数据,如文本,语音,视频,机器翻译等,数据的输入顺序非常重要,而卷积是不在乎文本顺序的。循环神经网络的每个输入会与它之前或之后的输入存在关联。

RNN

循环神经网络_第1张图片

$$ h_t = \sigma(W_{ih}x_t + b_{ih} + W_{hh}h_{t-1} +b_{hh}) $$

优点是有一定的记忆能力,然而随着递归次数的增加,会出现权重指数级爆炸或者消失的问题,从而难以捕捉长时间的关联,并且导致\( RNN \)的收敛困难,因此引出\( LSTM \)。

LSTM

循环神经网络_第2张图片
计算过程如下,
MARKDOWN常用公式键入语法

$$ \begin{aligned} i_t &= \sigma(W_{ii}x_t + b_{ii}+W_{hi}h_{t-1}+b_{hi}) \\ f_t &= \sigma(W_{if}x_t + b_{if}+W_{hf}h_{t-1}+b_{hf}) \\ g_t &= \tanh(W_{ig}x_t + b_{ig}+W_{hg}h_{t-1}+b_{hg}) \\ o_t &= \sigma(W_{io}x_t + b_{io}+W_{ho}h_{t-1}+b_{ho}) \\ c_t &= f_t{\times}c_{t-1} + i_t{\times}g_t \\ h_t &= c_t{\times}\tanh(o_t) \end{aligned} $$

\( i_t,f_t,g_t,o_t \)分别是输入门、遗忘门、选择门、和输出门。
\( LSTM \)在信息处理方面主要分为三个阶段:

  1. 遗忘阶段。这个阶段主要是对上一个结点传递进来的输入进行选择性忘记,会“遗忘不重要的,记住重要的”。即通过\( f_t \)的值来控制上一状态\( c_{t-1} \)中那些需要记住,哪些需要遗忘。
  2. 选择记忆阶段。这个阶段将输入\( X_t \)有选择的进行“记忆”。哪些重要则着重记忆,哪些不重要的则减少记录。当前单元的输入内容\( i_t \)是计算得到的,可以通过\( g_t \)进行有选择的输出.
  3. 输出阶段。这个阶段将决定哪些会被当成当前状态的输出。主要通过\( o_t \)进行控制,并且要对\( c_t \)使用\( tanh \)函数进行缩放。

    RNN种类

    主要根据输入和输出的数量,分为五种,即为一对一,一对多,多对一,多对多,偏置多对多。这个在代码中体现,暂不赘述。

你可能感兴趣的