• Stanford NLP 第五课: RNN Vanishing Gradient Problems Details


    Recurrent Neural Network, 适用于序列建模。举一个粒子:

    很容易就知道短线上应该填 John。 如何建立一个模型来让机器学习这件事情呢? 如果用全连接网络, 那么输入就是短线前面的所有单词(首先将每一个单词向量化, 然后将所有单词concatenate在一起,形成一个向量, 作为网络的输入。 这样做的问题是参数量过大。 如果用卷积网络来做, 将所有的词向量拼接成一个矩阵, 作为网络的输入,这样做效果也不错, 但是相比于RNN, CNN在发现序列之间的关系可能要难一点。 现在就来揭开RNN神秘的面纱。

     左边是RNN环图, 右边是RNN的展开图。RNN的计算公式如下:

    可以看到RNN是个串行的结构, t时刻的计算依赖于t-1时刻的计算。需要注意的是, 不同的时刻之间共享所有权值, 包括Wh, We, U, b1, b2. 你要问我为什么不同的时刻之间共享权值 ?

    理由一:如果不共享权值, RNN的参数量会很大。序列长度越长, 参数量越多。共享权值起到了正则化的作用。

    理由二:共享权值可以看成是一种先验知识。科学家认为, 在处理每一个时刻的输入时, 用相同的权值就可以了。

    理由三:共享权值使得RNN可以灵活的处理任意长度的输入序列。以不变应万变。

    RNN的损失函数:

    为什么RNN存在梯度消失的问题 ?首先来推导RNN的反向传播公式。

     

     

    没有看懂? 没关系, 多看几遍, 在纸上推导几遍就懂了, 这个地方不难, 只要具备大学本科线性代数知识即可。

    下面是一个简单一点的例子, 说明RNN的梯度问题。

    注意, 以上全是标量。因为RNN共享权值, 会出现w的高次幂。

    梯度消失会引起什么问题?

     

      如图中画出的带箭头的红线所示, x(4)与x(1)之间的依赖关系通过

     

    来调整。很明显, 间隔的比较远的时候, 他们之间的依赖关系就比较难以调整。

  • 相关阅读:
    Maven 安装 / 常用配置 / 阿里maven中央仓库
    记录:框架
    Mysql配置文件详解 my.cof
    Vmware虚拟机设置静态IP地址
    虚拟机安装centos发现inet为127.0.0.1,导致Xshell连接不上
    Servlet小案例总结
    Win10 提升系统响应速度
    从顶端插入,滚动展示(Demo):
    eclipse +cygwin+C++
    大型网站技术学习-3. 容器Docker与kubernetes
  • 原文地址:https://www.cnblogs.com/yangkang77/p/9140728.html
Copyright © 2020-2023  润新知