RNN-入门教程

【应用】RNN的常见应用结构

作者 : 老饼 发表日期 : 2023-04-07 17:21:54 更新日期 : 2025-04-20 14:20:46
本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com



RNN循环神经网络在日常使用中,一般有许多变体结构,以适用于日常的应用需求

本文讲解RNN的几种常见应用结构及应用场景,包括NvN结构、1vN结构、Nv1结构、NvM结构等等

通过本文,可以快速了解RNN的日常应用结构各有哪些,以及它们的结构形式和应用场景




      01. RNN的基本结构(NvN)      





本节介绍RNN循环神经网络在实际应用时的各种模型结构





    RNN的基础模型与NvN结构      


RNN的基础模型结构
一个基础的RNN模型结构,一般以时序来展示,它的模型结构以下:
   
   上图就是一个RNN(输入序列长度为3)的时序展开结构图
从图中可以看到,每一个时刻的隐层同时接收与上一时刻的隐层作为输入
然后,时刻的隐层加权后就得到时刻的输出,具体如下:
          
                             
           其中:  
       
:隐层的激活函数,一般取为tanh或ReLu函数
 
:输入层到隐层的权重              
              
:上一时刻的隐层到当时时刻隐层的权重           
 
:网络隐层的阈值                  
 
:网络隐层到输出层的权重       
 
:网络隐层到输出层的阈值        
 
按上述公式循环计算,就可以得到每一时刻的输出
     其中,隐层的初始值一般取为0,即
什么是RNN的NvN模型结构
RNN的输入序列长度为N时,输出序列长度也为N,因此,RNN模型又称为RNN-NvN模型
 Elman最初提出时更多是为了证明这一种网络具有序列记忆性,并非为实际应用场景而诞生,
而NvN模型在实际中的应用场景很少,很少.... 也正因为如此,产生了以下各种变体以解决更多实际问题








      02. RNN的1vN与Nv1结构      





本节介绍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个输出







       03. RNN的NvM模型结构      





本节介绍什么是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 





内容纠正