循环神经网络 - RNN

72 阅读1分钟

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

潜变量自回归模型

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

    |550

循环神经网络

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

输出:ot=(Whoht+bo)o_t=\empty(W_{ho}h_t+b_o)

困惑度(perplexity)

  • 衡量一个语言模型的好坏可以用评价你交叉熵
π=1ni=1nlogp(xtxt1,...)\pi = \frac{1}{n}\sum\limits_{i=1}^n-logp(x_t|x_{t-1},...)

pp是语言模型的概率预测,xtx_t是真实词

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

梯度剪裁

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

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

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

更多的应用 RNNs

总结:

  • 循环神经网络的输出取决于当下输入和前一时间的隐变量
  • 应用到语言模型中时,循环神经网络根据当前词预测下一次时刻词
  • 通常使用困惑度来衡量语言模型的好坏