RNN,BRNN,LSTM,GRU,DRNN

细想BP算法,CNN 我们会发现, 他们的输出都是只考虑前一个输入的影响而不考虑其它时刻输入的影响, 比如简单的猫,狗,手写数字等单个物体的识别具有较好的效果. 但是, 对于一些与时间先后有关的, 比如视频的下一时刻的预测,文档前后文内容的预测等, 这些算法的表现就不尽如人意了.因此, RNN就应运而生了。

像图中这样,从左到右完成前向传播

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

def rnn_cell_forward(xt, a_prev, parameters):
    Wax = parameters["Wax"]
    Waa = parameters["Waa"]
    Wya = parameters["Wya"]
    ba = parameters["ba"]
    by = parameters["by"]
    
    # 下一个激活值
    a_next = np.tanh(np.dot(Waa, a_prev) + np.dot(Wax, xt) + ba)
    # 计算当前单元的输出
    yt_pred = rnn_utils.softmax(np.dot(Wya, a_next) + by) 
    # 保存反向传播需要的值
    cache = (a_next, a_prev, xt, parameters)
    
    return a_next, yt_pred, cache

通过时间的反向传播(Backpropagation through time)

在这里插入图片描述
在这里插入图片描述
RNN反向传播示意图:

在这里插入图片描述

def rnn_cell_backward(da_next, cache):
    # 获取cache 的值
    a_next, a_prev, xt, parameters = cache
    # 从 parameters 中获取参数
    Wax = parameters["Wax"]
    Waa = parameters["Waa"]
    Wya = parameters["Wya"]
    ba = parameters["ba"]
    by = parameters["by"]
    # 计算tanh相对于a_next的梯度.
    dtanh = (1 - np.square(a_next)) * da_next
    # 计算关于Wax损失的梯度
    dxt = np.dot(Wax.T,dtanh)
    dWax = np.dot(dtanh, xt.T)
    # 计算关于Waa损失的梯度
    da_prev = np.dot(Waa.T,dtanh)
    dWaa = np.dot(dtanh, a_prev.T)
    # 计算关于b损失的梯度
    dba = np.sum(dtanh, keepdims=True, axis=-1)
    # 保存这些梯度到字典内
    gradients = {"dxt": dxt, "da_prev": da_prev, "dWax": dWax, "dWaa": dWaa, "dba": dba}
    return gradients

循环神经网络的梯度消失和爆炸问题

梯度爆炸基本上用梯度修剪就可以应对,但梯度消失比较棘手。下面我们看GRU,门控循环单元网络,这个网络可以有效地解决梯度消失的问题,并且能够使你的神经网络捕获更长的长期依赖。

GRU单元(Gated Recurrent Unit(GRU))

重点来啦!

在这里插入图片描述
FULL GRU:

在这里插入图片描述

长短期记忆(LSTM(long short term memory)unit)
LSTM是一个比GRU更加强大和通用的版本
LSTM前向传播图:

在这里插入图片描述
在这里插入图片描述
双向循环神经网络(Bidirectional RNN)
深层循环神经网络(Deep RNNs)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值