首页 > 其他分享 >LSTM入门学习——结合《LSTM模型》文章看

LSTM入门学习——结合《LSTM模型》文章看

时间:2023-06-01 14:35:19浏览次数:34  
标签:状态 入门 输出 模型 单元 计算 LSTM 输入

摘自:https://zybuluo.com/hanbingtao/note/581764

长短时记忆网络的思路比较简单。原始RNN的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。那么,假如我们再增加一个状态,即c,让它来保存长期的状态,那么问题不就解决了么?如下图所示:

LSTM入门学习——结合《LSTM模型》文章看_机器学习

新增加的状态c,称为单元状态(cell state)。我们把上图按照时间维度展开:

LSTM入门学习——结合《LSTM模型》文章看_机器学习_02

上图仅仅是一个示意图,我们可以看出,在t时刻,LSTM的输入有三个:当前时刻网络的输入值、上一时刻LSTM的输出值、以及上一时刻的单元状态;LSTM的输出有两个:当前时刻LSTM输出值、和当前时刻的单元状态。注意、、都是向量。

LSTM的关键,就是怎样控制长期状态c。在这里,LSTM的思路是使用三个控制开关。第一个开关,负责控制继续保存长期状态c;第二个开关,负责控制把即时状态输入到长期状态c;第三个开关,负责控制是否把长期状态c作为当前的LSTM的输出。三个开关的作用如下图所示:

LSTM入门学习——结合《LSTM模型》文章看_机器学习_03

接下来,我们要描述一下,输出h和单元状态c的具体计算方法。

 

长短时记忆网络的前向计算

下图显示了遗忘门的计算:

LSTM入门学习——结合《LSTM模型》文章看_机器学习_04

接下来看看输入门,下图表示了输入门的计算:

LSTM入门学习——结合《LSTM模型》文章看_机器学习_05

接下来,我们计算用于描述当前输入的单元状态,它是根据上一次的输出和本次输入来计算的,下图是计算:

LSTM入门学习——结合《LSTM模型》文章看_机器学习_06

现在,我们计算当前时刻的单元状态。它是由上一次的单元状态按元素乘以遗忘门,再用当前输入的单元状态按元素乘以输入门,再将两个积加和产生的,下图是计算:

LSTM入门学习——结合《LSTM模型》文章看_机器学习_07

这样,我们就把LSTM关于当前的记忆和长期的记忆组合在一起,形成了新的单元状态。由于遗忘门的控制,它可以保存很久很久之前的信息,由于输入门的控制,它又可以避免当前无关紧要的内容进入记忆。下面,我们要看看输出门,它控制了长期记忆对当前输出的影响。

下图表示输出门的计算:

LSTM入门学习——结合《LSTM模型》文章看_机器学习_08

LSTM最终的输出,是由输出门和单元状态共同确定的。

下图表示LSTM最终输出的计算:

LSTM入门学习——结合《LSTM模型》文章看_机器学习_09

式1到式6就是LSTM前向计算的全部公式。至此,我们就把LSTM前向计算讲完了。

标签:状态,入门,输出,模型,单元,计算,LSTM,输入
From: https://blog.51cto.com/u_11908275/6393745

相关文章

  • python spark 随机森林入门demo
    class pyspark.mllib.tree.RandomForest[source]Learningalgorithmforarandomforestmodelforclassificationorregression.Newinversion1.2.0.supportedFeatureSubsetStrategies =('auto','all','sqrt','log2',......
  • python spark 决策树 入门demo
    Refertothe DecisionTree and DecisionTreeModel formoredetailsontheAPI.frompyspark.mllib.treeimportDecisionTree,DecisionTreeModelfrompyspark.mllib.utilimportMLUtils#LoadandparsethedatafileintoanRDDofLabeledPoint.data=MLUtils.l......
  • Flask---框架入门
    一个最小的Flask应用看起来会是这样:fromflaskimportFlaskapp=Flask(__name__)@app.route('/')defhello_world():return'HelloWorld!'if__name__=='__main__':app.run()把它保存为 hello.py (或是类似的),然后用Python解释器来运行。确保你......
  • GBDT(MART) 迭代决策树入门教程 | 简介
    GBDT(MART)迭代决策树入门教程|简介 在网上看到一篇对从代码层面理解gbdt比较好的文章,转载记录一下:        GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结......
  • Unity转出FBX模型(Exporter插件)
    Unity转出FBX模型为了解决在Unity场景修改过导出的模型,以后给美工修改不了预制体的问题Unity版本要求:2021.3.6f1c1(包括但不限于此版本以上)下载插件场景中选中模型任意模型点击导出FBX导出模型设置路径......
  • 扩散模型 - 简介、DDPM
    扩散模型1扩散模型(DM)扩散模型(DiffusionModel)起源于非均衡热动力学(non-equilibriumthermodynamics),是一类基于概率似然(likelihood)的生成模型。当前对扩散模型的研究主要围绕三种主流的实现:去噪扩散概率模型(DenoisingDiffusionProbabilisticModels/DDPMs)基于分数的生成......
  • C++模板从入门到精通:初阶篇
    一、泛型编程1.1什么是泛型编程?泛型编程是一种编程风格,其中算法以尽可能抽象的方式编写,而不依赖于将在其上执行这些算法的数据形式1。泛型编程可以提高代码的重用性、可维护性和类型安全性。泛型编程的基础是模板,模板是创建泛型类或函数的蓝图或公式。平常写的函数与泛型编程的模板......
  • Django模型字段default='' 含义
    是Django模型字段定义中一个参数,用于指定模型字段的默认值. 详细解释:在创建新的模型实例时,若没有为phone字段提供具体的值,那么该字段将被默认设置为空字符串. 例:my_object=MyModel.objects.create(name='John'),中没有为phone字段提供具体值,所以phone字段将被设......
  • TCP/IP 协议体系结构模型
    TCP/IP协议体系结构模型OSI模型通过一系列协议描述了理想的网络通信。TCP/IP并不直接对应于此模型。TCP/IP或者将几个OSI层组合为一个层,或者根本不使用某些层。下表显示了OracleSolaris:实现的TCP/IP层。该表列出了从最顶层(应用层)到最底层(物理网络层)的各层。表 1–2TC......
  • Go后端入门学习路径
    1.Go语言基础入门看这个:《HeadFirstGo》、《Go语言编程》以及图片额外书籍任选一本都可以,跟着书籍多敲敲代码,go语言相对C++,java来说,简单很多学习基础网站资源go语言中文网:https://studygolang.com/articlesGoByExample中文版:https://gobyexample-cn.github.io,......