前导知识:RNN

  • 递归神经网络(Recurrent Neural Network)可以解决传统神经网络中做不到的“信息时序关联”,说人话就是RNN能从以前的一些事件推测出相关的下一事件。
  • RNN的网络结构如下,它的网络结构中存在回环,能使得之前的信息得到保留。
  • 上面示意图中,模块A接收输入X并输出h,重复若干次就能将之前的状态信息一直传递下去。
  • 这种链式的结构也揭示了RNN与序列(sequences)和列表(lists)紧密关联。RNN已经成功运用在了语音识别、语言建模等等领域。
  • 但是RNN也并不是万能的,它会出现梯度爆炸和梯度消失等问题,什么是梯度消失和爆炸?具体可以查看这篇博客。简单来说,就是难以继续更新参数了。
  • 举个具体的例子来说,当我们想要预测“the clouds are in the __”,RNN能很好地根据前文推测出应该填sky;但是当对于“I grew up in France… I speak fluent ___.这句话来说,我们可以一眼看出应该填French,但是RNN不行,因为中间隔了太多其他的信息,已经没办法关联到那么远的前文并学习了。

    什么是LSTM?它从何而来?
  • Long Short-Term Memory 长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长时间的重要事件。
  • 它的设计就是为了避免RNN的梯度消失和爆炸的问题。它的核心是设计了门的结构(输入门、遗忘门、输出门),能够机智地控制每一次记录啥信息丢掉啥信息,这样就能长期记住前面重要的信息了。
  • 在标准的RNN中,其重复的子模块就是很简单的比如一个tanh层:
  • 而LSTM对这种结构做了优化,也就是加了上面说的三个门,这里的门就可以简单地理解尾一个阀门开关,控制前面信息能流进下一层的程度,下面会具体讲。
  • 上图结构的符号意思分别是:
  • 简单来说就是:
    • 黄色矩阵:学习得到的神经网络层
    • 粉色圆圈表示运算操作
    • 黑色箭头表示向量传输
  • 这里的门包括了一个Sigmoid激活函数和相关的其他操作,sigmoid函数输出范围为[0,1],一般用在二分类问题,输出值接近0不通过,接近1则通过。
  • sigmoid函数公式以及几何图像:

  • 门的结构:

  • 总的来说,LSTM的总流程是先经过遗忘门,决定哪些信息需要被丢弃;下一阶段是输入门,确定哪些信息要被存入下一层;最后一个阶段是输出们,确定输出什么值。下面来具体介绍LSTM中的三个门结构:

  • 遗忘门: 遗忘门是以上一层的输出 h t − 1 h_{t-1} ht−1​和本层要输入的序列数据 x t x_t xt​作为输入,通过一个激活函数sigmoid,得到输出为 f t f_t ft​。的输出取值在[0,1]区间,表示上一层细胞状态被遗忘的概率,1是“完全保留”,0是“完全舍弃”。

  • 输入门: 包括两个部分,第一个部分使用sigmoid激活函数,输出 i t i_t it​,其在[0,1]之间取值,表示 C t C_t Ct​中的信息被保留的程度,其中 C t C_t Ct​由第二部分tanh激活函数输出;两者相乘 i t ∗ C t i_t*C_t it​∗Ct​就是该层表示整层被表六的新信息了。

  • 目前为止, f t f_t ft​是遗忘门的输出,控制着上一层状态 C t − 1 C_{t-1} Ct−1​被遗忘的程度; i t ∗ C t i_t*C_t it​∗Ct​是输入门的运算表示由多少新信息被保留,基于这些旧可以将新信息更新给这一层的状态 C t C_t Ct​了:

  • 输出门: 用来控制该层的状态由多少被过滤。首先使用sigmoid激活函数得到[0,1]区间内的取值 o t o_t ot​,然后将状态 C t C_t Ct​通过tanh函数处理后与 o t o_t ot​相乘得到本层的输出 h t h_t ht​

  • 至此基本的LSTM结构就了解得差不多了,LSTM也有很多的变种,比如双向LSTM和GRU之类的,这里就不过多介绍了,具体的可以看参考资料。

  • 实践篇内容是:手动实现LSTM网络并对文本数据进行分类,更新完会链接于此:LSTM基本原理及实践(下)(更新中)


参考资料:

  • Understanding LSTM Networks
  • The Unreasonable Effectiveness of Recurrent Neural Networks
  • 长短期记忆网络(Long Short-Term Memory,LSTM)及其变体双向LSTM和GRU
  • DIVE INTO DEEP LEARNING(6.8. 长短期记忆(LSTM))

