zoukankan      html  css  js  c++  java
  • 循环神经网络学习

    循环神经网络

    一、绪论

    1. 循环神经网络的应用

    • 语音问答(speech question answering)
    • 机器翻译(machine translation)
    • 股票预测
    • 作词机、作诗
    • 模仿写论文、写代码(格式)
    • 图像理解(Image caption)
    • 视觉问答(visual question answering)

    2. 循环神经网络VS卷积神经网络

    循环神经网络所做的任务

    • 特点:上下文关系(时序)

    • 目标:考虑更多的上下文

    RNN和CNN的区别:

    • 传统神经网络,卷积神经网络,输入输出之间是相互独立的

    • RNN可以更好的处理具有时序关系的任务

    • RNN通过其循环结构引入“记忆”的概念

    • RNN输出不仅依赖于输入,还依赖“记忆”;将同一个结构循环利用

    二、基本组成结构

    1. 基本结构

    隐层的数据被存入到一个“记忆”单元中;

    存在“记忆”中的数据会被作为另外一个输入与原始输入一起输入到神经网络中。

    • f是不断重复利用的

    • 模型所需要学习的参数是固定的

    • 无论输入的长度是多少,只需要一个函数f

    • 隐层状态h可以被看作是“记忆”,它包含了之前时间点上的相关信息

    • 输出y不仅由当前的输入所决定,还会考虑到之前的“记忆”

    • RNN在不同时刻共享同一组参数(U,W,V),加大的减少了需要训练和预估的参数量

    2. 深度RNN

    3. 双向RNN

    结构:

    优势:

    当需要判断一个词的语义时,需要从整个句子的角度进行判断,因此需要正向RNN接收所有输入后,再反向回顾整个句子的语义,从而判断该词语在本次输入(语句)中的语义。

    4. BPTT算法

    1. BP算法

      可能会出现梯度消失的问题。

    2. BPTT算法

    通过链式求导后

    三、循环神经网络的变种

    1. 传统RNN

    从上图中BPTT算法的链式求导过程中可得:

    下图红色为tan图像,绿色为tan的导数图像:

    可以得到:

    所以,传统的RNN很容易出现梯度消失/梯度爆炸现象。因此,针对以上现象,采取权重衰减/梯度截断进行改进。

    梯度消失会导致长时依赖问题,从而使得RNN随着时间间隔的不断增大,丧失学习到连接远距离的信息的能力。

    2. LSTM(Long Short-term Memory)长短期记忆模型

    LSTM拥有三个门(遗忘门,输入门,输出门),来保护和控制细胞状态

    • 遗忘门(forget gate):

      • Sigmoid函数的取值范围在0~1之间,因此利用遗忘门来描述允许有多少的量通过

      • 通过遗忘门来决定记忆的有无

    • **输入门(input gate):

      • 先通过Sigmoid决定什么信息需要更新,然后通过tanh层输出备选的需要更新的内容,然后加入新的状态中。
      • 0代表“不更新”,1代表“完全更新”
      • 通过输入门记住真正需要的内容
    • 输出门(output gate)

      • 通过Sigmoid来确定细胞状态的哪个部分将输出出去。然后,将细胞状态通过tanh进行处理并将它和Sigmoid门的输出相乘,最终仅仅会输出我们确定输出的那部分
      • 0代表”不输出“,1代表”完全输出“
      • 通过输出门,判断在做下面决策时有哪些真正需要的记忆,进行输出

    3. LSTM VS RNN

    • RNN和LSTM对记忆的处理方式不同

    • RNN的”记忆“在每个时间点被新的输入覆盖,LSTM的”记忆“是与新的输入相加(线性操作)

    • LSTM:如果前边的输入对Ct产生了影响,那这个影响会一直存在,除非遗忘门的权重为0

    • LSTM中的learning rate可以被尽量的设置小

    4. GRU

    下图为LSTM和GRU:

    差异:

    • GRU只有两个门,分别为重置门和更新门
    • 混合了细胞状态和隐藏状态

    相似:

    • 从t-1到t时刻的记忆的更新都引入加法
    • 可以防止梯度消失

    下图为LSTM和GRU的公式对比:

    问题:GRU中的公式取消了偏置项的计算,有什么好处?

    四、扩展

    1. Clockwise RNN(CW-RNN)

    相比较于RNN:

    • CW-RNN把隐层分成很多组,每组有不同的循环周期;有的周期是1(=普通RNN),有的周期更长(例如:从前两个时间步连接到当前时间步;不同周期的cell之间也有一些连接)
    • 如此,距离较远的某个依赖关系就可以通过周期较长的cell少数几次循环访问到,从而减少网络层数,容易学习

    2. 基于attention的RNN

    注意力机制

    示例如下:

    当翻译某个词的时候,关注点不一样

    1. 把feature map和权重相乘,进行加和(每个channel进行一遍)
    2. 通过h1生成一个词,计算概率(第一次)
    3. 再经过h1在生成一个新的权重,然后再和feature map相乘,从而改变权重,达到改变注意力的目的。
  • 相关阅读:
    46. Permutations 全排列,无重复
    243. Shortest Word Distance 最短的单词index之差
    171. Excel Sheet Column Number Excel列号转数字
    179. Largest Number 用数组中的元素凑一个最大数字
    49. Group Anagrams 多组anagram合并
    电话号码的字母组合(leetcode17)
    最接近的三数之和(leetcode16)
    c#之dynamic类型通过属性获取值(get value by key)
    三数之和(leetcode15)
    java-list与array转换
  • 原文地址:https://www.cnblogs.com/cch-EX/p/13541279.html
Copyright © 2011-2022 走看看