ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LSTM模型

2021-12-08 21:02:05  阅读:291  来源: 互联网

标签:模型 传输 得到 LSTM 遗忘 向量 Ct


LSTM比RNN复杂很多,RNN只有一个参数矩阵A,LSTM有4个(遗忘门,输入门,更新值,输出门)

 

LSTM有一个非常重要的传输带Ct,过去的信息通过这个传输带送给下一时刻,不会发生太大变化,并且通过这个传输带避免梯度消失的问题

LSTM有很多门让信息有选择的通过

遗忘门:

 

 

将a向量待入sigmod函数得到相对应的f值,然后将这个f值与c传输带相乘得到output,当的值为0时,output也会相应的等于0,那么该条信息就不通过,当值为1时,output输出c本身,该条信息通过

 

 h(t-1) 与xt做点积得到更高的向量,然后计算Wf与这个向量的乘积得到新的向量,再将这个新向量带入sigmod函数得到ft,且ft在0~1之间,Wf需要通过反向传播在训练数据里传播

 

输入门:

it的计算依赖于上一时刻的状态向量h(t-1)和新的时刻输入Xt,与遗忘门类似,h(t-1) 与xt做点积得到更高的向量,然后计算Wi与这个向量的乘积得到新的向量,再将这个新向量带入sigmod函数得到it,且it在0~1之间,输入门有自己的参数矩阵记作Wi,需要在训练数据中学习,

 

 计算每次更新的值:

h(t-1) 与xt做点积得到更高的向量,然后计算Wc与这个向量的乘积得到新的向量,再将这个新向量带入tanh函数得到it,且Ct在-1~1之间,它有自己的参数矩阵记作Wc

 

计算出遗忘门ft ,输入门it, 更新值Ct, 以及传输带旧值C(t-1), 就可以更新现在的传输带值Ct

ft 和 C(t-1) 是维度相同的向量,二者进行点积,遗忘门ft可以选择性的遗忘C(t-1)中的元素(那些output=0的信息),it 和 Ct点积更新新的值在传输带上,它们的和记作Ct,这样就完成了对传输带的一轮更新

用遗忘门删除了传送带上的某些信息,同时再加入新的信息,得到新的传输带的值Ct 

 

输出门

更新完Ct,就到了最后一步,状态向量ht的输出

首先计算输出门Ot,与之前一样,h(t-1) 与xt做点积得到更高维的向量,然后计算Wo与这个向量的乘积得到新的向量,再将这个新向量带入sigmod函数得到Ot,且Ot在0~1之间,输入门有自己的参数矩阵记作Wo,需要在训练数据中学习

 

 对Ct元素的每一个向量做双曲正切,带入tanh()函数中得到的新向量与Ot做点积,得到ht

ht有两份copies,一份传给下一时刻的状态向量ht,一份作为LSTM的输出

 

LSTM参数

LSTM共有4个参数矩阵,所以×4

 

 用Keras实现LSTM

from keras.models import Sequential
from keras.layers import LSTM, Embedding, Dense,Flatten
vocabulary = 10000   #一共有10000个词
embedding_dim = 32  #词向量X的维度
word_num = 500       #句子的长度,超过500会截断,不够的通过zero_padding补零
state_dim = 32       #状态向量h的维度

model = Sequential()  #建立一个Sequential模型,往里加层
model.add(Embedding(vocabulary, embedding_dim, input_length=word_num)) #首先第一层word embedding
model.add(LSTM(state_dim, return_sequences=False))   #然后是SimpleRNN layer,return_sequences=False只输入最后一个状态ht,其余不输出
model.add(Dense(1,activation='sigmoid') ) #全连接层,输出一个0/1的数
model.summary()

 

 由于我们只输出最后一个状态向量,所以是32维

 

 LSTM与SimpleRNN对比:

二者主要的区别是多了一条传输带,让过去的信息可以很容易的传到下一时刻,这样就有了更长的记忆

标签:模型,传输,得到,LSTM,遗忘,向量,Ct
来源: https://blog.csdn.net/KK_1657654189/article/details/121798248

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有