循环神经网络 - RNN

循环神经网络(Rerrent Neural Network,RNN)是神经网络的一种,类似的还有深度神经网络(DNN)、卷积神经网路(CNN)、生成对抗网络(GAN)等。**RNN对具有时序特性的数据非常有成效,他能挖掘数据中的时序信息以及语义信息。**利用RNN的这种能力,使深度学习模型在解决语音识别、语言模型、机器翻译以及时序分析等NLP领域的问题时有所突破。

潜变量自回归模型

  • 使用潜变量 h t h_t ht总结过去信息 p ( h t ∣ h t − 1 , x t − 1 ) p(h_t|h_{t-1},x_{t-1}) p(htht1,xt1) p ( x t ∣ h t , x t − 1 ) p(x_t|h_t,x_{t-1}) p(xtht,xt1)

在这里插入图片描述

循环神经网络

在这里插入图片描述

更新隐藏状态: h t = ∅ ( W h h h t − 1 + W h x X t − 1 + b h ) h_t=\empty(W_{hh}h_{t-1}+W_{hx}X_{t-1}+b_h) ht=(Whhht1+WhxXt1+bh)

输出: o t = ∅ ( W h o h t + b o ) o_t=\empty(W_{ho}h_t+b_o) ot=(Whoht+bo)

困惑度(perplexity)

  • 衡量一个语言模型的好坏可以用评价你交叉熵

π = 1 n ∑ i = 1 n − l o g p ( x t ∣ x t − 1 , . . . ) \pi = \frac{1}{n}\sum\limits_{i=1}^n-logp(x_t|x_{t-1},...) π=n1i=1nlogp(xtxt1,...)

p p p是语言模型的概率预测, x t x_t xt是真实词

  • 历史原因NLP使用困惑的 e x p ( π ) exp(\pi) exp(π)来衡量,时平均每次可能选项
  • 1表示完美,无穷大是最差情况

梯度剪裁

  • 迭代中计算这 T T T个时间步上的梯度,在反向传播过程中产生长度为 O ( T ) O(T) O(T)的矩阵乘法链,导致数值不稳定

  • 梯度裁剪能有效预防梯度爆炸

    • 如果梯度长度超过 θ \theta θ,那么拖影回长度 θ \theta θ
      g ← m i n ( 1 , θ ∣ ∣ g ∣ ∣ ) g g\leftarrow min(1,\frac{\theta}{||g||})g gmin(1,∣∣g∣∣θ)g

更多的应用 RNNs

在这里插入图片描述

总结:

  • 循环神经网络的输出取决于当下输入和前一时间的隐变量
  • 应用到语言模型中时,循环神经网络根据当前词预测下一次时刻词
  • 通常使用困惑度来衡量语言模型的好坏
posted @ 2023-10-31 13:47  mango1698  阅读(6)  评论(0编辑  收藏  举报  来源