• 循环神经网络RNN


    循环神经网络(Recurrent Neural Networks)

    RNNs 主要处理时序数据,比如一句话,词与词之间都是有顺序的,因此经常用在NLP领域,比如机器翻译,情感分析等。

    一般的RNNs有多个FNN横向连接而成,其中中间有个rnn-cell, 存储的是前面序列的隐含状态s。

    最基本的形式,如下图 就相当于三层,第一层是输入x到rnn-cell的连接,第二层是rnn-cell,得到的是隐藏状态s,第三层是rnn-cell到输出o的连接层。

    循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵W就是隐藏层上一次的值作为这一次的输入的权重。

    把上面的图展开,可以看作是按时间序列展开, 循环神经网络也可以画成下面这个样子

    这个网络在t时刻接收到输入Xt之后,隐藏层的值是St,输出值是ot。关键一点是,st的值不仅仅取决于Xt,还取决于St−1。

    使用下面的公式来表示循环神经网络的计算方法:

    $o_t=g(Vs_t)$ (1)

    $s_t=f(Ux_t+Ws_{t-1})$(2)

    式1是输出层的计算公式,输出层是一个全连接层,也就是它的每个节点都和隐藏层的每个节点相连。V是输出层的权重矩阵,g是激活函数。

    式2是隐藏层的计算公式,它是循环层。U是输入x的权重矩阵,W是上一次的值st−1作为这一次的输入的权重矩阵,f是激活函数。

    从上面的公式可以看出,循环层和全连接层的区别就是多了一个权重矩阵W。
    若反复把式2代入带式1,我们将得到:

    $o_t=g(Vs_t)=g(Vf(Ux_t+Ws_{t-1}))$

    $=g(Vf(Ux_t+Wf(Ux_{t-1}+Ws_{t-2 })))$

    $=g(Vf(Ux_t+Wf(Ux_{t-1}+Wf(Ux_{t-2}+Ws_{t-3 }))))$

    从上面可以看出,循环神经网络的输出值ot,是受前面历次输入值xt、xt−1、xt−2…的影响的,这就是为什么循环神经网络可以往前看任意多个输入值的原因。

  • 相关阅读:
    汉罗塔问题
    有进度条圆周率计算
    turtle库笔记
    OwnCloud建立属于自己私有的云存储网盘
    HTTP 常见请求状态码
    虚拟机部署Kubernetes集群
    常用文件头(16进制)
    配置LAMP环境
    Linux系统日志
    Java的socket通信与操作系统的SocketAPI关系探究
  • 原文地址:https://www.cnblogs.com/xmeo/p/7235074.html
Copyright © 2020-2023  润新知