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

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.mzph.cn/news/600490.shtml

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

相关文章

export命令详解

export命令详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一同深入了解 Linux 和 Unix 系统中的一个强大命令——export,并…

PC+Wap仿土巴兔装修报价器源码 PHP源码

核心功能: 业主自助预算计算:通过简洁的界面,业主可以输入装修需求,系统自动进行预算计算信息自动收集:系统自动收集业主的基本信息,如姓名、联系方式、房屋面积等一键发送报价:业主完成预算计…

GnuTLS recv error (-110): The TLS connection was non-properly terminated.

bug 解决方案:参考 GnuTLS recv error (-110): The TLS connection was non-properly terminated. 解决方案: apt-get install gnutls-bin git config --global http.sslVerify false git config --global http.postBuffer 1048576000参考

【SpringCloud】7、Spring Cloud Gateway限流配置

1、限流介绍 Spring Cloud Gateway 的限流配置主要涉及到令牌桶算法的实现。令牌桶算法可以对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。 在 Spring Cloud Gateway 中,官方提供了 RequestRateLimiterGatewayFi…

uni-app 前后端调用实例 基于Springboot 上拉分页实现

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

Grafana相关问题及答案(2024)

1、Grafana 是什么,它用于什么目的? Grafana 是一个高度灵活且富有功能的数据可视化和监控平台,旨在为技术专业人员提供强大的方式来显示和分析他们的数据。下面将详细介绍 Grafana 的关键特点和它的使用场景。 关键特点 1. 数据源的多样性…

【数据库系统概论】数据库并发控制机制——并发操作带来的数据不一致性问题有哪些

系统文章目录 数据库的四个基本概念:数据、数据库、数据库管理系统和数据库系统 数据库系统的三级模式和二级映射 数据库系统外部的体系结构 数据模型 关系数据库中的关系操作 SQL是什么?它有什么特点? 数据定义之基本表的定义/创建、修改和…

算法基础之合并果子

合并果子 核心思想&#xff1a; 贪心 Huffman树(算法): 每次将两个最小的堆合并 然后不断向上合并 #include<iostream>#include<algorithm>#include<queue> //用小根堆实现找最小堆using namespace std;int main(){int n;cin>>n;priority_queue&l…

项目-苍穹外卖基础(持续更新中~)

day1: login的后端实现&#xff1a; day 2:

【java】期末复习知识点

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 填空题封装包主类开发过程的改变interfaceabstract class访问控制关键字继承多态object 类Java I/O(输入/输出)异常线程和进程创建线程的两种基本方法 编程题Hello World编写Swing程序&#xff0c;显示一个空白窗口 填空题…

【大数据进阶第三阶段之Hive学习笔记】Hive的数据类型与数据操作

【大数据进阶第三阶段之Hive学习笔记】Hive安装-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive常用命令和属性配置-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive基础入门-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive查询、函数、性能优化-CSDN博客 …

奇偶数合并

今天分享一道很有意思的算法题目 1、题目描述 奇偶数合并 将所有相邻且相同的偶数相加放入相邻偶数中间 将所有相邻且相同奇数相加&#xff0c;替换掉这两个相邻且相同的奇数 最后输出合并后的数组结果。 举例 数组[1,2,2,7,8,3,3,6] 数组奇偶数合并之后[1,2,4,2,7,8,6,1…

互联网大厂面试题目

阿里篇 1.1.1 如何实现一个高效的单向链表逆序输出&#xff1f; 1.1.2 已知sqrt(2)约等于1.414&#xff0c;要求不用数学库&#xff0c;求sqrt(2)精确到小数点后10位 1.1.3 给定一个二叉搜索树(BST)&#xff0c;找到树中第 K 小的节点 1.1.4 LRU缓存机制 1.1.5 关于epoll和…

依次判断数组a中的每个字符串长度 是否小于等于数组b中对应字符串长度 numpy.char.less_equal(a,b)

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 依次判断数组a中的每个字符串长度 是否小于等于数组b中对应字符串长度 numpy.char.less_equal(a,b) [太阳]选择题 请问以下代码最终输出结果是&#xff1f; import numpy as np a np.array…

初探ElasticSearch

1.什么是ElasticSearch&#xff1f; ElasticSearch简称ES&#xff0c;也成为弹性搜索&#xff0c;是基于Apache Lucene构建的开源搜索引擎。其实Lucene本身就是一款性能很好的开源搜索引擎工具包&#xff0c;但是Lucene的API相对复杂&#xff0c;而且掌握它需要很深厚的“内功…

通过使用别名让 SQL 更简短-数据库教程shulanxt.com-帆软软件有限公司

MySQL视频教程导航 https://www.shulanxt.com/database/mysqlvideo/p1 SQL 别名 SQL 别名 通过使用 SQL&#xff0c;可以为表名称或列名称指定别名。 基本上&#xff0c;创建别名是为了让列名称的可读性更强。 列的 SQL 别名语法 SELECT column_name AS alias_name FROM …

Linux操作实例 – 输入输出重定向

Linux操作实例 – 输入输出重定向 Input & Output Redirection Examples in Linux By Jackson 1. 前言 在操作计算机的时候&#xff0c;我们能够很容易通过键盘、鼠标给计算机输入信息&#xff08;例如&#xff1a;写公文、邮件&#xff0c;同时通过显示器得到输出。这就…

DevOps(4)

目录 16.Ctrl Alt Del组合键是否适用于Linux&#xff1f; 17.如何引用连接打印机等设备的并行端口&#xff1f; 18.硬盘驱动器和软盘驱动器等驱动器是否用驱动器号表示&#xff1f; 19.如何在Linux下更改权限&#xff1f; 20.在Linux中&#xff0c;为不同的串口分配了哪些…

在 CentOS 7.8 上安装 Node.js

1.安装 NVM&#xff08;Node Version Manager&#xff09;&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash这将从 NVM 的 GitHub 仓库下载安装脚本并执行。请注意&#xff0c;您需要重新启动终端或者执行 source ~/.bashrc 以…

用 CSS 实现一个三角形、用 CSS 实现一个自适应的正方形、CSS写一个简单的幻灯片页面效果

用 CSS 实现一个三角形 效果&#xff1a; 参考代码&#xff1a; <!DOCTYPE html> <html> <head><style>.triangle {width: 0;height: 0;border: 100px solid red;border-top-color: transparent;border-left-color: transparent;border-right-colo…