李宏毅机器学习笔记-12.3 循环神经网络(Recurrent Neural Network-RNN)- part 3

Recurrent Neural Network(RNN) - 循环神经网络(part 3) Gated RNN


0 前言

  • 其实这节课的内容跟我其他这个系列的博客是不属于同一个课程的,但是因为是在 B 站看的视频,up 主可能不小心弄混了,于是我就也一起看了,多学点总没什么错。
  • 虽然不是同一门课,但是确实是同一个老师,也是极其学习的内容,所以就当做一门课也没什么差别。这里给出这节课内容所属的课程网站 Applied Deep Learning / Machine Learning and Having It Deep and Structured

1 几种 RNN 结构

  • RNN 中有一个 Basic Function ,无论输入的序列多长,都会经过这个 Fuction。现在我们假设这个Function叫做 f : h , y = f ( h , x ) ,即输入 h , x ,输出 h , y . 注意 h h 必须是 相同维数Vector,因为本次的输出 h 会被当成下一次的输入 h .

    1526558056294

  • 上述的 RNN 是单层的,我们也可以构造 Deep RNN,比如说我们再加一层,那我们就需要再加一个 basic function ,如下图:

    1526558266938

  • RNN 也可以是双向的,如下图,最终的输出是由两个方向的 RNN 共同决定的,即函数 y = f 3 ( a , c ) .

    1526558479405

2 LSTM - Long Short-term Memory

  • Naive RNN: 考虑最简单的 RNN 结构,basic function 是 : f : h , y = f ( h , x ) ,那么到底是怎么把输入变成输出的呢?如下图:

    1526558888030

  • LSTM: 如果将 LSTM 的 c 与 h 合并起来,就会发现与 Naive RNNI/O 是一样的。那为什要将其分开为 c 和 h 呢? 因为 c 变化很缓慢,这就意味着 c 可以存储比较久的信息看。如下图:

    1526560589940

  • LSTM 的一些计算过程如下:

    扫描二维码关注公众号,回复: 1060327 查看本文章

    1526561474120

    以上的过程只用了 h t 1 x t 而没有用到 c t 1 ,但是我们也可以把 c t 1 加进来,这就叫做 peephole 。但是 peephole 对结果的影响不大,而且我们也不希望参数太多,所以与 c t 1 相乘的地方我们通常设置为 对角矩阵,这样子对 c t 1 只是相当于进行了缩放,没有进行线性变换。

    1526561655123

  • 具体计算如下:

    1526562511730图中,1526562605767 表示的是 element wise,也就是矩阵的逐元素相乘。
    从图中的三个公式可以看出:

    • z i 就是 input gate,控制着 z c t 的影响。
    • z f 就是 forget gate,控制着 c t 1 c t 的影响。 c t 1 代表着过去的记忆, z f 决定过去的记忆对现在有没有影响,也就是是否要 forget
    • z o 就是 output gate,控制着 c t h t 的影响。
  • LSTM 之间的连接如下:

    1526564050143

3 GRU - Gated Recurrent Unit

  • GRU 是另一种架构:

1526642642502

猜你喜欢

转载自blog.csdn.net/memoryd/article/details/80369600
今日推荐