循环序列模型
1 - 序列模型数学符号
给定这样的输入数据 x x x,假如想要一个序列模型输出 y y y。
- x ⟨ t ⟩ x^{\langle t \rangle} x⟨t⟩, y ⟨ t ⟩ y^{\langle t \rangle} y⟨t⟩:用 t t t来索引序列中的位置
- T x T_{x} Tx:输入序列的长度
- T y T_{y} Ty:输出序列的长度。 T x T_{x} Tx和 T y T_{y} Ty可以有不同的值。
- x ( i ) ⟨ t ⟩ x^{\left(i \right)\langle t \rangle } x(i)⟨t⟩:第 i i i个训练样本的序列中的第 t t t个元素
- T x ( i ) T_{x}^{(i)} Tx(i):第 i i i个训练样本的输入序列长度。
- y ( i ) ⟨ t ⟩ y^{\left( i \right) \langle t \rangle} y(i)⟨t⟩:第 i i i个训练样本的序列中的第 t t t个元素,
- T y ( i ) T_{y}^{(i)} Ty(i):第 i i i个训练样本的输出序列的长度。
符号 | 含义 | 符号 | 含义 |
---|---|---|---|
x ⟨ t ⟩ x^{\langle t \rangle} x⟨t⟩ | 用 t t t来索引序列中的位置 | y ⟨ t ⟩ y^{\langle t \rangle} y⟨t⟩ | 用 t t t来索引序列中的位置 |
T x T_{x} Tx | 输入序列的长度 | T y T_{y} Ty | 输出序列的长度 |
x ( i ) ⟨ t ⟩ x^{\left(i \right)\langle t \rangle } x(i)⟨t⟩ | 第 i i i个训练样本序列中第 t t t个元素 | y ( i ) ⟨ t ⟩ y^{\left( i \right) \langle t \rangle} y(i)⟨t⟩ | 第 i i i个训练样本序列中第 t t t个元素 |
T x ( i ) T_{x}^{(i)} Tx(i) | 第 i i i个训练样本的输入序列长度 | T y ( i ) T_{y}^{(i)} Ty(i) | 第 i i i个训练样本的输出序列的长度 |
2 - 循环神经网络模型(Recurrent Neural Network, RNN)
2.1 - 图形表示
2.2 - 符号表示
在 t t t时刻,
(1) a ⟨ t ⟩ = g 1 ( W a a a ⟨ t − 1 ⟩ + W a x x ⟨ t ⟩ + b a ) a^{\langle t \rangle} = g_{1}(W_{aa}a^{\langle t - 1 \rangle} + W_{ax}x^{\langle t \rangle} + b_{a})\tag{1} a⟨t⟩=g1(Waaa⟨t−1⟩+Waxx⟨t⟩+ba)(1)
(2) y ^ ⟨ t ⟩ = g 2 ( W y a a ⟨ t ⟩ + b y ) \hat y^{\langle t \rangle} = g_{2}(W_{{ya}}a^{\langle t \rangle} + b_{y})\tag{2} y^⟨t⟩=g2(Wyaa⟨t⟩+by)(2)
矩阵下标: W ax W_{\text{ax}} Wax,第二个下标 x _x x 意味着 W ax W_{\text{ax}} Wax要乘以某个 x x x 类型的量,然后第一个下标 a _a a 表示它是用来计算某个 a a a 类型的变量。同样的, W ya W_{\text{ya}} Wya乘上了某个 a a a类型的量,用来计算出某个 y ^ \hat {y} y^ 类型的量。
简化符号:
(3)
a
⟨
t
⟩
=
g
(
W
a
[
a
⟨
t
−
1
⟩
,
x
]
+
b
a
)
a^{\langle t \rangle} =g(W_{a}\left\lbrack a^{\langle t-1 \rangle},x^{} \right\rbrack +b_{a})\tag{3}
a⟨t⟩=g(Wa[a⟨t−1⟩,x]+ba)(3)
(4)
y
^
⟨
t
⟩
=
g
(
W
y
a
⟨
t
⟩
+
b
y
)
\hat y^{\langle t \rangle} = g(W_{y}a^{\langle t \rangle} +b_{y})\tag{4}
y^⟨t⟩=g(Wya⟨t⟩+by)(4)
- [ W a a ⋮ W a x ] = W a [ {{W}{aa}}\vdots {{W}{ax}}]=W_{a} [Waa⋮Wax]=Wa,即 W a W_{a} Wa是将矩阵 W a a W_{aa} Waa和矩阵 W a x W_{{ax}} Wax水平并列放置。
- [ a ⟨ t − 1 ⟩ , x ⟨ t ⟩ ] \left\lbrack a^{\langle t - 1 \rangle},x^{\langle t \rangle}\right\rbrack [a⟨t−1⟩,x⟨t⟩] 表示将这两个向量堆叠在一起。
- W y W_{y} Wy表明它是计算 y y y类型的量的权重矩阵,而 W a W_{a} Wa和 b a b_{a} ba表示它们用来计算 a a a类型或激活值。
2.3 - 激活函数
- 循环神经网络用的激活函数经常是 tanh,不过有时候也会用 ReLU,但是 tanh 是更通常的选择。
2.4 - 损失函数
一个元素损失函数
(5) L ( y ^ , y ) = − y log y ^ − ( 1 − y ^ ) l o g ( 1 − y ^ ) L^{}( \hat y^{},y^{}) = - y^{}\log\hat y^{}-( 1-\hat y^{})log(1-\hat y^{})\tag{5} L(y^,y)=−ylogy^−(1−y^)log(1−y^)(5)
标准逻辑回归损失函数,也叫交叉熵损失函数(Cross Entropy Loss)
整个序列的损失函数,将 L L L定义为
(6) L ( y ^ , y ) = ∑ t = 1 T x L ⟨ t ⟩ ( y ^ ⟨ t ⟩ , y ⟨ t ⟩ ) L(\hat y,y) = \ \sum_{t = 1}^{T_{x}}{L^{\langle t \rangle}(\hat y^{\langle t \rangle},y^{\langle t \rangle})}\tag{6} L(y^,y)= t=1∑TxL⟨t⟩(y^⟨t⟩,y⟨t⟩)(6)
2.5 - 通过(穿越)时间反向传播-backpropagation through time
-
RNN 反向传播示意图:
-
RNN 反向传播公式:
(7) a ⟨ t ⟩ = tanh ( W a x x ⟨ t ⟩ + W a a a ⟨ t − 1 ⟩ + b ) a^{\langle t \rangle}=\tanh \left(W_{a x} x^{\langle t \rangle}+W_{a a} a^{\langle t-1 \rangle}+b\right)\tag{7} a⟨t⟩=tanh(Waxx⟨t⟩+Waaa⟨t−1⟩+b)(7) (8) ∂ tanh ( x ) ∂ x = 1 − tanh ( x ) 2 \frac{\partial \tanh (x)}{\partial x}=1-\tanh (x)^{2}\tag{8} ∂x∂tanh(x)=1−tanh(x)2(8) (9) ∂ a ⟨ t ⟩ ∂ W a x = ( 1 − tanh ( W a x x ⟨ t ⟩ + W a a a ⟨ t − 1 ⟩ + b ) 2 ) x ⟨ t ⟩ T \frac{\partial a^{\langle t \rangle}}{\partial W_{a x}}=\left(1-\tanh \left(W_{a x} x^{\langle t \rangle}+W_{a a} a^{\langle t-1 \rangle}+b\right)^{2}\right) x^{\langle t \rangle T}\tag{9} ∂Wax∂a⟨t⟩=(1−tanh(Waxx⟨t⟩+Waaa⟨t−1⟩+b)2)x⟨t⟩T(9) (10) ∂ a ⟨ t ⟩ ∂ W a a = ( 1 − tanh ( W a x x ⟨ t ⟩ + W a a a ⟨ t − 1 ⟩ + b ) 2 ) a ⟨ t − 1 ⟩ T \frac{\partial a^{\langle t \rangle}}{\partial W_{a a}}=\left(1-\tanh \left(W_{a x} x^{\langle t \rangle}+W_{a a} a^{\langle t-1 \rangle}+b\right)^{2}\right) a^{\langle t-1 \rangle T}\tag{10} ∂Waa∂a⟨t⟩=(1−tanh(Waxx⟨t⟩+Waaa⟨t−1⟩+b)2)a⟨t−1⟩T(10) (11) ∂ a ⟨ t ⟩ ∂ b = ∑ b a t c h ( 1 − tanh ( W a x x ⟨ t ⟩ + W a a a ⟨ t − 1 ⟩ + b ) 2 ) \frac{\partial a^{\langle t \rangle}}{\partial b}=\sum_{batch}\left(1-\tanh \left(W_{a x} x^{\langle t \rangle}+W_{a a} a^{\langle t-1 \rangle}+b\right)^{2}\right)\tag{11} ∂b∂a⟨t⟩=batch∑(1−tanh(Waxx⟨t⟩+Waaa⟨t−1⟩+b)2)(11) (12) ∂ a ⟨ t > ∂ x ⟨ t ⟩ = W a x T ( 1 − tanh ( W a x x ⟨ t ⟩ + W a a a ⟨ t − 1 ⟩ + b ) 2 ) \frac{\partial a^{\langle t>}}{\partial x^{\langle t \rangle}}=W_{a x}^{T}\left(1-\tanh \left(W_{a x} x^{\langle t \rangle}+W_{a a} a^{\langle t-1 \rangle}+b\right)^{2}\right)\tag{12} ∂x⟨t⟩∂a⟨t>=WaxT(1−tanh(Waxx⟨t⟩+Waaa⟨t−1⟩+b)2)(12) (13) ∂ a ⟨ t ⟩ ∂ a ⟨ t − 1 ⟩ = W a a T ( 1 − tanh ( W a x x ⟨ t − 1 ⟩ + W a a a ⟨ t − 1 ⟩ + b ) 2 ) \frac{\partial a^{\langle t \rangle}}{\partial a^{\langle t-1 \rangle}}=W_{a a}^{T}\left(1-\tanh \left(W_{a x} x^{\langle t-1 \rangle}+W_{a a} a^{\langle t-1 \rangle}+b\right)^{2}\right)\tag{13} ∂a⟨t−1⟩∂a⟨t⟩=WaaT(1−tanh(Waxx⟨t−1⟩+Waaa⟨t−1⟩+b)2)(13)