【机器学习】循环神经网络(一)

4015fd70e78b9fa4efbc236dd29db506.png

一、网络结构

2533b4a5523d724de9d8d997b2040b72.png

f2badd71c8f86c485c07af322b504249.png

2ab3e1ebd8edfaa13a0ba26f94da5448.png

efb6106a2f373ff6058eefd3a67719b7.png

RNN 处理输入序列时的信息流。 粗体箭头为各时间点信息流的活跃路径,虚线箭头显示当时不活动的连接。

一个简单RNN例子

RNN 不是一类网络,而是适用于不同问题的拓扑结构的集合。循环网络的一个有趣的方面是,有了足够的层和节点,它们是图灵完备的,这意味着它们可以实现任何可计算函数。

深层循环神经网络

64444c397feb8e482e7747aa4b22259f.png

da0b4fb2c2b6a5594cdaba201d872da8.png

三种构建深层循环网络的方案

402b3a0e9aae12a14c34921497f08ea9.png

d7f0cd2fb19d21cfc6b6118aecb928f5.png

二、网络的训练

ecea51de8b1f1ba74149ae08f6ca6971.png

循环神经网络的每个训练样本一般是一个序列,也就是一个有序的元素列表。例如,一个文本序列可以是一个单词列表,一个音频序列可以是一个声音信号的采样点列表,一个视频序列可以是一个图像帧的列表,等等。每个序列的长度可以不同,但是每个元素的维度必须相同。每个序列也可以有一个对应的标签,用于监督学习的目的。例如,一个文本序列的标签可以是一个类别,一个音频序列的标签可以是一个语音识别的结果,一个视频序列的标签可以是一个动作识别的结果,等等。

BPTT(Back Propagation Through Time)算法

96d36223c3b4051a8139b4467528cbd1.png

RNN 网络在处理输入序列 [X1, X2,…, Xt ] 时随时间展开。

尽管循环神经网络(RNN)能够处理输入序列,但它们面临梯度消失的问题。这是因为训练RNN处理输入序列需要通过整个序列的长度进行误差反向传播。例如,在图5.3中的网络中,必须通过整个网络将在输出Yt上计算的误差进行反向传播,以便用于更新从h0和X1到h1的连接上的权重。这涉及通过所有隐藏层进行误差反向传播,进而涉及通过连接从一个隐藏层向下一个隐藏层传递激活的权重重复相乘。这个过程的一个特定问题是,同一组权重在所有隐藏层之间的所有连接上都被使用每个水平箭头表示内存缓冲区和隐藏层之间的同一组连接,这些连接上的权重随时间保持不变(即,在处理给定输入序列期间,它们在一个时间步到下一个时间步不改变)。因此,通过k个时间步进行误差反向传播涉及(除其他乘法之外)将误差梯度与相同的权重集合相乘k次这相当于将每个误差梯度乘以一个被提高到k次方的权重。如果这个权重小于1,那么当它被提高到某个次方时,它以指数速率减小,因此,相对于序列长度,误差梯度也倾向于以指数速率减小并最终消失

时间反向传播 (BPTT) 是一种基于梯度的技术,用于训练特定类型循环神经网络。它可用于训练 Elman 网络。该算法由多名研究人员独立推导出来。

6fd8c5e6cb0648986577bb719709156d.png

f04511a4bb90dd1a250fb2f2353c9d89.png

Back_Propagation_Through_Time(a, y)   # a[t] 是时间 t 的输入,y[t] 是输出Unfold the network to contain k instances of f  # 将网络展开,包含 k 个 f 的实例do until stopping criterion is met:  # 循环直到满足停止条件x := the zero-magnitude vector   # x 是当前的上下文for t from 0 to n − k do         # t 是时间,n 是训练序列的长度Set the network inputs to x, a[t], a[t+1], ..., a[t+k−1]  # 设置网络的输入为 x, a[t], a[t+1], ..., a[t+k−1]p := forward-propagate the inputs over the whole unfolded network  # 对整个展开的网络进行前向传播,得到输出 pe := y[t+k] − p;           # e 是误差,等于目标值 y[t+k] 减去预测值 pBack-propagate the error, e, back across the whole unfolded network  # 对整个展开的网络进行反向传播,计算误差 e 对权重的梯度Sum the weight changes in the k instances of f together.  # 将 k 个 f 的实例中的权重变化求和Update all the weights in f and g.  # 更新 f 和 g 中的所有权重x := f(x, a[t]);           # 计算下一个时间步的上下文 x

循环神经网络输出层激活函数与损失函数配合使用情况

4b6805f4cc6df3489902c306b7d905a3.png

三、挑战与改进措施

3.1 RNN模型的梯度消失和梯度爆炸问题

e17f3a02fa7ae9e1594084e74cb9678d.png

3.2 长短期记忆模型(Long Short-Term Memory,LSTM)

1a8152504d20d1e1d14895078ce102f5.png

8249ae7bd497b803987c798e2bda07d6.png

与传统的RNN网络不同,LSTM不仅可以从当前状态获取信息,还可以从先前的状态获取信息。

6a1783a23c60e94a8852131855d1c30f.png

02b5804d1fcdbe98e28879217adf7815.png

df6d44b9fa25f92f2b877190f643629b.png

7befd495c979d0e50d949b075084b01d.png

3b563222b8d6fd5a0f313a8a8e78e529.png

3.3 门控循环单元(Gated Recurrent Units)

6666da5f86be600a0d6f7251368ddb82.png

7ba9789658c6c8d4be23ba0e9f743984.png

门控循环单元,完全门控版本

