LSTM

本文深入浅出地介绍了长短期记忆网络(LSTM)的工作原理及其如何解决传统递归神经网络(RNN)面临的长期依赖问题。文章通过实例展示了LSTM如何通过其独特的门控机制保留或丢弃信息,同时探讨了LSTM的不同变体及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LSTM

1.背景

RNN很好用啊,但是有问题啊,就是当时间间隔比较远的话就不好用了(原文的话asthe gap grows, RNNs become unable to learn to connect the information).

没懂没关系,举个栗子:

比如“the clouds are in the sky,”要猜最后一个单词。基本是根据clouds猜出的sky。 两个单词离得很近,差不多就是下面的意思。


但是“I grew up in France… Ispeak fluent French.”要猜最后一个单词,那就要跑好之前找到France。就成了下面这样

 

RNN处理这中长长的问题并不好,所以就轮到LSTM出场啦,它处理这个问题是棒棒哒。它的全称可是叫Long Short Term Memory networks。

 

2.LSTM

下面正式讲讲LSTM是个啥东东

先看看普通的RNN,是长下面这个样

 

STLM和RNN整个链子的长相差不多,就是把重复模型的部分换了。原来RNN只有一个神经网络,现在STLM有四个,而且这四个连起来的方式很奇怪,就是下面这个样子


图里面的符号都是这些意思:


看不懂没关系下面会细细的将这个图。

 

3. LSTM之下的核心思想

LSTM的核心叫cell state,也就是上面那条横着的线。它就像是一条传送带,横跨了整个LSTM链,只是中间有些小支路和它相互作用而已。如果只有它而没有其他东西的话看起来是不是很容易?


LSTM然后就要向这条传送带上加减东西了。加减东西都要由一个叫做gate的东东严格控制。

Gate是一种加信息的方式。它由sigmoid神经网络层和一个点积构成。(They are composed out of a sigmoid neural net layer and apointwise multiplication operation.)如下所示:

sigmoid层的输出的数是0-1之间的,它表示了传送带上东西能通过的量。如果是0的话就说明啥也不让过,如果是1就是全都过去。

LSTM有三个这样的gate,来控制cell state。

 

4. 一步一步了解LSTM

第一步,我们要确定想要什么信息通过cellstate。这个是由一个sigmoid层决定的,它叫做“forgetgate layer”。它根据 \(h_{t-1}\) \(x_t\)\(C_{t-1}\中的每一个值产生一个0~1的值。1就表示,这个值我都要啦,0就这个值扔掉扔掉。

然后我们再回过头看我们前面说的猜下一个单词的栗子。Cell state中可能有当前对象相关的信息,所以要留下。但是,当我们进入了一个新的主题,原来关于旧主题的东西就希望它忘记。

 

接下来就要决定新信息中我们要留下什么在cellstate中。这就包括了两部分。第一部分是个sigmoid层,叫做“inputgate layer”,它决定了我们要更新哪些值。接下来,一个tanh层产生一个新候选值的vector,这个vector的值是准备加到state中的。最后呢,我们把这两部分合起来。

再拿前面的栗子,我们想要描述新主题的一些新的特征加进来,来代替前面被遗忘的那些部分。

 

现在我们要准备把旧的cellstate \(C_{t-1}\ 更新成(C_t\)了。前面只是想想,现在终于要下手啦。

我们把旧的state乘\(f_t\),用来忘掉我希望忘去的西。然后加上\(i_t*\tilde{C}_t\)是新的候选值,表示了我想加入的新

 

 

最后我们要决定输出的值。输出应该基于我们的cell state,但是要稍微处理下。首先我们用一个sigmoid层来决定我们想要输出cellstate的哪一部分。然后我们把cell stat 通过一个tanh(这是为了把值弄在-1~1之间),然后再把这个值和sigmoid的输出乘一下,这样我们就输出了我们想要它输出的部分。

对于上面那个文字栗子, 它可能想要的是和动词相关的信息,来猜测下面有可能出现的单词。例如,它可能想输出这个物体是单数还是复数,然后确定下面一个动词的形式。

 

 

5. LSTM的变体

大家用的时候基本都对上面的结构稍微改了点,我们看看都有啥。

一种流行的LSTM变体是Gers & Schmidhuber (2000)提出来的,它加了“peephole connections.”表明,我们让gate也可以看到cell state。

另一种是将遗忘和输入门合起来,思想基本就是我想忘了旧的啥,就学习新的啥。就是把旧的遗忘的部分用新的补上。就是忘啥学啥,学啥忘啥。

 

一个更加动态的LSTM版本是GatedRecurrent Unit, or GRU, introduced by Cho, et al. (2014).它把遗忘和输入门结合到一个 “update gate.”。它融合了cell state和hidden state,有一些其他的改果就是比准的LSTM简单,并且更受迎。

 

还有些其他的,比如Depth Gated RNNs by Yao, et al. (2015)还有更复杂的Clockwork RNNs by Koutnik, et al. (2014).

这么多哪个比较好?这些改变的确改善了性能吗? Greff, et al. (2015) 把流行的几种做了一个很好的比较,发现它们差不多=。=Jozefowicz, et al. (2015)比较了好多RNN结构,发现它们在一些特定的条件下比LSTM要好=。=

 

然后。。。

想要变的更厉害吗?那就用RNN去处理更大的数据集吧(The idea is to let every step of an RNN pick information tolook at from some larger collection of information.例如,用RNN对一个图片进行文字说明。 Xu, et al. (2015)  或者一些其他的Kalchbrenner, et al. (2015)Gregor, et al. (2015)Chung, et al. (2015), or Bayer & Osendorfer (2015) 都很有趣

 

最后

原文链接http://colah.github.io/posts/2015-08-Understanding-LSTMs/

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值