1. 概述

在循环神经网络RNN一文中提及到了循环神经网络RNN存在长距离依赖的问题,长短期记忆(Long Short-Term Memory,LSTM)网络便是为了解决RNN中存在的梯度爆炸的问题而提出。在LSTM网络中,主要依靠引入“门”机制来控制信息的传播。

2. 算法原理

2.1. LSTM的网络结构

LSTM的网络结构如下所示(图片来自参考文献):


与循环神经网络RNN相比,LSTM的网络结构要复杂的多。

在LSTM网络中,通过引入三个门来控制信息的传递,这三个门分别为遗忘门(forget gate),输入门(input gate)和输出门(output gate)。门机制是LSTM中重要的概念,那么什么是“门”以及门机制在LSTM中是如何解决长距离依赖的问题的。

2.2. 门机制

现实中的“门”通常解释为出入口,在LSTM网络的门也是一种出入口,但是是控制信息的出入口。门的状态通常有三种状态,分别为全开(信息通过概率为1),全闭(信息通过概率为0)以及半开(信息通过概率介于0和1之间)。在这里,我们发现对于全开,全闭以及半开三种状态下的信息通过可以通过概率来表示,在神经网络中,sigmoid函数也是一个介于0和1之间的表示,可以应用到LSTM中门的计算中。

2.3. LSTM的计算过程

如下是LSTM的网络结构的具体形态,如下所示(图片来自邱锡鹏老师的课件):

其中,ct−1c_{t-1}ct−1​表示的是t−1t-1t−1时刻的cell state(注:关于cell state,查了多个版本的中文翻译,有翻译为“细胞状态”,有翻译成“单元状态”,邱老师使用的是内部状态,没有一个明确的中文翻译,故在此使用英文),ht−1h_{t-1}ht−1​表示的是t−1t-1t−1时刻的hidden state(注:与前面的cell state对应),xtx_txt​表示的是ttt时刻的输入,ftf_tft​表示的是遗忘门,iti_tit​表示的是输入门,c~t\tilde{c}_tc~t​表示的是候选值(candidate values),oto_tot​表示的是输出门。

从图中的数据流向得到的计算流程如下所示:

  1. 利用t−1t-1t−1时刻的hidden state ht−1h_{t-1}ht−1​计算遗忘门ftf_tft​的结果,ftf_tft​的计算公式如下所示

ft=σ(Wfxt+Ufht−1+bf)f_t=\sigma \left ( W_fx_t+U_fh_{t-1}+b_f \right )ft​=σ(Wf​xt​+Uf​ht−1​+bf​)

  1. 利用t−1t-1t−1时刻的hidden state ht−1h_{t-1}ht−1​计算输入门iti_tit​的结果,iti_tit​的计算公式如下所示

it=σ(Wixt+Uiht−1+bi)i_t=\sigma \left ( W_ix_t+U_ih_{t-1}+b_i \right )it​=σ(Wi​xt​+Ui​ht−1​+bi​)

  1. 利用t−1t-1t−1时刻的hidden state ht−1h_{t-1}ht−1​计算候选值c~t\tilde{c}_tc~t​的结果,c~t\tilde{c}_tc~t​的计算公式如下所示

c~t=tanh(Wcxt+Ucht−1+bc)\tilde{c}_t=tanh \left ( W_cx_t+U_ch_{t-1}+b_c \right )c~t​=tanh(Wc​xt​+Uc​ht−1​+bc​)

  1. 利用t−1t-1t−1时刻的hidden state ht−1h_{t-1}ht−1​计算输出门oto_tot​的结果,oto_tot​的计算公式如下所示

ot=σ(Woxt+Uoht−1+bo)o_t=\sigma \left ( W_ox_t+U_oh_{t-1}+b_o \right )ot​=σ(Wo​xt​+Uo​ht−1​+bo​)

  1. 根据ttt时刻的cell state ctc_tct​,这里会使用到t−1t-1t−1时刻的cell state ct−1c_{t-1}ct−1​,遗忘门ftf_tft​,输入门iti_tit​和候选值c~t\tilde{c}_tc~t​,ctc_tct​的计算公式如下所示

ct=ft⊙ct−1+it⊙c~tc_t=f_t\odot c_{t-1}+i_t\odot \tilde{c}_tct​=ft​⊙ct−1​+it​⊙c~t​

上述的公式是由前面的1,2,3部分的公式组成,也是LSTM网络中的关键的部分,对该公式,我们从如下的几个部分来理解:

  • ft⊙ct−1f_t\odot c_{t-1}ft​⊙ct−1​,使用遗忘门ftf_tft​对t−1t-1t−1时刻下的cell state ct−1c_{t-1}ct−1​遗忘;
  • it⊙c~ti_t\odot \tilde{c}_tit​⊙c~t​,首先是c~t\tilde{c}_tc~t​表示的是通过ttt时刻的输入和t−1t-1t−1时刻的hidden state ht−1h_{t-1}ht−1​需要增加的信息,与输入门iti_tit​结合起来就表示整体需要增加的信息;
  • 两部分结合表示的是ttt时刻下的cell state下需要从t−1t-1t−1时刻下的cell state中保留的部分信息以及ttt时刻下新增信息的总和。
  1. 根据输出门oto_tot​和cell state ctc_tct​计算外部状态hth_tht​,hth_tht​的计算公式如下所示

