LSTM记录贴
LSTM记录贴 得平常再做一些任务都会用到LSTM(长短时记忆网络)、GRU以及一些变形的RNN模型,虽然平时用的多,但近来看面经,发现有些问题都忘了,回过头看了又忘,所以准备好好的手推一遍并且记录下来; 先上图 其实如果推理过LSTM的话,基本上这图就没啥用,因为这图说实话画的略显复杂。在真的面试遇到手推LSTM,方法应该是从三个门出发点去反向画图。 先说主人公三个门,分别是遗忘门(f)、输入门(i)、输出门(o) 还有出场的人员包括上个时间步细胞状态(ct-1)、本时刻的输入(xt)、上一时间步的输入(ht-1)、临时细胞状态(c~) 以及lstm每个unit特有的输入框架,相比普通RNN多了一个c而已 那么可以开始推导了 首先要确定,每个lstm会有三个输入(ct-1、ht-1、xt),两个输出(ct、ht) 而ht-1与xt都是向量,在论文中xt与ht-1是直接横向拼接在一起的(可以有不同的结合方式,但是基本是绑定的),因为两个向量都是定长,所以在经过每个门的线性变换矩阵输出也是定长。 那么开始第一个门,决定我们会从细胞状态中丢弃什么信息,所以叫遗忘门,f= sigmoid([xt,ht-1]Wf+bf),输出的是一个概率,遗忘概率。那么遗忘的对象是谁?那必然是上个时刻输入的细胞状态ct-1 那么可以画出图 输入门(或者更新门)i = sigmoid([xt,ht-1]Wi