笔记(总结)-循环神经网络

深度学习笔记(四)——循环神经网络(Recurrent Neural Network, RNN) 阅读详情

起源

全连接神经网络能够很好地拟合复杂的样本特征,卷积神经网络能很好地建模局部与全局特征的关系。但它们都只能处理定长的输入、输出,而自然语言的处理对象一般是变长的语句,句子中各元素出现的顺序先后暗含着时序关系,循环神经网络(Recurrent Neural Network,下称RNN)能够较好地处理这种关系。


基本结构

RNN的基本思想是:将处理对象在时序上分解为具有相同结构的单元,单元间有着时序关联,即本单元接收上一时序对应单元的输出,并把计算结果输出到下一时序对应的单元。网络结构由这样一系列的单元构成,能够在时序上进行展开。
这里写图片描述
可以看到每一时刻,隐层不仅接收输入,还接收了上一时刻隐层的输出,综合计算得到该时刻的隐层输出。公式化过程如下:

ht={0,                    t=0f(xt,ht−1),    otherwiseht={0,                    t=0f(xt,ht−1),    otherwise

给出框架图和具体化公式如下:
这里写图片描述

ht=f(Wxt+Uht−1+b)yt=softmax(Vht)ht=f(Wxt+Uht−1+b)yt=softmax(Vht)

RNN每个时刻都有输入、输出。由公式可以看到,每个时刻的输入(初始时刻必须有输入)、输出其实也是可以去除的,这样就得到了以RNN为基础的不同类型的网络架构:
这里写图片描述
其中one to one架构就退化为了普通的前馈神经网络架构。而其它不同的变种可用于不同的时间序列相关场景,比如对齐的many to many可以用来做序列标注,针对当前时刻的词进行标注;错开的many to many适合做机器翻译,当源语句全部输入网络后,才开始逐步翻译过程。


RNN的训练

由于RNN涉及时间序列的运算,我们使用BPTT(Back Propagation Through Time)进行参数更新,即梯度需要沿着时间序列回流到最初的时间点。
这里写图片描述

假设我们采用对齐的many to many架构,每个时刻都有一个监督值tttt,损失为JtJt,定义损失函数如下:

Jt=−ttlogytJ=∑t=1TJt=−∑t=1TttlogytJt=−ttlogytJ=∑t=1TJt=−∑t=1Tttlogyt

其中ytyt定义如上,则有JJ关于V的梯度为:

∂J∂V=∑t=1T∂Jt∂V∂Jt∂V=∂Jt∂yt∂yt∂zt∂zt∂ht,     yt=softmax(zt),  zt=Vht∂J∂V=∑t=1T∂Jt∂V∂Jt∂V=∂Jt∂yt∂yt∂zt∂zt∂ht,     yt=softmax(zt),  zt=Vht

JJ关于U的梯度为:

∂Jt∂U=∂Jt∂ht∂ht∂U∂Jt∂U=∂Jt∂ht∂ht∂U

由于htht是ht−1,Uht−1,U的函数,而ht−1ht−1又是ht−2,Uht−2,U的函数…所以htht是关于ht−1,ht−2,...,h1,Uht−1,ht−2,...,h1,U的函数,可以得到(注:htht的链式求导展开,建议手算一遍):

∂ht∂U=∑tk=1∂ht∂hk∂hk∂U∂ht∂U=∑k=1t∂ht∂hk∂hk∂U

其中:

∂ht∂hk=∏ti=k+1∂hi∂hi−1=∏ti=k+1UTdiag[f′(hi−1)]∂ht∂hk=∏i=k+1t∂hi∂hi−1=∏i=k+1tUTdiag[f′(hi−1)]

则有:

∂J∂U=∑Tt=1∂Jt∂ht∑tk=1{∏ti=k+1UTdiag[f′(hi−1)]}∂hk∂U∂J∂U=∑t=1T∂Jt∂ht∑k=1t{∏i=k+1tUTdiag[f′(hi−1)]}∂hk∂U

由于WW也在f函数中,类似于UU,我们可以得到:

∂J∂W=∑t=1T∂Jt∂ht∑k=1t{∏i=k+1tUTdiag[f′(hi−1)]}∂hk∂W

可以看到,∂J∂U∂J∂U和∂J∂W∂J∂W两部分都涉及到了连乘,当连乘项数很多,且乘子UTUT<1时,梯度便会接近于0;而当乘子UTUT>1时,梯度便会接近于无穷,这就是RNN的梯度消失/梯度爆炸的问题。这导致RNN只能学习到短周期的关系,当周期过长(连乘项很多),便会导致学习过程出问题,因此也叫长期依赖问题。


RNN的改进方案——LSTM、GRU

长短时记忆神经网络(Long Short-Term Memory Neural Network,下称LSTM)是RNN的一个变体,可以有效地解决简单循环神经网络的梯度消失/爆炸问题。LSTM 模型的关键是引入了一组记忆单元(Memory Units),允许网络学习何时遗忘历史信息,何时用新信息更新记忆单元。在时刻 t 时,记忆单元ctct记录了到当前时刻为止的所有历史信息,并受三个“门”控制:输入门 itit , 遗忘门ftft和输出门otot 。三个门的元素的值在[0, 1] 之间。LSTM与原始RNN对比如下:
这里写图片描述
可以直观感受到,原始RNN中,梯度流向的路线是相对单一的,而在LSTM中通过三个门的控制,使得梯度流向更加得复杂,公式如下:

ft=σ(Wfxt+Ufht−1+bf)it=σ(Wixt+Uiht−1+bi)ot=σ(Woxt+Uoht−1+bo)ct−=tanh(Wcxt+Ucht−1)ct=ft⊙ct−1+it⊙ct−ht=ot⊙tanh(ct)ft=σ(Wfxt+Ufht−1+bf)it=σ(Wixt+Uiht−1+bi)ot=σ(Woxt+Uoht−1+bo)ct−=tanh(Wcxt+Ucht−1)ct=ft⊙ct−1+it⊙ct−ht=ot⊙tanh(ct)

遗忘门ftft控制每一个内存单元需要遗忘多少信息,输入门itit控制每一个内存单元需要加入多少新的信息,输出门otot控制每一个内存单元输出多少信息,σσ是logsitic函数。那么这样改进有什么好处呢?以∂h∂U∂h∂U为例,转化为求∂h∂c∂h∂c和∂h∂o∂h∂o。ctct是由两部分求和构成,避免了在求导连乘时过大或过小的情况,otot同理。通过引入门控制,将梯度分流到了不同的部分,也就极大地降低了梯度消失/爆炸出现的风险。

可是LSTM在实际使用过程中带有大量的参数,且其中门的功能多少有重叠。既想要在保持效果的基础上加快训练速度,又要杜绝梯度消失/爆炸的出现。于是就有了LSTM的简化版本——门限循环单元(Gated Recurrent Unit,下称GRU)。GRU将输入门和遗忘门合并成一个门:更新门(Update Gate),同时还合并了记忆单元ctct和隐层输出htht,更新门ztzt控制当前的状态需要遗忘多少历史和接收多少新信息。重置门rtrt用来控制接收信息中有多少时来自于历史信息。GRU视图与公式如下:
这里写图片描述


基于RNN模型基础单元衍生出的LSTM、GRU,能够很好地服务于上文提到的几种架构。在解决了梯度消失/爆炸的问题后,RNN-Based模型能够很好地处理较长的序列。本篇到此为止,就不再细致讲具体应用了。

【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN) 【李宏毅机器学习笔记】1、回归问题(Regression) 【李宏毅机器学习笔记】2、error产生自哪里? 【李宏毅机器学习笔记】3、gradient descent 【李宏毅机器学习笔记】4、Classification 【李宏毅机器学习笔记】5、Logistic Regression 【李宏毅机器学习笔记】6、简短介绍Deep Learning 【李宏毅机器学习笔记】7、反向传播... 阅读详情

相关推荐

吴恩达深度学习笔记——循环神经网络(RNN)

目录 一、为什么使用序列模型(Why sequence models) 二、数学符号(Notation) 三、循环神经网络(Recurrent neural network) 四、通过时间的反向传播(Backpropagation through time) 五、不同类型的循环神经网络(Different types of RNNs) 六、语言模型和序列生成(Language mode...

qq_35175666的博客 1955

一文搞懂全连接算法和它的作用

全连接层(Fully Connected Layer),有时也被叫作密集层(Dense Layer)。之所以这么叫,是因为这一层的每个神经元都与前一层的每个神经元连接在一起,形成了一个全连接的网络结构,如下所示,每个笑脸都与前一层的所有笑脸相连。这种全连接的方式与卷积和池化不同,卷积和池化是通过固定大小的卷积核或池化窗口在输入上移动,以便有效地捕捉局部特征。因此,"全连接"强调了这一层中的神经元与前一层中的所有神经元之间的连接,与卷积和池化层的局部连接方式形成对比。

通俗易懂的 AI 技术 2076

PyTorch笔记 - Recurrent Neural Network(RNN) 循环神经网络

机器翻译:sequence to sequence,AED,Attention Based Encoder-Decoder。诗歌生成任务:one -> many。情感分类任务:many -> one。RNN - PyTorch函数。输入:input和h_0,

AGI 962

循环神经网络总结

DNN及DNN的特例CNN的模型都是前向反馈的,模型的输出和模型本身没有关联关系。循环神经网络(Recurrent Neural Networks ,RNN)是一种输出和模型间有反馈的神经网络。 1. RNN概述 DNN和CNN中,训练样本的输入和输出是比较的确定的。但当训练样本输入是连续的长短不一的序列,如基于时间的序列:一段段连续的语音,一段段连续的手写文字时,很难直接将其拆分成一个个独立...

Yasin的博客 5026

深入解析UEFI PEI阶段:PeiCore的三次调用与内存管理机制

本文深入解析UEFI启动流程中的PEI阶段,重点探讨PeiCore的三次调用与内存管理机制。详细介绍了PeiCore在临时内存中的初始化、堆栈切换至永久内存的过程,以及最终交接给DXE阶段的关键步骤,为开发者提供调试技巧与实战案例,助力解决UEFI启动问题。

weixin_28452161的博客 649

可变形卷积(Deformable Conv)原理解析与torch代码实现

图6为可变形卷积示意图。图1所示为普通卷积在输入特征图上进行卷积计算的过程,卷积核大小为3*3,在输入特征图尺寸为7*7上进行卷积,将卷积核权重与输入特征图对应位置元素相乘并求和得到输出特征图元素,按一定方式滑动窗口就能计算得到整张输出特征图。图6所示,在input feature map上普通卷积操作对应卷积采样区域是一个卷积核大小的正方形(绿框),而可变形卷积对应的卷积采样区域为一些蓝框表示的点,这就是可变形卷积与普通卷积的区别。先来一张图感受一下,图3为标准卷积与可变形卷积的卷积示例。

panghuzhenbang的博客 5万+

深度学习 实验七 循环神经网络

之前的神经网络(比如全连接网络和卷积神经网络)都有一个主要特点,那就是它们都没有记忆。它们单独处理每个输入,在输入和输入之间没有保存任何状态。 与此相反,当人在阅读这个句子时,是一个词一个词地阅读(或者说,眼睛一次扫视一次扫视地阅读),同时会记住之前的内容,这让你能够动态理解这个句子所传达的含义,以渐进的方式处理信息,同时保存一个关于所处理的内部模型,这就是循环神经网络,它广泛应用于自然语言处理中,本实验会介绍简单的循环神经网络(SimpleRNN)来处理文本数据,然后改进网络使用LSTM神经网络对比效果。

渣渣的夏天 4064

Navicat Premium 12 永久激活保姆级教程(附最新补丁下载)

本文详细介绍了Navicat Premium 12的高效使用方法,从安装配置到高级功能应用,帮助用户充分发挥这款数据库管理工具的全部潜力。内容包括数据库连接管理、数据查询与编辑、数据同步与结构对比等核心功能,以及性能优化和最佳实践建议,提升数据库管理效率。

weixin_28834765的博客 643

循环神经网络总结整理(RNN、LSTM、GRU)

在经过了一个周期迭代之后,猛地发现不记录一些东西是真的不行的,只有将知识娓娓道来,把自己当作一个教师的身份整理这些思路,才算真正的掌握了。故,将这一章的知识点整理记录下来,以供自己学习理解,查阅运用。 在前馈神经网络中,信息的传递是单向的,即网络的输出只依赖于当前的输入。但是在很多现实的任务中,网络的输出不仅和当前的输入有关还和之前的输入(当前的状态),甚至是以后的输入有关, 另外前馈神经网络难以处理时序数据,如视频、语音、文本,这类都是一些不固定长度的数据, 而前馈神经网络输入输出都是固定长度的..

dianyanxia的博客 1万+

将CityScapes数据集转换为COCO格式的实例分割数据集

##¥##2019年结束前最后两小时,写出本年度最后一篇博客,不是博主没地方去跨年,实在是Coding乐趣无穷ahhhh ##¥## COCO数据集是研究实例分割的通用数据集,但是针对道路环境的数据较少,对于自动驾驶和移动机器人的应用并不适配。而提供道路环境的实例分割数据的数据集目前有KITTI、CityScapes、Apllo等,CityScapes算是应用较广,数据质量较高的一个,所以,本篇...

陆羽飞的博客 9940

lego-loam featureAssociation 源码注释(五)

上一次我们已经看完了特征提取,这次我们进入特征匹配的内容!!!systemInitedLM的初始值为false。

Joeybee的博客 889

LSTM(循环神经网络RNN)dropout技术——Recurrent Neural Network regularization阅读笔记

Recurrent Neural Network regularization 简单回顾LSTM 照例先规定符号含义,我们此处默认指多层RNN网络。规定hlt∈Rnhtl∈Rnh^l_t\in{R^n}表示第lll层ttt时间步的因状态,维度为n,当l=0l=0l=0时,h0tht0h^0_t表示ttt时刻的外部输入;因为LSTM网络中使用全连接网络作为常规操作,全连接的数学表达为Wx+b...

Blssel的博客 1万+

GNSS数据处理(一)——开源软件RTKLIB与G-Nut/Anubis实战入门

本文详细介绍了GNSS数据处理的开源软件RTKLIB与G-Nut/Anubis的实战入门指南。从软件安装、数据获取到静态短基线解算,逐步讲解操作技巧与常见问题排查,帮助测绘与地质监测人员快速掌握GNSS数据处理技术,提升工作效率。

weixin_30733003的博客 134

学习笔记-PyTorch-RNN循环神经网络

循环神经网络(RNN)利用序列中前后元素的依赖关系,通过循环连接来传递信息,使得网络能够记忆前后的信息并用于后续的计算。

coder_links的博客 1357

modbus

从机地址 功能码 起始地址高位 起始地址低位 数量高位 数量低位 字节数 0001H高位 0001H低位 0002H高位 0002H低位 CRC高位 CRC低位。每个输入寄存器的长度为2个字节。其中,CDH对应线圈0013H到001AH的内容,01H对应线圈001B到001CH的内容,未使用位用0填充。从机地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位。从机地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位。

lunhuicnm的博客 9750

搭建Dzzoffice 教程

通过以上步骤,您已经成功配置了WEB环境,安装了DzzOffice,并完成了系统设置和应用安装。1.安装包的设置默认是系统盘之外的第二个盘,没有其他盘符的时候则安装在C盘,当主机盘符只有C盘可用的时候,安装时不要使用U盘,否则可能误装到U盘当中。4.如果之前已经安装,再次安装时请确保上次安装已经卸载或者所有文件可读,否则请备份文件,卸载之后再安装。在其他安装环境中,我没有相关的使用经验。3. 保证安装路径是纯净的,安装路径下不能有已安装的V8版本,若重新安装,请选择其它路径。

小胡的博客 4950

【深度学习笔记】6_2 循环神经网络RNN(recurrent neural network)

注:本文为开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图。

RIKI_1 1165

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【深度学习|学习笔记】循环神经网络(Recurrent Neural Network, RNN)详解,附代码。

【深度学习|学习笔记】循环神经网络(Recurrent Neural Network, RNN)详解,附代码。

2401_89898861的博客 928

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【Recurrent Neural Network(RNN)】循环神经网络——李宏毅机器学习阅读笔记

RNN LSTM

久蔡合子 1065

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

RNN(Recurrent Neural Network)循环神经网络学习笔记

1.什么是序列数据 (1)例如股票中的走势,涨跌数据: (2)视频中连续图像: (3)文本序列: 2.什么是循环神经网络: 循环神经网络:隐藏层的节点之间有连接,是主要用于对序列数据进行分类,预测等处理的神经网络。 RNN序列处理 基本RNN计算过程 其中激活函数tanh是为了对括号内计算得到的数值进行规范化,如希望规范化至(-1,1)之间,则使用tanh函数。 ...

weixin_44031260的博客 594

莫烦pytorch学习笔记(十二)——循环神经网络RNN(Recurrent Neural Network)

高级神经网络结构——循环神经网络RNN 序列数据 我们想象现在有一组序列数据 data 0,1,2,3. 在当预测 result0 的时候,我们基于的是 data0, 同样在预测其他数据的时候, 我们也都只单单基于单个的数据. 每次使用的神经网络都是同一个 NN. 不过这些数据是有关联 顺序的 , 就像在厨房做菜, 酱料 A要比酱料 B 早放, 不然就串味了. 所以普通的神经网络结构并不能让 ...

liuhongkai111的博客 1188

2020李宏毅机器学习笔记— 9. Recurrent Neural Network(RNN循环神经网络)

文章目录摘要Example ApplicationSlot FillingRecurrent Neural Network(RNN) 摘要 Example Application Slot Filling Recurrent Neural Network(RNN)

weixin_44790306的博客 1266

笔记:ML-LHY-21: Recurrent Neural Network(RNN) 循环神经网络

有这么一个任务例子: 上图假设是一个订票系统上,输入 “Arrive Taipei on November 2nd” ,我们设置几个槽位(Slot),希望算法能够将关键词’Taipei’放入目的地(Destination)槽位,将November和2nd放入到达时间(Time of Arrival)槽位,将Arrive和on放入其他(Other)槽位,实现对输入序列的一个归类,以便后续提取相应信息。这个过程称为槽位填充(Slot Filling) 用前馈神经网络(Feedforward Neural Ne

upup 433

循环神经网络RNN和长短期循环神经网络LSTM理论学习笔记

RNN和LSTM理论学习笔记 出现原因:多层全连接的神经网络或者卷积神经网络只能处理当前状态。 时序相关的问题:自然语言处理,视频图像处理、股票交易信息处理等。 循环神经网络RNN(Recurrent Neural Network) 类型: (1)单向神经网络或者双向神经网络 (2)循环神经网络和深度循环神经网络 作用:处理短序列问题 X为输入层,是一系列的特征,用向量的形式表示...

qq_36635888的博客 601

Tensorflow笔记———循环神经网络RNN

如下图,左图一共要送入RNN层两组数据,每组数据经过一个时间步就会得到一个输出结果,每个时间步送入三个数值,则输入循环层的数据维度就是[2,1,3];然后在按照顺序将time输入RNN,得到输出02,这时我们会发现前面输入的what对此时输入的time产生了影响,如图中隐藏层中有一般是黑色即是第一步输入what产生的影响。通过上面的例子,我们已经发现,短期的记忆影响较大(如橙色区域),但是长期的记忆影响就很小(如黑色和绿色区域),这就是 RNN 存在的短期记忆问题。典型的时序数据像:股价,天气,文本。

qq_55977554的博客 1888
上一篇: 笔记(总结)-卷积神经网络
下一篇: 笔记(总结)-从马尔可夫模型到条件随机场-1
ZSYGOOOD
博客等级 码龄12年 113粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值