深度学习-nlp-循环神经网络RNN--70


参考:https://zhuanlan.zhihu.com/p/30844905

1. 概述

输出会反馈到输入的神经网络:
循环神经网络(Recurrent Neural Networks ,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域。

在前面讲到的DNN和CNN中,训练样本的输入和输出是比较的确定的。但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不一,比如基于时间的序列:一段段连续的语音,一段段连续的手写文字。这些序列比较长,且长度不一,比较难直接的拆分成一个个独立的样本来通过DNN/CNN进行训练。

2. RNN的模型

简单的循环神经网络如,它由输入层、一个隐藏层和一个输出层组成:

如果把上面有W的那个带箭头的圈去掉,它就变成了最普通的全连接神经网络,
x是一个向量,它表示输入层的值(这里面没有画出来表示神经元节点的圆圈);
s是一个向量,它表示隐藏层的值(这里隐藏层面画了一个节点,你也可以想象这一层其实是多个节点,节点数与向量s的维度相同);

U是输入层到隐藏层的权重矩阵,
o也是一个向量,它表示输出层的值;
V是隐藏层到输出层的权重矩阵。
那么,现在我们来看看W是什么。循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。
关键一点是,S_t的值不仅仅取决于xt,还取决于S_t-1。
公式来表示循环神经网络的计算方法:

U矩阵是连接输入层m与隐藏层n之间的权重矩阵 U矩阵维度 mn
W矩阵是一个n
n的方阵 用于跟S_t-1相乘

m是x的长度也就是输入神经元的个数
n为隐藏神经元的个数

实际在实施的时候会将X_t 与 S_t-1进行拼接 得到 BS(m+n)的矩阵
将U跟W进行拼接得到 (m+n)
n的矩阵
再进行相乘 得到 BS*n 的S_t

如图:

总结一下:
之前DNN 只要X跟U矩阵相乘 只不过再多了个S_t-1跟W相乘

posted @ 2024-04-11 11:49  jack-chen666  阅读(5)  评论(0编辑  收藏  举报