RNN计算公式
RNN结构图结构
图中变量名介绍
- a:上一个时间步的激活值(activate value)
- x :第x个输入(一句话中第x个字)
- y:第y个输出(预测值)
- Waa:与激活值进行计算的参数。其中第一个a是指当前参数是计算a(激活值)的,第二个a是指当前参数与激活值进行乘运算
- Wax:与输入进行计算的参数。其中第一个a是指当前参数是计算a(激活值)的,第二个x是指与输入值x进行运算
- Wya:与激活值运算的参数,得到的记过为y。其中第一个y是指当前参数是计算输入值y的,第二个a是指与激活值a进行运算
公式
step1:
a
<
0
>
=
0
?
a^{<0>}=\vec{0}
a<0>=0
step2:
a
<
1
>
=
g
1
(
W
a
a
a
<
0
>
+
W
a
x
x
<
1
>
+
b
a
)
y
<
1
>
=
g
2
(
W
y
a
a
<
1
>
+
b
y
)
a^{<1>}=g_1(W_{aa}a^{<0>}+W_{ax}x^{<1>}+b_a)\\ y^{<1>}=g_2(W_{ya}a^{<1>}+b_y)
a<1>=g1?(Waa?a<0>+Wax?x<1>+ba?)y<1>=g2?(Wya?a<1>+by?) …
step t:
a
<
t
>
=
g
t
(
W
a
a
a
<
t
?
1
>
+
W
a
x
x
<
t
>
+
b
a
)
y
<
t
>
=
g
t
(
W
y
a
a
<
t
>
+
b
y
)
a^{<t>}=g_t(W_{aa}a^{<t-1>}+W_{ax}x^{<t>}+b_a)\\ y^{<t>}=g_t(W_{ya}a^{<t>}+b_y)
a<t>=gt?(Waa?a<t?1>+Wax?x<t>+ba?)y<t>=gt?(Wya?a<t>+by?) 大白话:1. 整个过程就是先用上一层的得到的激活值和当前层的输入分别乘参数后相加,得到当前层的激活值a,最后用a乘参数得到当前层的输入y; 2. 参数共享:Waa在第一层计算了之后,后面的每个时间步是共享的,即公用一个参数矩阵。
优化
合并计算a是的两个参数矩阵:Waa和Wax,即可得到:
a
<
t
>
=
g
t
(
W
a
[
a
<
t
?
1
>
,
x
<
t
>
]
+
b
a
)
a^{<t>}=g_t(W_{a}[a^{<t-1>}, x^{<t>}]+b_a)\\
a<t>=gt?(Wa?[a<t?1>,x<t>]+ba?) 即就是:
[
a
<
t
?
1
>
,
x
<
t
>
]
=
[
W
a
a
W
a
x
]
[
a
<
t
?
1
>
x
<
t
>
]
[a^{<t-1>}, x^{<t>}] = \left[ \begin{matrix} W_{aa} &W_{ax}\end{matrix} \right]\left[ \begin{matrix} a^{<t-1>} \\x^{<t>}\end{matrix} \right]
[a<t?1>,x<t>]=[Waa??Wax??][a<t?1>x<t>?]
额外的知识点:采样
采样我的理解就是取值,如语言模型,在第一层,输入a0和x0之后,通过计算预测下一个词是词库里的每个次的概率,该过程就是采样。
|