LSTM基本原理及实践(上)相关推荐

  1. 双指针算法基本原理和实践

    原文作者:huansky 原文地址:双指针算法基本原理和实践 什么是双指针 双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的 ...

  2. 计算机网络课程实训方法,《计算机网络基本原理》实践环节指导一

    一.类型 课程实验 二.目的与要求 动手实践是本课程必不可少的环节,实践的目的是锻炼和培养考生的实际操作技能和解决问题的能力.考生在深刻理解计算机网络基本原理的基础上,掌握网络系统的配置.调试和操作的 ...

  3. 详解Docker的基本原理与实践操作

    详解Docker的基本原理与实践操作,Web时代,应用变得越来越强大,与此同时也越来越复杂.集群部署.隔离环境.灰度发布以及动态扩容缺一不可,而容器化则成为中间的必要桥梁. 本文我们就来探索Docke ...

  4. (36个知识点)关于《浏览器基本原理与实践》的读后总结

    作为一名前端er,日常工作打交道最多(之一)的莫过于熟悉而又陌生的浏览器了,熟悉是每天都会基于浏览器的应用层面之上码业务,陌生是很多人可能跟我一样不熟悉其内部运行原理,比如js是怎样运行的呢?精美样式 ...

  5. 肝完《浏览器基本原理与实践》后,我总结了这 36 点

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 前言 作为一名前端er,日常工作打交道最多(之一)的莫过于熟悉而又陌生的浏览器了,熟悉是每天 ...

  6. 肝完《浏览器基本原理与实践》的精华分享

    文末有福利 前言 作为一名前端er,日常工作打交道最多(之一)的莫过于熟悉而又陌生的浏览器了,熟悉是每天都会基于浏览器的应用层面之上码业务,陌生是很多人可能跟我一样不熟悉其内部运行原理,比如js是怎样 ...

  7. 滑动窗口算法基本原理与实践

    原文作者:huansky 原文地址:滑动窗口算法基本原理与实践 目录 滑动窗口算法(Sliding Window Algorithm) 基本示例 滑动窗口法的大体框架 算法实例 1208. 尽可能使字 ...

  8. 货拉拉大数据对BitMap的探索与实践(上)

    1. 引言 在大数据时代,想要不断提升基于海量数据获取的决策.洞察发现和流程优化等能力,就需要不停思考,如何在利用有限的资源实现高效稳定地产出可信且丰富的数据,从而提高赋能下游产品的效率以及效果.在货 ...

  9. 推荐系统从零单排系列(四)—Word2Vec理论与实践(上)

    推荐系统从零单排系列(四)-Word2Vec理论与实践(上) [导读]Word2Vec是Embedding中非常基本的模型,训练出来的词向量不仅能保持语义与语法上的相关性,并且可以实现类似代数运算的能 ...

最新文章

  1. Linux进程描述符task_struct结构体简析
  2. centos7.9 配置nginx实现前后端分离
  3. Django 数据库ORM 操作 - 字段的类型和参数
  4. 怎样制作一个 Python Egg
  5. 深入Java集合学习系列:LinkedHashSet的实现原理
  6. pulsar常用命令
  7. Spring框架学习笔记03:初探Spring——利用注解配置类取代Spring配置文件
  8. python如何对excel两个单元格求乘积_excel表格怎么求乘积_excel表格多个单元格怎么求积...
  9. Java 时间处理 ZoneDateTime
  10. SQL*Plus和iSQL*Plus的区别(oracle)
  11. Git项目下载部分文件或文件夹
  12. 【漏洞学习——XSS】TOM邮箱存储型XSS一枚
  13. html+css基础教程之html简介和元素
  14. 保护眼睛的颜色和各种背景颜色设置方法(转)
  15. win11恢复win10的右击菜单,自测可用
  16. python将图片转动漫_如何将照片动漫化
  17. instagram分析以预测与安的限量版运动鞋转售价格
  18. Kafka完美解决:Error while executing topic command:Replication factor: 1 larger than available brokers:0
  19. C语言程序设计第三章
  20. ERP之替代料的使用

热门文章

  1. MFC下的汉字拼音首字母(适用于多字节字符集)
  2. 页面通过点击事件传递多个参数到另一个页面
  3. 操作系统学习记录之五:多线程实现的混合策略
  4. 别再找借口了!找不到工作还不好好学一下这份16W字Java面试合集
  5. 移动渗透测试(dozer,adb,夜神模拟器)
  6. jqGrid 奇淫巧技
  7. python爬取链家房价消息_Python的scrapy之爬取链家网房价信息并保存到本地
  8. ETL工具之Talend简介与安装
  9. TGI关联指数 + Python
  10. 38、Neural 3D Reconstruction in the Wild