1. RNN模型
2. RNN的前向传播
对于当前的索引号 t t t,隐藏状态 h t h^t ht由 x t x^t xt和 h t − 1 h^{t-1} ht−1共同得到:
(1) h t = tanh ( U x t + W h t − 1 + b ) h^t = \tanh(Ux^t+Wh^{t-1}+b) \tag{1} ht=tanh(Uxt+Wht−1+b)(1)
其中选用了tanh作为激活函数, b b b是bias。
每次网络的输出值:
(2) o t = V h t + c o^t = Vh^t + c \tag{2} ot=Vht+c(2)
输出的预测值:
(3) a t = softmax ( o t ) = softmax ( V h t + c ) a^t = \text{softmax}(o^t) = \text{softmax}(Vh^t+c) \tag{3} at=softmax(ot)=softmax(Vht+c)(3)
使用交叉熵损失函数:
L t = − ∑ i = 1 N y i t log a i t = − log a k t L^t = -\sum_{i=1}^Ny_i^t\log a_i^t = -\log a_k^t Lt=−i=1∑Nyitlogait=−logakt
化简的结果是因为在所有的 N N N个分类中,只有 y k = 1 y_k=1 yk=1
3. RNN的反向传播
RNN的反向传播有时也叫做BPTT(back-propagation through time),所有的参数 U , W , V , b , c U, W, V, b, c U,W,V,b,c在网络的各个位置都是共享的。
成本函数:
L = ∑ t = 1 m L t L = \sum_{t=1}^mL^t L=t=1∑mLt
其中 m m m是训练集的数据量。
从《交叉熵的反向传播梯度推导(使用softmax激活函数)》一文得知,
∂ L t ∂ o t = a t − y t \frac{\partial L^t}{\partial o^t} = a^t - y^t ∂ot∂Lt=at<