循环神经网络简解——RNNLSTM
Posted 无乎648
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环神经网络简解——RNNLSTM相关的知识,希望对你有一定的参考价值。
循环神经网络
1、序列数据
序列数据是常见的数据类型,前后数据通常具有关联性
例如句子“cats average 15 hours of sleep a day”
2、语言模型
语言模型是自然语言处理(NLP, Natural Language Processing)重要技术
NLP中常把文本看为离散时间序列,一段长度为T的文本的词依次为w1, W 2, … , WT其中 wt(1 ≤ t ≤T)是时间步(Time step) t的输出或标签
语言模型将会计算该序列概率P(W 1 , w2 ,… , WT)
“Cats average 15 hours of sleep a da y”
八个单词==>T=8
列如: chu fang li de shi you yong wan le
p(厨,房,里,的,食,油,用,完,了)>p(厨,房,里,的,石,油,用,完,了)
语言模型计算序列概率:
P(w1 , w2, . . . , wT)=1P(wt | w1, … . , wt_1 ).
P(我,在,听,课)=P(我)*P(在│我)*P(听│我,在)*P(听│我,在,听)
统计语料库(Corpus)中的词频,得到以上概率,最终得到P(我,在,听,课)
缺点:时间步t的词需要考虑t-1步的词,其计算量随t呈指数增长
3、循环神经网络RNN
RNN是针对序列数据而生的神经网络结构,核心在于循环使用网络层参数,避免时间步增大带来的参数激增,并引入隐藏状态(Hidden State)用于记录历史信息,有效的处理数据的前后关联性。
隐藏状态(Hidden state)用于记录历史信息,有效处理数据的前后关联性激活函数采用Tanh,将输出值域限制在[-1,1],防止数值呈指数级变化
参数矩阵
[
W
x
h
、
W
h
h
、
W
h
q
]
[W_xh、W_hh、W_hq]
[Wxh、Whh、Whq]
RNN 是通过时间返向传播(backpropagation through time)
反向传播推导过程:
∂
L
∂
W
q
h
=
∑
t
=
1
T
p
r
o
d
(
∂
L
∂
o
t
,
∂
o
t
∂
W
q
h
)
=
∑
t
=
1
T
∂
L
∂
o
t
h
t
T
\\frac\\partial L \\partial W_qh=\\sum_t=1^Tprod(\\frac\\partial L\\partial o_t,\\frac\\partial o_t\\partial W_qh)=\\sum_t=1^T\\frac\\partial L\\partial o_t h_t^T
∂Wqh∂L=t=1∑Tprod(∂ot∂L,∂Wqh∂ot)=t=1∑T∂ot∂LhtT
∂
L
∂
h
T
=
p
r
o
d
(
∂
L
∂
o
T
,
∂
o
T
∂
h
T
)
=
W
q
h
T
∂
L
∂
o
t
\\frac\\partial L \\partial h_T=prod(\\frac\\partial L\\partial o_T,\\frac\\partial o_T\\partial h_T)=W_qh^T\\frac\\partial L\\partial o_t
∂hT∂L=prod(∂oT∂L,∂hT∂oT)=WqhT∂ot∂L
∂
L
∂
h
t
=
p
r
o
d
(
∂
L
∂
o
t
+
1
,
∂
h
t
+
1
∂
h
t
)
+
p
r
o
d
(
∂
L
∂
o
t
,
∂
o
t
∂
h
t
)
=
W
h
h
T
∂
L
∂
h
t
+
1
+
W
q
h
T
∂
L
∂
o
t
\\frac\\partial L \\partial h_t=prod(\\frac\\partial L\\partial o_t+1,\\frac\\partial h_t+1\\partial h_t)+prod(\\frac\\partial L\\partial o_t,\\frac\\partial o_t\\partial h_t)=W_hh^T\\frac\\partial L\\partial h_t+1+W_qh^T\\frac\\partial L\\partial o_t
∂ht∂L=prod(∂ot+1∂L,∂ht∂ht+1)+prod(∂ot∂L,∂ht∂ot)=WhhT∂ht+1∂L+WqhT∂ot∂L
∂
L
∂
h
t
=
∑
i
=
t
T
(
W
h
h
T
)
T
−
i
W
q
h
T
∂
L
∂
o
T
+
t
−
i
\\frac\\partial L \\partial h_t=\\sum_i=t^T(W_hh^T)^T-iW_qh^T\\frac\\partial L\\partial o_T+t-i
∂ht∂L=i=t∑T(WhhT)T−iWqhT∂oT+t−i∂L
∂
L
∂
W
h
x
=
p
r
o
d
(
∂
L
∂
h
t
,
∂
h
t
∂
W
h
x
)
=
∑
t
=
1
T
∂
L
∂
h
t
x
t
T
\\frac\\partial L \\partial W_hx=prod(\\frac\\partial L\\partial h_t,\\frac\\partial h_t\\partial W_hx)=\\sum_t=1^T\\frac\\partial L\\partial h_t x_t^T
∂Whx∂L=prod(∂ht学习笔记TF017:自然语言处理RNNLSTM