LSTM的核心思想就是细胞状态的改变
分为四步:
第一步:我们决定从细胞中丢弃什么信息,即新的主语来了,那么之前的主语就要被丢弃
这里的f_t是一个[0,1]之间的数值,0表示全部忘记,1代表全部保留
第二步:既然已经知道什么值需要忘记了,那么就要知道什么样的信息被存入到细胞信息中,这个部分分为两小步:1.和忘记什么信息一样,我们需要知道什么信息需要更新 (是个概率值)2.通过tanch层我们确定一个新值的候选量(就是某个主语)。通过tanch()这个函数,我们知道那个部分需要更新。从下图,i_t和f_t都是一个[0,1]之间的数值,~C_t 表示需要更新的新值,大概就可以认为是~C_t =tanch(W*(h_t-1+x_t)) 如新主语
第三步:这一步我认为是最重要的一步了,第一步知道需要丢弃什么,第二步知道需要更新什么,则第三步就是实施第一步第二步:更新细胞状态
如上图,首先分析f_tC_t-1(前一半)的意义: f_t是一个一丢弃信息概率,C_t-1表示上一时刻传来的所有信息,那么这两个值相乘,就是得到(上个细胞状态-需要遗忘的信息),脑补一下是什么状态;然后分析后面一半(i_tC_t)式子的意义:i_t表示的是需要更新信息的概率,~C_t表示新的主语的值,这两个相乘,整体表示需要更新的主语,则这整个式子就是表示:原来的带有旧主语的细胞,被改变或者更新为了带有新的主语,旧的主语被移除的细胞
第四步:既然新的细胞已经产生,我们总不能浆细胞的所有新全部输出吧,我们要选择性的将 细胞中的 信息输出,将信息输出,我们需要更新状态之后的细胞:
o_t表示的是将什么信息输出的概率,大小在[0,1],表示最最最最后需要输出的东西,细胞状态通过 tanh 进行处理(得到一个在 -1 到 1 之间的值)并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。例如,可能输出是否代词是单数还是负数,这样如果是动词的话,我们也知道动词需要进行的词形变化。
总结:LSTM 看也看了很长时间,这个东西需要静下心来,慢慢的咀嚼,慢慢的理解,实在不行,多看几遍,看第二遍会比第一遍更加清晰,囫囵吞枣看在多都是模模糊糊的