我是靠谱客的博主 内向巨人,最近开发中收集的这篇文章主要介绍[模型基础] RNN | LSTM,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

RNN

RNN:在 t 时间点上将 t-1 时间点的隐节点 h(t-1) 作为当前时间点的输入(即每一个时间点的输出不仅仅取决于当前时间点的特征,还包括上一个时间点的信息)
传统模型:每一个时间点的隐节点输出只取决于当前时间点的输入特征。

每个时间点的隐因子:

  1. 计算当前时间点的输出
  2. 计算下一个时间点的隐因子

RNN问题:

  • 梯度消失/爆炸(权值矩阵循环相乘导致,相同函数的多次组合会导致极端的非线性行为,RNN中每个时间片使用相同的权值矩阵)

梯度爆炸解决方法:梯度截断,将超过某个阈值的梯度,截断到阈值(虽然改变了梯度,但是仍然可以保证loss下降)。

梯度消失,不能采用梯度截断方法来解决。因为长时间的依赖也会产生小的梯度,如果截断(会提高梯度值),对于模型而言,失去了捕捉长时间依赖的能力(改变了模型梯度,使得模型梯度没有往希望的变小方向变化)。

LSTM

LSTM:Long Short Term Memory,长短期记忆网络。针对上述RNN不能捕捉长期依赖的问题,提出了LSTM。

  • 【遗忘门】(由上一个隐层和当前输入共同决定,激活函数是sigmod)。控制前一个单元状态的信息,可以用于当前单元状态
  • 【输入门】(由上一个隐层和当前输入共同决定,激活函数是sigmod】。控制哪些特征,可以更新单元状态更新值
  • 【单元状态更新值】,由上一个隐层和当前输入共同决定,激活函数是tanh。
  • 【输出门】,由上一个隐层和当前输入共同决定,激活函数是sigmod】。
  • 当前单元状态,由遗忘门和输入门共同决定,后续计算当前隐层。
  • 当前隐层,由输入门和当前单元状态共同决定。
  • 当前输出,由当前隐层决定(与RNN相同)
    LSTM和RNN在公式上的不同,在于获得当前隐层时,采用的门进行信息的控制(遗忘门,输入门,输出门),分别对不同信息及进行控制。

【遗忘门】,【输入门】,【输出门】,【单元状态更新值】,都是由当前输入和上一时刻的隐层得到,前三个的激活函数是sigmoid,最后一个的激活函数是tanh。

RNN是一个链式结构,每个输出由权值W,偏置值b,激活函数决定,每个时间点使用的参数相同。

参考:

  1. 详解LSTM:https://zhuanlan.zhihu.com/p/42717426

最后

以上就是内向巨人为你收集整理的[模型基础] RNN | LSTM的全部内容,希望文章能够帮你解决[模型基础] RNN | LSTM所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部