LSTM(Long Short Term Memory) 核心入门

来源:互联网 发布:大数据的重要意义 编辑:程序博客网 时间:2024/05/21 18:32

增强学习之长短记忆模型

本文主要结合自己rnn,lstm的学习经历,帮助有一定深度学习基础的人快速了解LSTM,假设读者已经了解深度学习的大致结构,以及以下列出的相关基础知识,如果不了解,可以先大致了解一下以下一些名词,或者边读边了解。看完这个,理解了之后至少看相关论文的时候不会太迷糊。

先验知识列表

  1. 基本的线性代数概率统计
  2. 知道input layer ,output layer,hidden layer的含义
  3. 知道感知觉模型,sigmoid函数,映射到[-1,1]区间的
  4. 图中的黑色圆点代表信号相乘
  5. 知道tanh函数,
  6. 深度学习基础至少先把这个链接上面的demo跑一遍,做个直观的了解,不然可能看到后面的,又忘了前面的。深度学习入门tutorial

摘要
本文主要介绍LSTM的核心运行原理包括架构图以及如何使用。
lstm核心逻辑

LSTM的核心单元由四个部分组成Input Gate,Output Gate, Forget Gate and Cell。下面我们来一一解释这四个unit。
Input Gate 的输入主要有三个部分,如公式中,输入信息Xt ,前一个hidden layer的信息。还有 cell反馈回来的信息。一共三个,再加一个bias b。前三个输入源分别对应三个权重w 分别是,输入x,隐藏层h,cell反馈c,一共四个项: 之后通过sigmoid 或者tanh函数 映射到[-1,1]。
这里写图片描述
Forget Gate 同样,也是输入源Xt、前一个hidden layer 的信息 H t-1 再加Cell反馈回来的信息Ct-1、再加偏置b。
这里写图片描述
由图中可以看出,这两个unit 的输入和输出几乎无异,但是W参数不一样,也就是不同的激活函数对应不同的激活区域,以及后续的输出信息的处理不同,一个是与不带cell的输入相乘。也就是ct的后半部分,另一个是与ct-1相乘。实际上就是把It拆成两半。
Ct-1 和 WXt+WHt-1+b两部分,然后分别拿上两个输出相乘来获取下一个时间段的Ct。这也是
Cell的计算公式
这里写图片描述
Output Gate
Ot与Ft、It的计算方式具有很大的相似性,唯一不同的是Ct,而不是Ct-1,下标成长为一。公式可以自己往上翻,去看,或者先不着急,后面还会分析。然后,其中的每一个黑点,代表是的相乘。最后的ht是作为下一层的hidden layer 的参数。这是一个单元的计算量,很明显比上层的要高。

-

-

这个结构是如何实现长短记忆的?
第一重要的是这个结构,那么,这个结构是如何而实现长短记忆的呢? 如何保存记忆数据的呢?那就是这个cell的作用了,我们看,这个cell 保存的东西,是能够通过参数一直往下传的,至于传多远,在下面这个公式中,也就是求Ct的公式,如果我们的参数input gate = 0 and forget gate = 1 ,那么就可以一直传下去,什么时候要输出了,就激活 , 就是从cell 到 output gate 的参数。
这里写图片描述

看,Ct里存储的信息,就可以随意的作用到后面的输入层,可以自由的通过W和Ft来控制记忆长短。

-

-

-

-

对这些传输公式整体的理解
接下来我们仔细研究一下这些传输公式,来做一个系统的理解。
这里写图片描述

首先偏置都是b 如bi、bf、bc、bo。 要知道其中的 I f c o 分别代表四个主要结构,input forget output and cell、
然后输入信息都是x、h、c ;x代表上层输入信号。h代表上一次的隐藏层输入,c代表上一层的cell的输出。这都是假定的下标为t-1,如果下标为t,就是本层的。
再看W ,W的下标是 i、f、c、o (单元结构)和信息源x、h、c的组合。这下是不是很清晰。

然后 相比于传统的cnn,cnn 只有input layer 、output layer 、还有hidden layer。 那么lstm 多出来的两个unit,cell 和 forget layer 肯定是实现功能的关键所在。作为深入,还想模拟一下一些能直观的表示出这两个unit 作用的功能,加深理解。这个公式最重要。
这里写图片描述
看,当forget gate 的输出,也就是 ft = 0 时,是不是,Ct-1 就传不到Ct了,也就是忘了。然后我们会想。这是不是只存了一个,要么就存过去的cell,要么就存 新的那一坨:
这里写图片描述
这是和传统的神经网络,或则cnn相似的那一部分。当然也有可能累加。
然后还有一个问题,就是,ft是一个向量,it 也是一个向量。W是一个矩阵。Ft是一组0、1 序列,然后 前面与之有关系的W相乘,分别对应不同的层,不同位置,不同激活函数的神经元。因此,这些0、1序列决定了哪几个神经元要存在cell里,占用cell向量的一个字符位置。哪些不存,放0。这是ft 也就是forget gate 的输出的主要走向,也就是主要的作用域。Forget gate 都对整个网络产生了哪些影响。
然后我们看看Ct-1 的输出都作用到哪里了呢?input gate ,output gate 还有下一层的cell 都作用了。我们后面可以专门讲这些W,有一个专门的研究课题,叫做Peephole weights。这里写图片描述
那么这些cell是如何作用到后面的网络的呢?以及这个网络如何训练的呢?我们后面再续。

-

-

LSTM训练的问题
LSTM肯定会比较难训练,因为cnn一层只有一个w,而 lstm 一层有9个w,相当一层顶9层,做过的知道,训练起来,层数越多越困难。

0 0
原创粉丝点击