循环神经网络Recurrent Neural Network的一些介绍

本文介绍了循环神经网络RNN的基本结构,包括N vs N、N vs 1、One vs N和N vs M等变体,重点讨论了Encoder-Decoder模型和Attention机制。此外,还详细讲解了LSTM网络,包括其解决长期依赖问题的核心思想、网络结构、遗忘门、输入门、输出门以及常见的LSTM变体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于前段时间在做有关RNN方面的实验,因此需要学习RNN的一些基本原理和知识。学习过程中看了莫凡的视频教程,读了RNN的综述论文也参考了一些博主写的关于RNN的文章。在这篇博文中我把我在这段时间学习到的有关RNN的内容进行一个整理。

1 经典RNN

1.1 RNN结构

1.1.1 N vs N

这是最经典的RNN结构。它的输入是x1,x2, … , xn,输出为y1, y2, … , yn,输入和输出序列必须要是等长的。由于这个限制的存在,经典RNN的适用范围比较小,但也有一些问题适合用经典的RNN结构建模,如:视频帧分类、Char RNN等。

1.1.2 N vs 1

有的时候,我们要处理的问题输入是一个序列,输出是一个单独的值而不是序列,只在最后一个h上进行输出变换就可以了:

这种结构通常用来处理序列分类问题。如输入一段文字判别它所属的类别,输入一个句子判断其情感倾向,输入一段视频并判断它的类别等等。

1.1.3 One vs N

输入不是序列而输出为序列,可以只在序列开始进行输入计算:

还有一种结构是把输入信息X作为每个阶段的输入:

这种1 VS N的结构可以处理的问题有:从图像生成文字(image caption),此时输入的X就是图像的特征,而输出的y序列就是一段句子;从类别生成语音或音乐等

1.1.4 N vs M

下面我们来介绍RNN最重要的一个变种:N vs M。这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。
原始的N vs N RNN要求序列等长,然而我们遇到的大部分问题序列不是等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。为此,Encoder-Decoder结构先将输入数据编码成一个上下文向量c:

得到c有多种方式,最简单的方法就是把Encoder的最后一个隐状态赋值给c,还可以对最后的隐状态做一个变换得到c,也可以对所有的隐状态做变换。
拿到c之后,就用另一个RNN网络对其进行解码,这部分RNN网络被称为Decoder。具体做法就是将c当做之前的初始状态h0输入到Decoder中:

还有一种做法是将c当做每一步的输入:

由于这种Encoder-Decoder结构不限制输入和输出的序列长度,因此应用的范围非常广泛,比如:
1 机器翻译。Encoder-Decoder的最经典应用,事实上这一结构就是在机器翻译领域最先提出的。
2 文本摘要。输入是一段文本序列,输出是这段文本序列的摘要序列。
3 阅读理解。将输入的文章和问题分别编码,再对其进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值