MindSpore易点通·精讲系列--模型训练之GPU分布式并行训练
Dive Into MindSpore–Lstm Operator For Network Construction
MindSpore易点通·精讲系列–网络构建之LSTM算子
MindSpore易点通·精讲系列–网络构建之LSTM算子–上篇
MindSpore易点通·精讲系列–网络构建之LSTM算子–中篇
MindSpore易点通·精讲系列–网络构建之LSTM算子–下篇
本文开发环境
- MindSpore 1.7.0
本文内容提要
- 原理介绍
- 文档说明
- 案例解说
- 本文总结
- 本文参考
1. 原理介绍
LSTM,Long Short Term Memory,又称长短时记忆网络。原始RNN存在一个严重的缺陷:训练过程中经常会出现梯度爆炸和梯度消失的问题,以至于原始的RNN很难处理长距离的依赖,为了解决(缓解)这个问题,研究人员提出了LSTM。
1.1 LSTM公式
LSTM的公式表示如下:
\begin{split}\begin{array}{ll} \\ i_t = \sigma(W_{ix} x_t + b_{ix} + W_{ih} h_{(t-1)} + b_{ih}) \\ f_t = \sigma(W_{fx} x_t + b_{fx} + W_{fh} h_{(t-1)} + b_{fh}) \\ \tilde{c}_t = \tanh(W_{cx} x_t + b_{cx} + W_{ch} h_{(t-1)} + b_{ch}) \\ o_t = \sigma(W_{ox} x_t + b_{ox} + W_{oh} h_{(t-1)} + b_{oh}) \\ c_t = f_t * c_{(t-1)} + i_t * \tilde{c}_t \\ h_t = o_t * \tanh(c_t) \\ \end{array}\end{split}其中σ
是sigmoid激活函数, *
是乘积。 W, b 是公式中输出和输入之间的可学习权重。
1.2 LSTM结构
为方便理解,1.1
中的公式的结构示意图如下:
1.3 LSTM门控
1.3.1 遗忘门
遗忘门公式为:
f_t = \sigma(W_{fx} x_t + b_{fx} + W_{fh} h_{(t-1)} + b_{fh})ft=σ(Wfxxt+bfx+Wfhh(t−1)+bfh)
解读:
“遗忘门”决定之前状态中的信息有多少应该舍弃。它会读取 h_{t-1}ht−1 和 x_txt的内容,\sigmaσ符号代表Sigmoid函数,它会输出一个0到1之间的值。其中0代表舍弃之前细胞状态C_{t-1}Ct−1中的内容,1代表完全保留之前细胞状态C_{t-1}Ct−1中的内容。0、1之间的值代表部分保留之前细胞状态C_{t-1}Ct−1中的内容。
1.3.2 输入门
输入门公式为:
i_t = \sigma(W_{ix} x_t + b_{ix} + W_{ih} h_{(t-1)} + b_{ih}) \\ \tilde{c}_t = \tanh(W_{cx} x_t + b_{cx} + W_{ch} h_{(t-1)} + b_{ch})it=σ(Wixxt+bix+Wihh(t−1)+bih)c~t=tanh(Wcxxt+bcx+Wchh(t−1)+