专栏首页share ai happiness标准循环神经网络记忆差怎么破

标准循环神经网络记忆差怎么破

前言

前面介绍的是循环神经网络, 这篇文章介绍的是长短记忆网络。

问题

标准循环网络的记忆差

  • 转换矩阵必然削弱信号
  • 需要一种可以在多个步骤中保持一些维度不变的结构

这个算是循环神经网络的一个升级,解决了循环神经网络致命的问题,梯度消失问题,对长距离会记不住信息。如何解决这两个问题,往下看。

通过内部更新机制,引入了三个门,通过这些门,怎么记住信息?默认情况下LSTM会记住最后一步的信息。

LSTM结构图

这个其实是小的单元,Xt第t时刻元素输入,前面有两个输入。这个和经典的循环神经网络不一样的是它有两个输入,两个输出。这里我们看到的都是状态,没有把每个节点的输出给出来,C和h都是当前状态的输出状态,或者输入上一层的状态。

这个是长短记忆网络最核心部分,也叫记忆单元、状态单元,因为有了它就解决了记忆问题,也解决了消失问题。它就贯通神经网络节点,它的信息会没有阻断向前传播,更新也不会有任何消失。

分两个阶段更新,结合两个图,前面是忘记后边是添加,得到一个新的状态,Ct-1是上一层的单元状态,记录的是前面穿过来的信息,通过忘记信息,再添加新的信息,最后更新新的状态。

我们看它是怎么忘记,怎么添加的?ht-1和Ct-1之间有什么关系?在循环神经网络中就只有一个ht-1,就是上一层的状态,这里它有两个状态,它们分工还算明确,Ct-1是保证信息的传输,ht-1是通过Ct-1通过输出门进一步过滤得到的一个状态值,是用来参与具体的循环概念上上一层状态的计算。ht可以对应经典循环网络上一层的状态,Ct是额外附加的,贯穿整个信息的。

下面那些都是通过ht-1和Xt,拼接成长的向量,下面的好几个门都是以它为输入的,所以说前面输入都是固定的,通过不同的输入输入到不同的网络中,得到不同的门。

下图看框起来的部分,通过这个公式,通过公式外层那个函数进行激活,把所有的元素约束到0-1之间,跟门是天然对应的,0-无,1-有。通过函数得到的ft得到的就是一个门控,对应信息是0就忘记这部分信息,这部分信息是1就保留。这些值在0-1之间,所以不是绝对的忘记,有量化程度,有一定的概率去忘记。

然后我们把这个计算的向量和上层的单元状态进行一对一相乘,就是上层含有信息的和ft控制门对应向量一一相乘。

右边的公式是计算输入门,it是当前临时的状态,就是由当前的Xt和前一个状态ht-1计算得到的当前的信息。Ct这个信息是通过it输入门进行过滤,也是按位相乘,然后加到前面状态中。

Ct-1是上一个状态,跟忘记门按位一对一相乘,如果fi对应位置向量接近于0,对应信息选择忘记,然后得到一个信息,在这个基础上我们再加上it,输入门乘我们临时信息,也是按位相乘,对于对当前信息我们过滤掉一部分之后得到有用的信息,通过相加我们最终得到单元状态Ct。

我们有了Ct之后,可以算一个输出ht,是在Ct基础上得到的,又有一个门,总共三个门,忘记门、输入门、输出门。通过输出门对Ct再过滤,得到的ht才是作为下一步状态来传。

把内部复杂结构都去掉,其实就是循环神经网络,输入是Xt-1,输出是ht-1,是我们前面神经网络对应的状态,额外维护的是Ct,就是因为有了Ct才可以解决前面的梯度消失问题,长距离记忆问题。它只有过滤和相加操作,没有相乘,就尽量保证了长期信息,所以在Ct这条路上没有梯度消失,前面说梯度消失就是它会不断乘一个小于1的值,到最后,慢慢逼近0。

要点

LSTM其实有很多不同类型,其实就是有复杂的门控机制,让复杂的神经网络解决了梯度消失问题,长距离问题。还有一个是GRU,相对LSTM结构较简单,没有LSTM流行。

LSTM不同的门不同的参数,所以参数比循环神经网络多很多,训练的时候时间很长,4倍吧。

持续输出干货有点累。。你的一个“点赞 分享”是我的动力

本文分享自微信公众号 - 1001次重燃(smile765999),作者:木野归郎

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 爬虫框架Scrapy总结笔记

    由于工作需要,学习一下爬虫框架,在网上看了别人的笔记和教学视频,想总结一下便于以后复习用,然后和大家分享一下。

    木野归郎
  • Yarn模式下的监控界面介绍

    有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点不同。

    木野归郎
  • MNIST数据集 — 前期准备

    前面都是基础零碎的知识,需要通过一个栗子来为大家把整个流程走一遍,从整体上对TensorFlow进行一个把握,大概分为四篇文章来说明吧(前期准备、前馈计算、模型...

    木野归郎
  • 遗传算法可视化项目(2):获取信息

    昨天讲了一下实现遗传算法可视化的概述,没看过的人或者今天才关注的人点一下历史消息,或者点这里:

    不可言诉的深渊
  • 神经网络算法总结—ML NOTE 57

    前面几个小节都讲了神经网络的一些东东,因为神经网络在机器学习中的地位实在是太重要了,所以需要单独一节把前面学到的事总结一下。

    讲编程的高老师
  • 深度学习三大框架对比

    人工智能的浪潮正席卷全球,诸多词汇时刻萦绕在我们的耳边,如人工智能,机器学习,深度学习等。

    腾讯Bugly
  • 如何浏览器里用js解析excel文件

    上篇文章给大家介绍了如何借助nodejs平台解析操作excel,今天给大家介绍如何在浏览器端使用js解析操作excel。

    挥刀北上
  • 25个机器学习面试题,你能回答几个?

    机器学习有非常多令人困惑及不解的地方,很多问题都没有明确的答案。但在面试中,如何探查到面试官想要提问的知识点就显得非常重要了。

    加米谷大数据
  • Python 编写自己的异常

            所有的异常都是在Python或者它的标准库中提前定义好的。根据自己的目的可以使用任意的异常类型,同时也可以自己定义异常类型,用来处理程序中可能会...

    py3study
  • 第 433 期 Python 周刊

    https://www.youtube.com/watch?v=vQPW16_jixs

    爱写bug

扫码关注云+社区

领取腾讯云代金券

,,