RNN
RNN隐藏层神经元计算公式为 st=f(xtU+st−1W) 其中U、W是网络的参数,f表示激活函数。RNN隐层神经元的计算由t时刻输入xt,t-1时刻隐层神经元激活st-1作为输入。
LSTM结构图
LSTM核心思想
关键在于细胞状态,水平线在图上方贯穿运行,只有少量线性交互。LSTM拥有三个门,来保护和控制细胞状态。
对LSTM的理解
决定我们会从细胞状态中丢弃什么信息,该门会读取ht−1和xt,输出一个在0到1的数值给每个细胞状态ct−1中的数字。回到语言模型的例子来基于已经看到的预测下一个词,可能包含当前主语的性别,因此正确的带刺可以被选择出来。
忘记门层
sigmoid层成“输入层”决定什么值我们将要更新,然后一个tanh层创建一个新的候选值向量,˜Ct会被加入到状态。
输入门层
˜Ct=tanh(WC∙[ht−1,xt]+bC)
更新细胞状态
Ct=ft∗Ct−1+it∗˜Ct
将˜Ct−1更新为Ct,把旧状态与ft相乘,丢弃掉我们需要丢弃的信息,接着加上it和˜Ct这就是新的候选值。
输出层
先运行一个sigmoid层来确定细胞状态的那个部分将输出出去,再通过tanh进行处理(得到一个在-1到1之间的值)并将它和sigmoid门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。
LSTM前向传导
公式为
i=σ(xtUi+ST−1Wi)
f=σ(xtUf+st−1Wf)
o=σ(xtUo+st−1Wf)
g=tanh(xtUg+st−1Wg)
ct=ct−1∘f+g∘i
ct=tanh(ct)∘o
tanh(x)=ex−e−xex+e−x
to be continued…