RNN!不要!不要!

1 RNN的结构

1.1 基础结构示意

核心就是:下一个的输入蕴含了上一个输出的信息
在这里插入图片描述

符号说明:
a^<0>等表示的激活值(是一个一维的向量,存储的是前面词的相关信息)
x^<1>等表示的是词向量(是对应字典的one-Hot形成的一维向量)
y^<1>等是预测输出(也是一维的向量,表示这词是否是人名的一部分)

具体的流程: (以仅使用前面词的信息为例)——》要使用后面词的信息,就双向循环神经网络(BRNN)

  1. 首先初始化激活向量a^<0>
  2. 然后对输入的激活向量a^<0> 和 词向量 x^<1> 利用他们对应的共享矩阵 Waa 和 Wax 和 偏置ba ——》通过tanh
    计算激活向量a^<0>
  3. 最后利用输出的矩阵Wya 和 偏置by 和激活函数 获得对应的y^<1>
  4. 依次重复上面的步骤

1.2 RNN 前向传播示意图:

在这里插入图片描述
一般开始先输入𝑎<0>,它是一个零向量。接着就是前向传播过程,先计算激活值𝑎<1>,然后再计算𝑦^<1>。
在这里插入图片描述

2 RNN的梯度消失和梯度爆炸

原因
DNN中各个权重的梯度是独立的,该消失的就会消失,不会消失的就不会消失。

RNN的特殊性在于,它的权重是共享的。

当距离长了,最前面的导数就会消失或爆炸,但当前时刻整体的梯度并不会消失,因为它是求和的过程。

RNN 所谓梯度消失的真正含义是,梯度被近距离梯度主导,导致模型难以学到远距离的依赖关系。

解决方案
LSTM长时记忆单元

3 RNN的演化

3.1 GRU 单元

The cat, which already ate ……, was full.

由于RNN的缺陷——不擅长捕抓长期效应 ,提出了GRU单元,用来改变了 RNN 的隐藏层,使其可以更好地捕捉深层连接,并改善了梯度消失问题。

在这里插入图片描述

核心是通过“两个门”决定对前面传入的——》激活向量,到底更不更新!

符号说明:
𝑐̃^<𝑡>表示的是如果进行更新的–》激活向量
𝛤u 表示的是这个激活向量到底更不更新
𝛤𝑟 表示的是输入下一层的激活向量𝑐<𝑡>,与将更新的激活向量𝑐̃<𝑡>和上一层的激活向量𝑐^<𝑡−1>的相关性
𝑐^<𝑡> 下一层输入的激活向量

具体的流程:
【1 更新门】首先是对于前面输入的激活向量c<t-1>,以及该层的词向量x,使用激活门的权重矩阵Wu 和偏置 bu 计算对对应的值,然后将该值映射到sigma(0,1)激活函数中,决定前面的激活向量更不更新在这一层中(这一层的激活向量)

【2 相关性门】𝛤𝑟门告诉你计算出的下一个𝑐<𝑡>的候选值𝑐̃<𝑡>跟𝑐^<𝑡−1>有多大的相关性。

【3 𝑐̃^<𝑡>】 计算候选值𝑐̃^<𝑡>

【4 𝑐<𝑡>】如果更新门为0,𝑐<𝑡> = 𝑐<𝑡-1>;如果跟新门为1,𝑐<𝑡> = 𝑐̃^<𝑡>

3.2 LSTM

结构

相比GRu多了一个遗忘门
在这里插入图片描述
在这里插入图片描述

各模块可以使用其他激活函数吗?
sigmoid符合门控的物理意义

tanh在-1到1之间,以0为中心,和大多数特征分布吻合,且在0处比sigmoid梯度大易收敛

一开始没有遗忘门,也不是sigmoid,后来发现这样效果好

relu的梯度是0/1,1的时候相当于同一个矩阵W连成,仍旧会梯度消失或爆炸的问题

综上所述,当采用 ReLU 作为循环神经网络中隐含层的激活函数 时,只手言当 W的取值在单位矩阵附近时才能取得比较好的效果,因此 需要将 W初始化为单位矩阵。实验证明,初始化 W为单位矩阵并使用 ReLU 激活函数在一些应用中取得了与长短期记忆模型相似的结果

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值