zoukankan      html  css  js  c++  java
  • Pytorch学习笔记10----LSTM循环神经网络原理

    1.RNN的构造过程

    RNN是一种特殊的神经网路结构,其本身是包含循环的网络,允许信息在神经元之间传递,如下图所示:

    图示是一个RNN结构示意图,图中的 [公式] 表示神经网络模型,[公式] 表示模型的输入信号,[公式] 表示模型的输出信号,如果没有 [公式] 的输出信号传递到 [公式] 的那个箭头, 这个网络模型与普通的神经网络结构无异。那么这个箭头做了什么事情呢?它允许 [公式] 将信息传递给 [公式] ,神经网络将自己的输出作为输入了!

    关键在于输入信号是一个时间序列,跟时间 [公式] 有关。也就是说,在 [公式] 时刻,输入信号 [公式] 作为神经网络 [公式] 的输入,[公式] 的输出分流为两部分,一部分输出给 [公式] ,一部分作为一个隐藏的信号流被输入到 [公式] 中,在下一次时刻输入信号 [公式] 时,这部分隐藏的信号流也作为输入信号输入到了 [公式] 中。此时神经网络 [公式] 就同时接收了 [公式] 时刻和 [公式] 时刻的信号输入了,此时的输出信号又将被传递到下一时刻的 [公式] 中。如果我们把上面那个图根据时间 [公式] 展开来看,就是:

    循环神经网络的记忆性: 

    普通的神经网络:当我们输入一张卡比兽被喷水的图片时,神经网络会认出卡比兽和水,推断出卡比兽有60%的概率在洗澡,30%的概率在喝水,10%的概率被攻击。

    循环神经网络:在隐藏状态(Hidden State)为“战斗场景开始”的情况下输入神奇宝贝喷水进攻图,RNN能够根据“嘴中喷水”的场景推测图一神奇宝贝是在进攻的概率为85%。之后我们在记忆为“在战斗、敌人在攻击和敌人是水性攻击”三个条件下输入图片二,RNN就会分析出“卡比兽被攻击”是概率最大的情况。

    2.长短时间记忆网络LSTM概述

    长短期记忆(Long Short Term Memory,LSTM)网络是一种特殊的RNN模型,其特殊的结构设计使得它可以避免长期依赖问题,记住很早时刻的信息是LSTM的默认行为,而不需要专门为此付出很大代价。

    粗看起来,这个结构有点复杂,不过不用担心,接下来我们会慢慢解释。在解释这个神经网络层时我们先来认识一些基本的模块表示方法。图中的模块分为以下几种:

    • 黄色方块:表示一个神经网络层(Neural Network Layer);
    • 粉色圆圈:表示按位操作或逐点操作(pointwise operation),例如向量加和、向量乘积等;
    • 单箭头:表示信号传递(向量传递);
    • 合流箭头:表示两个信号的连接(向量拼接);
    • 分流箭头:表示信号被复制后传递到2个不同的地方。

    3.LSTM的基本思想

    LSTM的关键是细胞状态(直译:cell state),表示为 [公式] ,用来保存当前LSTM的状态信息并传递到下一时刻的LSTM中,也就是RNN中那根“自循环”的箭头。当前的LSTM接收来自上一个时刻的细胞状态 [公式] ,并与当前LSTM接收的信号输入 [公式] 共同作用产生当前LSTM的细胞状态 [公式],具体的作用方式下面将详细介绍。

    在LSTM中,采用专门设计的“门”来引入或者去除细胞状态 [公式] 中的信息。门是一种让信息选择性通过的方法。有的门跟信号处理中的滤波器有点类似,允许信号部分通过或者通过时被门加工了;有的门也跟数字电路中的逻辑门类似,允许信号通过或者不通过。这里所采用的门包含一个 [公式] 神经网络层和一个按位的乘法操作,如下图所示:

    其中黄色方块表示[公式]神经网络层,粉色圆圈表示按位乘法操作。[公式]神经网络层可以将输入信号转换为 [公式] 到 [公式] 之间的数值,用来描述有多少量的输入信号可以通过。[公式] 表示“不允许任何量通过”,[公式] 表示“允许所有量通过”。[公式]神经网络层起到类似下图的[公式]函数所示的作用:

    其中,横轴表示输入信号,纵轴表示经过sigmod函数以后的输出信号。

    LSTM主要包括三个不同的门结构:遗忘门、记忆门和输出门。这三个门用来控制LSTM的信息保留和传递,最终反映到细胞状态 [公式] 和输出信号 [公式] 。如下图所示:

    图中标示了LSTM中各个门的构成情况和相互之间的关系,其中:

    • 遗忘门由一个[公式]神经网络层和一个按位乘操作构成;
    • 记忆门由输入门(input gate)与tanh神经网络层和一个按位乘操作构成;
    • 输出门(output gate)与 [公式] 函数(注意:这里不是 [公式] 神经网络层)以及按位乘操作共同作用将细胞状态和输入信号传递到输出端。

    4.LSTM门讲解

    (1)遗忘门

    顾名思义,遗忘门的作用就是用来“忘记”信息的。在LSTM的使用过程中,有一些信息不是必要的,因此遗忘门的作用就是用来选择这些信息并“忘记”它们。遗忘门决定了细胞状态 [公式] 中的哪些信息将被遗忘。那么遗忘门的工作原理是什么呢?看下面这张图。

    左边高亮的结构就是遗忘门了,包含一个[公式]神经网络层(黄色方框,神经网络参数为 [公式]),接收 [公式] 时刻的输入信号 [公式] 和 [公式] 时刻LSTM的上一个输出信号 [公式] ,这两个信号进行拼接以后共同输入到[公式]神经网络层中,然后输出信号 [公式][公式]是一个 [公式] 到[公式]之间的数值,并与 [公式] 相乘来决定 [公式]中的哪些信息将被保留,哪些信息将被舍弃。

    (2)记忆门

    记忆门的作用与遗忘门相反,它将决定新输入的信息 [公式] 和 [公式] 中哪些信息将被保留。

    如图所示,记忆门包含2个部分。第一个是包含[公式]神经网络层(输入门,神经网络网络参数为 [公式])和一个 [公式] 神经网络层(神经网络参数为 [公式])。

    • [公式]神经网络层的作用很明显,跟遗忘门一样,它接收 [公式] 和 [公式] 作为输入,然后输出一个 [公式] 到 [公式] 之间的数值 [公式] 来决定哪些信息需要被更新;
    • Tanh神经网络层的作用是将输入的 [公式] 和 [公式] 整合,然后通过一个[公式]神经网络层来创建一个新的状态候选向量 [公式] ,[公式] 的值范围在 [公式] 到 [公式] 之间。

    记忆门的输出由上述两个神经网络层的输出决定,[公式] 与 [公式] 相乘来选择哪些信息将被新加入到 [公式] 时刻的细胞状态 [公式] 中。

    (3)更新细胞状态

    有了遗忘门和记忆门,我们就可以更新细胞状态 [公式] 了。

    这里将遗忘门的输出 [公式] 与上一时刻的细胞状态 [公式] 相乘来选择遗忘和保留一些信息,将记忆门的输出与从遗忘门选择后的信息加和得到新的细胞状态 [公式]。这就表示 [公式] 时刻的细胞状态 [公式] 已经包含了此时需要丢弃的 [公式] 时刻传递的信息和 [公式] 时刻从输入信号获取的需要新加入的信息 [公式] 。[公式] 将继续传递到 [公式] 时刻的LSTM网络中,作为新的细胞状态传递下去。

    (4)输出门

    前面已经讲了LSTM如何来更新细胞状态 [公式], 那么在 [公式] 时刻我们输入信号 [公式] 以后,对应的输出信号该如何计算呢?

    如上面左图所示,输出门就是将[公式]时刻传递过来并经过了前面遗忘门与记忆门选择后的细胞状态[公式], 与 [公式] 时刻的输出信号 [公式] 和 [公式] 时刻的输入信号 [公式] 整合到一起作为当前时刻的输出信号。整合的过程如上图所示,[公式] 和 [公式] 经过一个[公式]神经网络层(神经网络参数为 [公式])输出一个 [公式] 到 [公式] 之间的数值 [公式][公式] 经过一个[公式]函数(注意:这里不是 [公式] 神经网络层)到一个在 [公式] 到 [公式] 之间的数值,并与[公式] 相乘得到输出信号 [公式] ,同时 [公式] 也作为下一个时刻的输入信号传递到下一阶段。

    其中,[公式]函数是激活函数的一种,函数图像为:

    参考文献:

    https://zhuanlan.zhihu.com/p/27345523

    https://zhuanlan.zhihu.com/p/104475016

  • 相关阅读:
    js加法计算器
    js基础语句
    箭头点击左右滚动-18
    返回头部,滚动显示-17
    图片定位一个地方
    最值一看专题图片轮播图-16
    右侧常用浮动导航,返回顶部-15
    产业带多种轮播效果,头部效果-14
    分辨率判断-13
    图片自动滚动,鼠标滑过悬停-12
  • 原文地址:https://www.cnblogs.com/luckyplj/p/13413778.html
Copyright © 2011-2022 走看看