Processing math: 100%

LSTM入门学习

RNN

RNN隐藏层神经元计算公式为 st=f(xtU+st1W) 其中U、W是网络的参数,f表示激活函数。RNN隐层神经元的计算由t时刻输入xt,t-1时刻隐层神经元激活st-1作为输入。

LSTM结构图

lstm

LSTM核心思想

关键在于细胞状态,水平线在图上方贯穿运行,只有少量线性交互。LSTM拥有三个门,来保护和控制细胞状态。

对LSTM的理解

决定我们会从细胞状态中丢弃什么信息,该门会读取ht1xt,输出一个在0到1的数值给每个细胞状态ct1中的数字。回到语言模型的例子来基于已经看到的预测下一个词,可能包含当前主语的性别,因此正确的带刺可以被选择出来。

忘记门层

lstm
ft=σ(Wf[ht1,xt]+bf)

sigmoid层成“输入层”决定什么值我们将要更新,然后一个tanh层创建一个新的候选值向量,˜Ct会被加入到状态。

输入门层

lstm
it=σ(Wi[ht1,xt]+bi)

˜Ct=tanh(WC[ht1,xt]+bC)

更新细胞状态

lstm
Ct=ftCt1+it˜Ct
˜Ct1更新为Ct,把旧状态与ft相乘,丢弃掉我们需要丢弃的信息,接着加上it˜Ct这就是新的候选值。

输出层

lstm
先运行一个sigmoid层来确定细胞状态的那个部分将输出出去,再通过tanh进行处理(得到一个在-1到1之间的值)并将它和sigmoid门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。

LSTM前向传导

公式为

i=σ(xtUi+ST1Wi)

f=σ(xtUf+st1Wf)

o=σ(xtUo+st1Wf)

g=tanh(xtUg+st1Wg)

ct=ct1f+gi

ct=tanh(ct)o

tanh(x)=exexex+ex

to be continued…