LSTM_Captioning
又有时间写CS231n作业啦,嘿嘿嘿舒服!被网课枯燥的作业轰炸过后终于又有时间写点有意思的作业,今天带来的是Assignment3的LSTM。
Step Forward and Backward
我们首先来看一下LSTM的结构,其实LSTM是一个很好理解的东西。
最上面一条通道表示的是细胞状态,我们可以把它理解为我们大脑中存储的长记忆,可以看到当通过当前这个LSTM模块的时候,我们的大脑长记忆进行了一些操作,首先是和一个称为遗忘门的输出ft相乘,这是告诉我们需要保留之前的哪些记忆,同时忘记一些之前的记忆;然后我们的记忆与之后的一个输出进行了相加的操作,这是告诉我们通过这个模块后需要新记住哪些记忆。而这个新加上来的记忆是通过输入门it与当前处理后的输入相乘的结果,也就是说这里的输入门也起到了一个筛选的作用,它控制哪些新记忆需要被加入我们大脑的长记忆。通过这个LSTM模块之后输出的短记忆信息则由输出门ot决定,输出门会和我们大脑里长记忆的激活结果进行相乘,产生当前模块的输出ht ,即告诉我们当前要产生哪些短记忆。
下面是相应的公式:
输入门:
i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) i_t=σ(W_i⋅[h_{t-1},x_t]+b_i) it=σ(Wi⋅[ht−1,xt]+bi)
遗忘门:
f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_t=σ(W_f⋅[h_{t-1},x_t]+b_f) ft=σ(Wf⋅[ht−1,xt]+bf)
输出门:
o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) o_t=σ(W_o⋅[h_{t-1},x_t]+b_o) ot=σ(W