在写LSTM之前呢,不得不吐槽甄姬三个技能都带水,还不明白什么意思吗,啊?这个傻鸟下水道英雄我看哪个蠢驴还在一楼拿。
二、LSTM
在(一)里面写的呢都是非常原始简单的RNN,每一个输入都会被memory记住。现在RNN的标准做法基本上已经是LSTM。LSTM是一个更加复杂的设计,最简单的设计是每一个neuron都有四个输入,而一般的NN只有一个输入。在(一)里面提到RNN的memory,其实这个memory是最单纯的,为什么这么说呢?因为我们随时都可以把值存到memory里面去,也可以随时呢把值从memory里面读出来。但现在比较常用的memory呢,称之为Long Short-term Memory。这种Long Short-term 的memory呢它的简写就是我们熟知的LSTM——长短期记忆。这种Long Short-term 的memory呢是比较复杂的,它有3个gate,当neural的某个output想要写到memory里面的时候呢,它必须先通过一个闸门——input gate。这个input gate它要被打开的时候,你才能够把值写到memory cell里面去;如果input gate被关起来的时候,其他neuron就没有办法把值写进去。那至于这个input gate是打开还是关闭,这个是要我们的neural network自己学。所以neural network它可以自己学说,什么时候要把input gate打开,什么时候要把input gate关闭。
相应地,输出的地方有一个叫做output gate的东西,那这个output gate会决定过说,其他的neuron可不可以从这个memory里面把值读出来。同样地,当output gate被关闭的时候,就没有办法把值给读出来,output gate被打开的时候才能够把值给读出来。跟input gate一样,output gate是打开还是关闭,network是可以自己学出来。
第三个gate呢叫做forget gate。 forget gate决定说什么时候memory cell呢要把过去记得的东西format掉,抑或是存在memory cell里面的值继续保留下来。那是format掉memory cell里面的值还是保留,这个呢同样是network自己学出来的。
所以整个LSTM呢有4个input,1个output。那这4个input是什么呢?这4个input是:①想要被存到memory cell里面的值(但是它不一定存的进行,这取决于说input gate要不要这个information过去)、②操控input gate打开还是关闭的讯号;③操控output gate的讯号;④以及操控forget gate的讯号。
那LSTM的更具体的结构长什么样呢?它就长下面这样。那我们假设呢,现在要被存到cell里面的input叫做
现在,我们假设在有这四个输入之前,cell里面已经存了一个值
假设我们现在有一整排的LSTM,假设这一整排的LSTM里面它们每一个的memory cell里面都预先存了一个scale,把所有的scale接起来,它们就变成一个vector,这里用
那我们现在知道,一个LSTM的输入分别是
在上图中,相加以后的结果,就是存在memory cell里面的值
那这个process就反复的进行下去,在下一个时间点 input
在LSTM中还会把蓝色部分的输出接到输入,形成更复杂的结构…
参考:李宏毅机器学习视频李宏毅2021/2022春机器学习课程
文章出处登录后可见!