ht=ot⊙tanh(ct)h_t=o_t\odot tanh\left ( c_t \right )ht​=ot​⊙tanh(ct​)

参考文献

  • Understanding LSTM Networks
  • LSTM与GRU的原理,不熟悉的再来看看呀
  • 神经网络与深度学习
  • 人人都能看懂的LSTM

深度学习算法原理——LSTM相关推荐

  1. Python大数据综合应用 :零基础入门机器学习、深度学习算法原理与案例

    机器学习.深度学习算法原理与案例实现暨Python大数据综合应用高级研修班 一.课程简介 课程强调动手操作:内容以代码落地为主,以理论讲解为根,以公式推导为辅.共4天8节,讲解机器学习和深度学习的模型 ...

  2. TensorFlow深度学习算法原理与编程实战 人工智能机器学习技术丛书

    作者:蒋子阳 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2019-01-01 TensorFlow深度学习算法原理与编程实战 人工智能机器学习技术丛书 ISBN:97875170682 ...

  3. 深度学习算法原理_用于对象检测的深度学习算法的基本原理

    深度学习算法原理 You just got a new drone and you want it to be super smart! Maybe it should detect whether ...

  4. ZAO 背后的深度学习算法原理浅析

    ZAO最近火爆,成为现象级产品之一,引起大家的广泛关注,ATA上面已经有同学做了一些说明分析,链接如下: https://www.atatech.org/articles/148375?spm=ata ...

  5. DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优

    DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优 目录 基于keras对LSTM算法进行超参数调优 1.可视化LSTM模型的loss和acc曲线

  6. 大话卷积神经网络CNN,小白也能看懂的深度学习算法教程,全程干货建议收藏!...

    来源 | 程序员管小亮 本文创作的主要目的,是对时下最火最流行的深度学习算法的基础知识做一个简介,作者看过许多教程,感觉对小白不是特别友好,尤其是在踩过好多坑之后,于是便有了写这篇文章的想法. 由于文 ...

  7. 一文梳理深度学习算法演进

    来源:https://zhuanlan.zhihu.com/p/464515049 作者:Peter潘欣 编辑:蘑菇先生 学习记涉及语音.图像.nlp.强化学习.隐私保护.艺术创作.目标检测.医疗.压 ...

  8. 平均年薪30万的深度学习算法工程师,正面临100万的人才缺口

    深度学习的突破极大推动了人工智能的发展,并广泛应用在计算机视觉.自然语言处理等领域中.谷歌.百度的IDL.腾讯的AI lab.华为等都在重金布局人工智能,同时,以深度学习为核心技术的人工智能企业不断涌 ...

  9. 人工智能综述性论文_人工智能论文研读:深度学习算法与架构综述(包含详细统计表)...

    综述一共26页 总体内容概括 本文综述了几种提高训练精度和缩短训练时间的优化方法.深入研究了最近深度网络中使用的训练算法背后的数学原理.将描述当前的缺点.增强和实现.本文还介绍了深度卷积网络.深度残差 ...

最新文章

  1. Img与background的区别
  2. 七十四、Python | Leetcode数字系列(下篇)
  3. 在 ASP.NET Core 中使用 HTTP 标头传播
  4. java.net.SocketException: Software caused connection abort: socket write erro
  5. 红橙Darren视频笔记 热更新 bsdiff bspatch 在Android设备上的应用 架构篇1完结篇
  6. VisualStudio异常处理 —— LNK1112 模块计算机类型“x64”与目标计算机类型“X86”冲突
  7. 7-37 抓老鼠啊~亏了还是赚了? (20 分)
  8. 常用排序算法(六)——希尔排序
  9. mysql悲观锁隔离级别_mysql隔离级别与悲观锁、乐观锁
  10. Python pycharm(windows版本)部署spark环境
  11. OpenMP4.0: #pragma openmp simd实现SIMD指令优化(ARM,X86,MIPS)
  12. 未来编程语言展望——G语言的神奇新要素
  13. 【Java】简单的马戏团节目单项目
  14. CSS-Cascading Style Sheet_层叠样式表_用法详解
  15. 淘宝双11大数据分析(环境篇)
  16. Java工具使用(导读)
  17. micropython api_micropython和python 微云
  18. 1,10-Phen|邻菲啰啉|邻二氮杂菲|1,10-菲啰啉有机配体-66-71-7
  19. cool edit工具介绍及使用
  20. Vue中的深坑——component和components

热门文章

  1. 在内网也想使用微信、钉钉和飞书,怎么办?
  2. 推陈、致新——城市更新促进美丽城市建设
  3. 做科技型券商,光大证券构建私有云平台
  4. 华为mate40pro+和华为mate40RS保时捷有什么区别
  5. 【Nginx01】Ngnix入门
  6. 强劲推力配上刚猛转速,真是个运动护理好手,OPOVE APEX筋膜枪体验
  7. linux 魅族,传魅族17全系90Hz刷新率
  8. 「关羽斩废」! 垃圾处理与发电参加「护家担当」概念雄安跨界斜杠派展区!AiHiX
  9. 步进电机c语言控制程序6,步进电机控制程序(c语言+51单片机)
  10. 2022年福田英才荟海归创业港补贴申请指南