TF2 RNN篇之LSTM原理及实战

TF2 RNN篇之LSTM原理及实战



基础的 RNN 网络结构如下图所示,上一个时间戳的状态向量 𝑡−1与当前时间戳的输入𝒙𝑡经过线性变换后,通过激活函数𝑡𝑎𝑛ℎ后得到新的状态向量 𝑡。
在这里插入图片描述
相对于基础的RNN网络只有一个状态向量 𝑡,LSTM 新增了一个状态向量𝑪𝑡,同时引入了门控(Gate)机制,通过门控单元来控制信息的遗忘和刷新,如下图所示:

在这里插入图片描述
在 LSTM 中,有两个状态向量𝒄和h ,其中𝒄作为LSTM 的内部状态向量,可以理解为LSTM 的内存状态向量Memory,而 h表示LSTM 的输出向量。相对于基础的RNN 来说,LSTM 把内部Memory 和输出分开为两个变量,同时利用三个门控:输入门(Input Gate)、遗忘门(Forget Gate)和输出门(Output Gate)来控制内部信息的流动。

门控机制可以理解为控制数据流通量的一种手段,类比于水阀门:当水阀门全部打开时,水流畅通无阻地通过;当水阀门全部关闭时,水流完全被隔断。在LSTM 中,阀门开和程度利用门控值向量𝒈表示,如下图所示,通过𝜎(𝒈)激活函数将门控制压缩到[0,1]之间区间,当𝜎(𝒈) = 0时,门控全部关闭,输出𝒐 = 0;当𝜎(𝒈) = 1时,门控全部打开,输出𝒐 = 𝒙。通过门控机制可以较好地控制数据的流量程度。

在这里插入图片描述
下面分别介绍三个门控的原理及作用

遗忘门

遗忘门作用于LSTM 状态向量𝒄上面用于控制上一个时间戳的记忆𝒄𝑡−1对当前时间戳的影响。遗忘门的控制变量𝒈𝑓由 𝒈𝑓 = 𝜎(𝑾𝑓[ h𝑡−1, 𝒙𝑡 ] + 𝒃𝑓 ) 产生,如图下图所示,其中𝑾𝑓和𝒃𝑓为遗忘门的参数张量,可由反向传播算法自动优化,𝜎为激活函数,一般使用Sigmoid 函数。当门控𝒈𝑓 = 1时,遗忘门全部打开,LSTM 接受上一个状态𝒄𝑡−1的所有信息;当门控𝒈𝑓 = 0时,遗忘门关闭,LSTM 直接忽略𝒄𝑡−1,输出为0的向量。这也是遗忘门的名字由来
经过遗忘门后,LSTM 的状态向量变为𝒈 f _f f𝒄 t − 1 _{t−1} t1

在这里插入图片描述

输入门

输入门用于控制LSTM 对输入的接收程度。首先通过对当前时间戳的输入𝒙𝑡和上一个
时间戳的输出 𝑡−1做非线性变换得到新的输入变量
c ^ = t a n h ( W c [ h t − 1 , x t ] + b c ) \hat{c} = tanh(W_c[h_{t-1},x_t]+b_c) c^=tanh(Wc[ht1,xt]+bc)
其中𝑾𝑐和𝒃𝑐为输入门的参数,需要通过反向传播算法自动优化,tanh 为激活函数,用于将
输入标准化到[−1,1]区间。𝒄 𝑡并不会全部刷新进入LSTM 的Memory,而是通过输入门控制
接受输入的量。输入门的控制变量同样来自于输入𝒙𝑡和输出 h 𝑡−1:
g i = σ ( W i [ h t − 1 , x t ] + b i ) g_i = \sigma(W_i[h_{t-1},x_t]+b_i) gi=σ(Wi[ht1,xt]+bi)
其中𝑾𝑖和𝒃𝑖为输入门的参数,需要通过反向传播算法自动优化,𝜎为激活函数,一般使用Sigmoid 函数。输入门控制变量𝒈𝑖决定了LSTM 对当前时间戳的新输入𝒄 𝑡的接受程度:当𝒈𝑖 = 0时,LSTM 不接受任何的新输入𝒄 𝑡;当𝒈𝑖 = 1时,LSTM 全部接受新输入𝒄 𝑡,如图所示。
经过输入门后,待写入Memory 的向量为𝒈𝑖 𝒄𝑡
在这里插入图片描述

刷新Memory

在遗忘门和输入门的控制下,LSTM 有选择地读取了上一个时间戳的记忆𝒄𝑡−1和当前
时间戳的新输入𝒄 𝑡,状态向量𝒄𝑡的刷新方式为:
在这里插入图片描述
得到的新状态向量𝒄𝑡即为当前时间戳的状态向量,如上图所示。

输出门