ffc41d50407a1cc23086e3ef0c0a125d.png

edbb4b13c6e3b218c516adcb788ac10e.png

be10ec3a541ae695699b0b773925d825.png

类型1

bd06da50d08a9027b65a155bd35beee6.png

类型2

f8afdec6261e7dc1398850870f48daf4.png

类型3

f97bb5a618b4e00de17021abe3c19631.png

67566ca5b43ef76658ff266bef852b67.png

3.4 双向网络

9b18faada2d55fc36dd6c922a1545512.png

58a666f191f6e88f89b151619f744042.png

双向神经网络的原理是将标准循环神经网络的神经元分成正时间方向(前向)和负时间方向(后向)。这两种状态的输出仅与同样方向状态的输入相连。循环神经网络和双向循环神经网络的一般结构如图所示。通过使用两个时间方向,双向循环神经网络可以使用当前、过去和未来时间下的输入信息,而不像标准的循环神经网络需要通过延迟来使用将来时间的信息。

3.5 注意力与增强型循环神经网络

da5e9bd55c40e263ba89f21f15ebc37a.png

参考网址:

https://developer.ibm.com/articles/cc-cognitive-recurrent-neural-networks/ 循环神经网络深入探究 - IBM Developer

https://en.wikipedia.org/wiki/Backpropagation_through_time 随时间反向传播 - 维基百科 --- Backpropagation through time - Wikipedia

https://www.math.ucla.edu/~minchen/doc/BPTTTutorial.pdf BPTTTutorial.pdf (ucla.edu)

https://colah.github.io/

https://en.wikipedia.org/wiki/Gated_recurrent_unit Gated recurrent unit - Wikipedia

https://distill.pub/2016/augmented-rnns/ 注意力与增强型循环神经网络

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/325108.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Docker中安装和配置InfluxDB,设置SSL和密码保护

在Docker中安装和配置InfluxDB,设置SSL和密码保护 引言 InfluxDB是一个开源的时间序列数据库,常用于存储和查询大量时序数据。通过使用Docker,我们可以轻松地部署和管理InfluxDB容器,并配置SSL以及设置用户名和密码进行保护。本博…

【AI视野·今日Robot 机器人论文速览 第六十八期】Tue, 2 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Tue, 2 Jan 2024 Totally 12 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Edge Computing based Human-Robot Cognitive Fusion: A Medical Case Study in the Autism Spectrum Disorder Therapy Author…

对房价数据集进行处理和数据分析

大家好,我是带我去滑雪,每天教你一个小技巧! 房价数据集通常包含各种各样的特征,如房屋面积、地理位置、建造年份等。通过对数据进行处理和分析,可以更好地理解这些特征之间的关系,以及它们对房价的影响程度…

prometheus grafana linux服务器监控

文章目录 前传node-exporter安装配置promethues监控node节点grafana操作查看监控:外传 前传 prometheus grafana的安装使用:https://nanxiang.blog.csdn.net/article/details/135384541 本文说下监控nginx,prometheus grafana linux 安装配…

ThreeJs通过canvas和Sprite添加标签

在3D场景中很多时候会用到给模型添加标签,以表示这个模型的代号,尤其是大量重复模型的时候,添加标签是为了更直观的看到场景中每个模型的数据和名称,比如在仓库中有很多货架,就会需要查看每个货架的编号,如…

LeetCode(40)组合总和Ⅱ⭐⭐

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candidates [10,1,2,7,6,…

Unity 圆角 线段 绘制 LineRender

需求 绘制圆角 核心函数 /// <summary>/// 点ABC 形成的角度必须为90 点c为中间的点/// </summary>/// <param name"a"></param>/// <param name"b"></param>/// <param name"c"></param>/// &…

【金猿人物展】东方金信董事长兼总经理王伟哲:价值化、智能化驱动下的大数据,治理仍需深化...

‍ 王伟哲 本文由东方金信董事长兼总经理王伟哲撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度趋势人物榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 2023年&#xff0c;数据要素、公共数据授权运营成为热点话题&#xff0c;也是激活数据…

stm32学习笔记:TIIM-输入捕获

输入捕获理论 4个输入捕获和输出比较通道&#xff0c;共用4个CCR寄存器 另外它们的CH1到CH4&#xff0c;4个通道的引脚&#xff0c;也是共用的。 所以对于同一个定时器&#xff0c;输入捕获和输出比较只能使用其中一个&#xff0c;不能同时使用。 电平跳变&#xff1a;上升沿…

个人调用OCR

一、自己训练模型 二、调用现成API 此处介绍百度智能云API&#xff0c;因为有免费次数。&#xff08;原来一些网址在百度不是默认显示网址的&#xff0c;而是自己的网站名字&#xff09; 首页找到OCR 每个人每月能用1K次。&#xff08;有详细的API文档说明&#xff0c;不过跟…

在Uniapp中使用Echarts创建可视化图表

在uniapp中可以引入echarts创建数据可视化图表。 1. 安装Echarts 使用npm安装echarts插件&#xff0c;命令如下&#xff1a; npm install echarts --save2. 引入Eharts 在需要使用Echarts的页面引入&#xff1a; import *as echarts from echarts3. 创建实例 创建画布元素…

【产品应用】一体化伺服电机在管道检测机器人中的应用

一体化伺服电机在管道检测机器人的应用正日益受到关注。管道检测机器人是一种能够在管道内部进行检测和维护的智能化设备&#xff0c;它可以检测管道的内部结构、泄漏、腐蚀等问题&#xff0c;以确保管道的安全和稳定运行。而一体化伺服电机作为机器人的动力源&#xff0c;对于…