我是靠谱客的博主 干净黑猫,最近开发中收集的这篇文章主要介绍LSTM原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

Tip:
       该博客里的内容是博主学习的一些心路历程,期间也会查阅一些其他博客和文献,还有一些自己的理解,可能会存在一些理解不正确的地方。如果阅读这篇博客请带着学习和质疑两种心态。如有问题,欢迎指出。

LSTM理论

1.LSTM介绍

       LSTM(Long Short-Term Memory)是一种 RNN 的特殊类型,它可以学习长期依赖信息。通过引入了自循环,以产生梯度长时间持续流动的路径,解决RNN梯度消失的问题。它在RNN的基础上添加了输入门、遗忘门、输出门和细胞状态。

2.LSTM结构图

       通过RNN和LSTM的结构图对比,可以直观地感受到LSTM在结构上的变化。
这里写图片描述

RNN结构图

这里写图片描述
LSTM结构图

       下面看一下LSTM每个门控的结构图和公式,这样可能会容易理解一些。

①细胞状态:
       我理解细胞状态应该代表的就是前些时刻的信息。它直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。
这里写图片描述

细胞状态图

②遗忘门:
       通过字面意思就可以感觉到,遗忘门就是决定会从细胞状态中丢弃什么信息。遗忘门的输入是 ht1 h t − 1 xt x t ,输出一个在 0 到 1 之间的数值给每个在细胞状态 Ct1 C t − 1 中的数字。1 表示“完全保留”,0 表示“完全舍弃”。
这里写图片描述

遗忘门结构图和公式

②输入:
       输入门决定什么样的新信息可以存入到细胞状态中,它由2个部分组成,一部分使用sigmoid激活函数,它是输入门,最后输出为 it i t 。另一部分使用了tanh激活函数输出为 C~t C ~ t
这里写图片描述

输入结构图和公式

③细胞状态更新:
       在确定了丢失哪些信息和更新哪些信息之后,就可以对细胞状态进行更新了。首先把旧状态 Ct1 C t − 1 和遗忘门 ft f t 相乘,丢弃一些需要丢弃的信息。然后把 C~t C ~ t it i t 相乘,选出新的信息。最后把这2个结果相加就是新的细胞状态。
这里写图片描述

细胞状态更新图和公式

④输出:
        更新完细胞状态之后,我们就可以求输出了。这里输出也包括2部分:一部分使用sigmoid激活函数,它是输出门,最后输出为 ot o t 。另一部分使用了tanh激活函数激活刚才求得的细胞状态 Ct C t 。最后将它们相乘,就是隐藏层的输出 ht h t 了。
这里写图片描述

输出结构图和公式

3.疑点扩充

①RNN为什么不用Relu解决长期依赖问题:
        这个问题我也困惑了很久,直到我看到知乎上的一个答案知乎上的一个答案,感觉可以做一个解释。
②LSTM为什么可以解决长期依赖问题:
        LSTM与RNN最大的不同就是LSTM在结构上的改变,LSTM增加了门控结构。LSTM通过门控单元从根本上改变了循环网络的前向传播方式,从叠乘变成了叠加(参考上述公式),这样就解决了RNN叠乘所导致的长期依赖问题。

最后

以上就是干净黑猫为你收集整理的LSTM原理的全部内容,希望文章能够帮你解决LSTM原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部