LSTM 的内部状态向量𝒄𝑡并不会直接用于输出,这一点和基础的RNN 不一样。基础的RNN 网络的状态向量 既用于记忆,又用于输出,所以基础的RNN 可以理解为状态向量𝒄和输出向量 是同一个对象。在LSTM 内部,状态向量并不会全部输出,而是在输出门的作用下有选择地输出。输出门的门控变量𝒈𝑜为:

在这里插入图片描述
其中𝑾𝑜和𝒃𝑜为输出门的参数,同样需要通过反向传播算法自动优化,𝜎为激活函数,一般使用Sigmoid 函数。当输出门𝒈𝑜 = 0时,输出关闭,LSTM 的内部记忆完全被隔断,无法用作输出,此时输出为0 的向量;当输出门𝒈𝑜 = 1时,输出完全打开,LSTM 的状态向量𝒄𝑡全部用于输出。LSTM 的输出由:
在这里插入图片描述
产生,即内存向量𝒄𝑡经过tanh激活函数后与输入门作用,得到LSTM 的输出。由于𝒈𝑜 ∈ [0,1],tanh(𝒄t) ∈ [−1,1],因此LSTM 的输出 𝑡 ∈ [−1,1]。

在这里插入图片描述

小结

LSTM 虽然状态向量和门控数量较多,计算流程相对复杂。但是由于每个门控功能清晰明确,每个状态的作用也比较好理解。这里将典型的门控行为列举出来,并解释其代码的LSTM 行为,如表所示。

输入门控遗忘门控LSTM行为
01只使用记忆
11综合输入和记忆
00清零记忆
10输入覆盖记忆

LSTM实战

在上一篇的博客中我们使用了SimpleRNN层去完成了一个简单的情感分类问题,但是在实际的工程当中很少有人会直接使用SimpleRNN而是多去使用LSTM或者GRU. 我们只需要将上篇博客的内容稍作修改便可以转化为LSTM层的使用

LSTMCell

和SimpleRNN一样,Tensorflow提供了两个网络层的表达方式,一个是LSTMCell一个是LSTM

self.state0 = [tf.zeros([batchsz, units])]
self.state1 = [tf.zeros([batchsz, units])]
==>
self.state0 = [tf.zeros([batchsz, units]),tf.zeros([batchsz, units])]
self.state1 = [tf.zeros([batchsz, units]),tf.zeros([batchsz, units])]

self.rnn_cell0 = layers.SimpleRNNCell(units, dropout=0.5)
self.rnn_cell1 = layers.SimpleRNNCell(units, dropout=0.5)
==>
self.rnn_cell0 = layers.LSTMCell(units,dropout=0.5)
self.rnn_cell1 = layers.LSTMCell(units,dropout=0.5)

只要改这四行代码即可

LSTM层

如果是LSTM层就更简单了

self.rnn = keras.Sequential([
    layers.LSTM(units,dropout=0.5,return_sequences=True,unroll=True),
    layers.LSTM(units,dropout=0.5,unroll=True)
])
构建时候把SimpleRNN改成LSTM就ok了

参考书籍: TensorFlow 深度学习 — 龙龙老师

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
深度学习是一种机器学习的方法论,通过构建多层神经网络,可以从大量数据中学习并理解复杂的模式和关系。RNN(循环神经网络)和LSTM(长短期记忆网络)是深度学习中常用的一类神经网络结构,特别适用于处理序列数据。 唐诗是中国文学的瑰宝,具有深厚的文化底蕴和艺术价值。利用深度学习中的RNNLSTM网络原理,我们可以构建一个模型,通过学习唐诗的序列数据,实现自动生成新的唐诗。 首先,我们需要收集大量的唐诗作品作为训练数据。这些数据将被用作模型的输入,通过多层的RNNLSTM网络逐字逐词地学习唐诗的结构和语法规律。神经网络将学习到不同的词汇和诗句的概率分布,并根据概率分布生成新的唐诗。 在训练过程中,我们可以使用反向传播算法来调整神经网络的参数,以最大限度地提高生成唐诗的质量。可以通过设置合适的超参数,例如学习率和迭代次数,来优化模型的性能。 通过进一步优化模型,我们可以使生成的唐诗更具有创新性和独特性。例如,可以引入一些文学规则和约束,以保证生成的唐诗符合一定的文学规范。此外,还可以加入一些外部的条件信息,如主题或情感,来指导生成唐诗的内容。 将这一深度学习实战项目制作成视频课程,有助于学习者理解和掌握深度学习中的RNNLSTM网络原理。通过实际的代码演示和案例讲解,学习者可以亲自动手实践,培养实战能力。同时,视频课程还可以提供一些调优技巧和经验分享,帮助学习者在实际应用中取得良好的效果。 这个项目不仅有助于学习者的技术提升,也为文学创作提供了一种新的方式。通过深度学习生成的唐诗可以为文学创作者提供灵感和思路,也可以作为艺术创作的一种实验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值