tensorflow 2.0 循环神经网络 之 RNN

9.2 循环神经网络

  • 语义分析
    • 提出模型-全连接
    • 解决参数量大的问题-Weight sharing
    • 解决没有语义相关性-Consistent memory
  • RNN
    • 动态结构
    • 公式
    • 如何训练

语义分析

对文本进行语义二分类,也就是根据一句话判定句子情感是积极的还是消极的。

提出模型-全连接

tensorflow 2.0 循环神经网络 之 RNN_第1张图片

存在问题:

  1. 每个单词全连接,参数量极大。
  2. 没有语义相关性。

解决参数量大的问题-Weight sharing

tensorflow 2.0 循环神经网络 之 RNN_第2张图片

通过权值共享来极大减少参数量。

解决没有语义相关性-Consistent memory

tensorflow 2.0 循环神经网络 之 RNN_第3张图片

通过一致性内存机制来产生单词之间的语义相关和连绵性。

RNN

动态结构

tensorflow 2.0 循环神经网络 之 RNN_第4张图片

公式

h t = f w ( h t − 1 , x t ) h_t = f_w(h_{t-1},x_t) ht=fw(ht1,xt)
h t = t a n h ( W h h h t − 1 + W x h x t ) h_t = tanh(W_{hh}h_{t-1}+W_{xh}x_t) ht=tanh(Whhht1+Wxhxt)
y t = W h y h t y_t = W_{hy}h_t yt=Whyht

tensorflow 2.0 循环神经网络 之 RNN_第5张图片

注: h 0 h_0 h0 常是 零向量。

如何训练

求导

tensorflow 2.0 循环神经网络 之 RNN_第6张图片

h t = tanh ⁡ ( W I x t + W R h t − 1 ) h_{t}=\tanh \left(W_{I} x_{t}+W_{R} h_{t-1}\right) ht=tanh(WIxt+WRht1)
y t = W O h t y_{t}=W_{O} h_{t} yt=WOht

求导:

∂ E t ∂ W R = ∑ i = 0 t ∂ E t ∂ y t ∂ y t ∂ h t ∂ h t ∂ h i ∂ h i ∂ W R \frac{\partial E_{t}}{\partial W_{R}}=\sum_{i=0}^{t} \frac{\partial E_{t}}{\partial y_{t}} \frac{\partial y_{t}}{\partial h_{t}} \frac{\partial h_{t}}{\partial h_{i}} \frac{\partial h_{i}}{\partial W_{R}} WREt=i=0tytEthtythihtWRhi

∂ h t ∂ h i = ∂ h t ∂ h t − 1 ∂ h t − 1 ∂ h t − 2 … ∂ h i + 1 ∂ h i = ∏ k = i t − 1 ∂ h k + 1 ∂ h k \frac{\partial h_{t}}{\partial h_{i}}=\frac{\partial h_{t}}{\partial h_{t-1}} \frac{\partial h_{t-1}}{\partial h_{t-2}} \ldots \frac{\partial h_{i+1}}{\partial h_{i}}=\prod_{k=i}^{t-1} \frac{\partial h_{k+1}}{\partial h_{k}} hiht=ht1htht2ht1hihi+1=k=it1hkhk+1

f = tanh ⁡ ( x ) f=\tanh (x) f=tanh(x)
∂ h k + 1 ∂ h k = diag ⁡ ( f ′ ( W I x i + W R h i − 1 ) ) W R \frac{\partial h_{k+1}}{\partial h_{k}}=\operatorname{diag}\left(f^{\prime}\left(W_{I} x_{i}+W_{R} h_{i-1}\right)\right) W_{R} hkhk+1=diag(f(WIxi+WRhi1))WR
∂ h k ∂ h 1 = ∏ i k diag ⁡ ( f ′ ( W I x i + W R h i − 1 ) ) W R \frac{\partial h_{k}}{\partial h_{1}}=\prod_{i}^{k} \operatorname{diag}\left(f^{\prime}\left(W_{I} x_{i}+W_{R} h_{i-1}\right)\right) W_{R} h1hk=ikdiag(f(WIxi+WRhi1))WR

可见,反向传播导数相当复杂。

你可能感兴趣的:(深度学习,tensorflow)