本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com
RNN循环神经网络在日常使用中,一般有许多变体结构,以适用于日常的应用需求
本文讲解RNN的几种常见应用结构及应用场景,包括NvN结构、1vN结构、Nv1结构、NvM结构等等
通过本文,可以快速了解RNN的日常应用结构各有哪些,以及它们的结构形式和应用场景
本节介绍RNN循环神经网络在实际应用时的各种模型结构
RNN的基础模型与NvN结构
RNN的基础模型结构
一个基础的RNN模型结构,一般以时序来展示,它的模型结构以下:
![]()
上图就是一个RNN(输入序列长度为3)的时序展开结构图
从图中可以看到,每一个时刻的隐层同时接收与上一时刻的隐层作为输入
然后,时刻的隐层加权后就得到时刻的输出,具体如下:
其中:
:隐层的激活函数,一般取为tanh或ReLu函数
:输入层到隐层的权重
:上一时刻的隐层到当时时刻隐层的权重
:网络隐层的阈值
:网络隐层到输出层的权重
:网络隐层到输出层的阈值
按上述公式循环计算,就可以得到每一时刻的输出
其中,隐层的初始值一般取为0,即
什么是RNN的NvN模型结构
RNN的输入序列长度为N时,输出序列长度也为N,因此,RNN模型又称为RNN-NvN模型
Elman最初提出时更多是为了证明这一种网络具有序列记忆性,并非为实际应用场景而诞生,
而NvN模型在实际中的应用场景很少,很少.... 也正因为如此,产生了以下各种变体以解决更多实际问题
本节介绍RNN循环神经网络在实际应用时的各种模型结构
RNN神经网络-Nv1结构
Nv1是什么
Nv1是指模型的输入序列为任意长度,输出序列长度固定为1
举例:判断序列的类别,例如输入一个词语,输出词语的情感类别
RNN-Nv1结构介绍
RNN的Nv1模型是NvN的变种,它其实就是取消了NvN在过程中的输出,只输出最后一个结果
RNN-Nv1模型的结构示图如下:
![]()
RNN-Nv1与NvN的区别在以下两点:
👉1. 输出个数的差异
在模型预测时,Nv1只在最后一时刻才计算输出层的结果,而NvN是每一时刻都计算输出层的结果
👉2. 损失函数的差异
NvN的损失函数纳入了每一时刻的输出误差,而Nv1只考虑最后一时刻的输出误差
RNN神经网络-1vN结构
1vN是什么
1vN是指模型的只有首时刻的输入,输出时刻长度固定为N
举例:输入首时刻的状态,然后预测未来N个时刻的值
RNN-1vN结构介绍
RNN的1vN模型则是在NvN的基础上,去掉除首时刻外其它时刻的输入,
![]()
也就是它只在第一时刻进行输入,然后每一次迭代就得到一个输出,迭代n次,得到n个输出
本节介绍什么是seq2seq问题,以及RNN解决seq2seq问题时的NvM结构
关于seq2seq和Encoder-Decoder
什么是seq2seq
对于"输入一个不限长度的序列,输出另一个不限长度的序列"的模型,被称为seq2seq模型
例如中英翻译模型,输入的中文是不定长的,而输出的英文也是不定长的
什么是Encoder-Decoder模型
Encoder-Decoder的思想就是把输入信息先转换为一组编码信息,再把编码信息转换为输出信息
Encoder-Decoder模型是解决Seq2Seq问题的一种常用方法,
先将N个输入转换为编码,需要注意的是,编码C需要承载所有输入的信息(包括序列信息)
然后再使用Decoder将编码信息C按顺序解码出M个输出,从而解决Seq2Seq问题
RNN的NvM结构(Encoder-Decoder)
RNN-Encoder-Decoder模型介绍
RNN-NVM模型只需把RNN-Nv1模型作为Encoder,把RNN-1vM模型作为Dncoder,就可以解决NvM的seq2seq问题
RNN-NVM的具体结构如下:
![]()
这仅仅是RNN的一种NvM的结构形式,还有其它很多类似的变种,
例如在Nv1中抛弃最后的输出层,把隐层直接作为1vM的输入,等等
在2014年GRU神经网络的一文《Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation》中
就使用了RNN-Encoder-Decoder模型,解决NvM的seq2seq问题
好了,以上就是RNN在实际应用中常见的几种经典模型结构了~
End