循环神经网络RNN(很简洁的讲解)

本文介绍了循环神经网络(RNN)的基本概念及其在处理序列数据方面的优势。RNN通过在不同时间步之间共享参数来实现对不同长度序列的有效处理。文中还详细解释了RNN的各种应用场景,包括文本生成、机器翻译等。

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

介绍

循环神经网络(recurrent neural network)或 RNN (Rumelhart et al., 1986c)
是一类用于处理序列数据的神经网络。就像卷积网络是专门用于处理网格化数据 X(如一个图像)的神经网络, 循环神经网络是专门用于处理序列 x(1)x(1), …. x(T)x(T) 的神经网络。正如卷积网络可以很容易地扩展到具有很大宽度和高度的图像,以及处理大小可变的图像, 循环网络可以扩展到更长的序列(比不基于序列的特化网络长得多),大多数循环网络也能处理可变长度的序列。

从多层网络出发到循环网络,我们需要利用上世纪 80 年代机器学习和统计模
型早期思想的优点:在模型的不同部分共享参数。 参数共享使得模型能够扩展到不同形式的样本(这里指不同长度的样本)并进行泛化。如果我们在每个时间点都有一个单独的参数,我们不但不能泛化到训练时没有见过序列长度,也不能在时间上共享不同序列长度和不同位置的统计强度。当信息的特定部分会在序列内多个位置出现时,这样的共享尤为重要。例如,考虑这两句话: “I went to Nepal in 2009’’ 和“In 2009, I went to Nepal.” 如果我们让一个机器学习模型读取这两个句子,并提取叙述者去Nepal的年份,无论 “2009 年’’ 是作为句子的第六个单词还是第二个单词出现,我们都希望模型能认出 “2009 年’’ 作为相关资料片段。假设我们要训练一个处理固定长度句子的前馈网络。传统的全连接前馈网络会给每个输入特征分配一个单独的参数,所以需要分别学习句子每个位置的所有语言规则。相比之下, 循环神经网络在几个时间步内共享相同的权重,不需要分别学习句子每个位置的所有语言规则。

RNN模型

话不多说了,直接上图吧!清晰明了~~~

这里写图片描述
这里写图片描述

RNN模型计算公式:

这里写图片描述

其中:

  • a(t)a(t)为中间结果
  • h(t)h(t)为隐藏层
  • o(t)o(t)为未归一化的输出层
  • y^(t)y^(t)为归一化的输出层

注意:其中的参数的偏置向量 b 和 c 连同权重矩阵 U、 V 和 W,分别对应于输入到隐藏、隐藏到输出和隐藏到隐藏的连接,上述公式种的W、U、V在所有序列数据上共享。

梯度更新

这里写图片描述

注意:对于U、W、V来说,它们每次的总更新是所有序列上数据对U、W、V更新的叠加。

RNN不同的内部结构

RNN内部分为几种连接方式,一对一、一对多、多对一、多对多,具体结构如下图所示:

这里写图片描述

一对多方式:可用于图片字幕的生成,即输入为图片,输出为一段文本或文字序列。
多对一的方式:常用于文本生成图片或情感分析。
左边的多对多的方式:常用于机器翻译(即将中文语句翻译为英文)。
右边的多对多方式:常用于视频分类,即为每一帧打上标签或标注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值