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叫做 ,即输入,输出 . 注意 和 必须是 相同维数 的 Vector,因为本次的输出 会被当成下一次的输入 .
-
上述的 RNN 是单层的,我们也可以构造 Deep RNN,比如说我们再加一层,那我们就需要再加一个 basic function ,如下图:
-
RNN 也可以是双向的,如下图,最终的输出是由两个方向的 RNN 共同决定的,即函数 .
2 LSTM - Long Short-term Memory
-
Naive RNN: 考虑最简单的 RNN 结构,basic function 是 : ,那么到底是怎么把输入变成输出的呢?如下图:
-
LSTM: 如果将 LSTM 的 c 与 h 合并起来,就会发现与 Naive RNN 的 I/O 是一样的。那为什要将其分开为 c 和 h 呢? 因为 c 变化很缓慢,这就意味着 c 可以存储比较久的信息看。如下图:
-
LSTM 的一些计算过程如下:
以上的过程只用了 和 而没有用到 ,但是我们也可以把 加进来,这就叫做 peephole 。但是 peephole 对结果的影响不大,而且我们也不希望参数太多,所以与 相乘的地方我们通常设置为 对角矩阵,这样子对 只是相当于进行了缩放,没有进行线性变换。
-
具体计算如下:
图中, 表示的是 element wise,也就是矩阵的逐元素相乘。
从图中的三个公式可以看出:- 就是 input gate,控制着 对 的影响。
- 就是 forget gate,控制着 对 的影响。 代表着过去的记忆, 决定过去的记忆对现在有没有影响,也就是是否要 forget。
- 就是 output gate,控制着 对 的影响。
-
LSTM 之间的连接如下:
3 GRU - Gated Recurrent Unit
- GRU 是另一种架构:
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:李宏毅机器学习笔记-12.3 循环神经网络(Recurrent Neural Network-RNN)- part 3 - Python技术站