3_Long Short Term Memory (LSTM)

本文介绍了LSTM(长短期记忆)网络的核心概念及其如何解决传统RNN中的梯度消失问题。详细探讨了遗忘门、输入门、新值及输出门的工作机制,并给出了一个基于IMDB影评的情感分析实例。

一、LSTM核心思想

  • LSTM是一种RNN模型
  • LSTM是对简单循环神经网络的改进
  • LSTM可以避免梯度消失的问题,可以有更长的记忆

image-20210330213707527

1.1 Conveyor Belt(传输带)

  • 传输带记为向量Ct:过去的信息通过传输带直接送到下一个时刻,不会发生太大的变化。
  • LSTM就是靠传输带来避免梯度消失的问题

image-20210330214801982

二、LSTM分布指南

2.1 Forget Gate(遗忘门)

  • 遗忘门有两部门组成;
  • 输入的Sigmoid函数是一个向量a,Sigmoid对向量a中的每一个元素都进行压缩,压缩在(0,1)之间的范围
  • Elementwise multiplication:两个矩阵对应位置元素进行乘积

1

遗忘门(ft):一个向量,有选择的让传输带C的值通过。

  • 假如f的一个元素为0,,则C对应的元素就不能通过,对应的输出为0。
  • 假如f的一个元素为1,,则C对应的元素全部通过,对应的输出为C本身。

image-20210330222321423

参数矩阵Wf ,需要通过反向传播从训练数据中学习。

2.2 Input Gate(输入门)

输入门(it):更新传输带的值

参数矩阵Wi ,需要通过反向传播从训练数据中学习。

image-20210331150146737

2.3 New value(新的值)

New value:将值添加到传输带上

image-20210331150516184

image-20210331152558877

2.4 Output gate(输出门)

输出门(Ot):

image-20210331155021121

三、LSTM: Number of Parameters(参数数量)

有4个参数矩阵,每个参数矩阵

  • 行:shape(h)
  • 列:shape(h)+ shape(x)

LSTM参数数量(没有统计截距)

  • 4×shape(h)× [ shape(h)+ shape(x) ]

image-20210331160045982

四、LSTM for IMDB Review

image-20210331160242776

# 设置超参数
vocabulary = 10000   # 词典里面有10000个词汇
embedding_dim=32     # shape(x)=32,词向量x的维度为32
word_num = 500       # 每个电影评论有500个单词,如果超过500个单词,就会被截掉;如果不到500,就会补够。
state_dim =32        # shape(h) = 32,状态向量h的维度为32


# 开始搭建网络
model = Sequential()     # 建立Sequential()模型
# 往model里面加层,Embedding层,把词映射成向量
model.add(Embedding(vocabulary,embedding_dim,input_length=word_num))
# 需要指定状态向量h的维度,设置RNN层的return_sequences=False,表示RNN只输出最后一个状态向量h,把之前的状态向量舍去
model.add(LSTM(state_dim,return_sequences=False))
# 全连接层,输入RNN的最后一个状态h,输出0-1之间的数
model.add(Dense(1, activation="sigmoid"))

model.summary()

image-20210331160751270

五、Summary(总结)

  • LSTM uses a "conveyor belt"to get longer memory than SimpleRNN.

  • Each of the following blocks has a parameter matrix:

    • Forget gate(遗忘门)
    • Input gate (输入门)
    • New value (新的输入)
    • Output gate(输出门)
  • Number of parameters:
    4 x shape (h) x [ shape (h) +shape (x) ].

### 回答1: 长短期记忆网络(Long Short Term Memory Networks,LSTM)是一种用于处理序列数据的深度学习模型,用于解决传统循环神经网络(RNN)中的梯度消失问题。 Python是一种通用的编程语言,可以使用Python编写LSTM模型。在Python中,可以使用多个深度学习框架(如TensorFlow、Keras、PyTorch等)中的库来实现LSTM网络。 要实现LSTM模型,首先需要导入相应的深度学习库。然后,通过定义模型的参数、数据预处理、定义LSTM层、编译模型、训练模型和评估模型等步骤来构建LSTM网络。在编写代码时,可以使用Python的强大的科学计算库来处理数据和进行数学计算。 在使用Python实现LSTM时,可以根据具体的需求进行调整和优化模型的结构和参数。可以通过调整LSTM层的单元数、增加隐藏层、引入正则化和优化算法来提高模型性能。此外,还可以使用交叉验证和调参技术来选择最佳的超参数。 Python作为一种简洁易用的编程语言,提供了丰富的工具和库来支持LSTM模型的实现和应用。通过使用Python,我们可以轻松地构建和使用LSTM网络,从而应用于各种序列数据相关的任务,如语音识别、自然语言处理、时间序列预测等。 ### 回答2: 长短期记忆网络(Long Short Term Memory Networks,简称LSTM)是一种特殊的循环神经网络(Recurrent Neural Networks,简称RNN),用于处理和预测序列数据。 在Python中,我们可以使用一些开源的深度学习框架,如TensorFlow或PyTorch,来构建和训练LSTM网络。这些框架提供了一系列函数和类,可以轻松地构建、训练和测试LSTM模型。 首先,我们需要导入相应的库和模块。例如,在TensorFlow中,我们可以使用`import tensorflow as tf`来导入TensorFlow库。 接下来,我们可以定义LSTM模型的结构。LSTM网络由多个LSTM单元组成,每个单元有一个隐藏状态和一个记忆单元。我们可以使用框架提供的API来定义一个LSTM层,并设置相应的参数,如隐藏单元的数量和输入序列的长度。 然后,我们可以定义模型的其余部分,如输入层、输出层和损失函数。根据具体任务的要求,我们可以选择不同的网络结构和损失函数来满足需求。 接下来,我们可以进行模型的训练。我们需要提供训练数据和标签,并选择适当的优化算法来更新模型的参数。通过迭代训练过程,我们可以逐渐改善模型的性能。 最后,我们可以使用训练好的模型对新的数据进行预测。我们可以加载保存的模型,并使用它来预测新的序列数据。 总之,使用Python可以方便地构建和训练LSTM网络。通过选择适当的开源深度学习框架和实现合适的网络结构,我们可以有效地在序列数据任务中应用LSTM网络。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少云清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值