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

news2024/12/22 14:46:06

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  # 对整个展开的网络进行前向传播,得到输出 p
            e := y[t+k] − p;           # e 是误差,等于目标值 y[t+k] 减去预测值 p
            Back-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.coloradmin.cn/o/1360300.html

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

相关文章

手写视频裁剪框

<!-- 截取框 --><divv-show"isShow"class"crop-box":style"{width: cropWidth px,height: cropHeight px,left: cropX px,top: cropY px,}"ref"cropBox"mousedown"startInteraction"><!-- 内容在这里 --…

【信息论与编码】习题-单选题

目录 单选题1.下列说法正确的是&#xff08;B&#xff09;2.在信息论中&#xff0c;若用对数底2为&#xff0c;则信息量的单位为&#xff08;C&#xff09;3.率失真函数的下限为&#xff08;A&#xff09;4.给定xi条件下随机事件yj所包含的不确定度和条件自信息量p(yj /xi)。&a…

stable diffusion 人物高级提示词(二)衣物、身材

一、衣服大类 英文中文Shirt衬衫Blouse女式衬衫Dress连衣裙Skirt裙子Pants裤子Jeans牛仔裤Swimsuit泳衣Underwear内衣Bra文胸Panties内裤Stockings长筒袜Shoes鞋子Socks袜子 二、细分分类 dress 是连衣裙&#xff1a; 英文解释Formal Dress正式礼服&#xff0c;通常用于正式…

代码随想录刷题第三十八天| 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

代码随想录刷题第三十八天 动态规划基础理论 斐波那契数 (LC 509) 题目思路&#xff1a; 代码实现&#xff1a; class Solution:def fib(self, n: int) -> int:if n<1: return ndp [0 for _ in range(n1)]dp[1] 1for i in range(2, n1):dp[i] dp[i-1]dp[i-2] …

专业课130+,总分390+四川大学951信号与系统考研通信,电子信息经验分享

今年专业课130&#xff0c;总分390&#xff0c;顺利上岸&#xff0c;将近一年复习一路走来&#xff0c;感慨很多&#xff0c;希望以下经历可以给后来的同学提供一些参考。 初试备考经验 公共课&#xff1a;三门公共课&#xff0c;政治&#xff0c;英语&#xff0c;数学。在备…

软件测试|SQL TOP提取顶部数据该如何使用?

简介 在SQL查询语言中&#xff0c;TOP子句是一个非常有用的功能&#xff0c;它允许我们从数据库中提取指定数量的顶部数据记录。本文将深入探讨SQL TOP子句的使用方法&#xff0c;以及在实际应用中的一些常见场景和技巧。 SQL TOP SQL是一种用于管理和操作关系型数据库的强大…

16 Linux 内核定时器

一、Linux 时间管理和内核定时器简介 1. 内核时间管理简介 Linux 内核中有大量的函数需要时间管理&#xff0c;比如周期性的调度程序、延时程序、定时器等。 硬件定时器提供时钟源&#xff0c;时钟源的频率可以设置&#xff0c;设置好以后就周期性的产生定时中断&#xff0c;系…

提升图像分割精度:学习UNet++算法

文章目录 一、UNet 算法简介1.1 什么是 UNet 算法1.2 UNet 的优缺点1.3 UNet 在图像分割领域的应用 二、准备工作2.1 Python 环境配置2.2 相关库的安装 三、数据处理3.1 数据的获取与预处理3.2 数据的可视化与分析 四、网络结构4.1 UNet 的网络结构4.2 UNet 各层的作用 五、训练…

04、Kafka ------ CMAK 各个功能的作用解释(Cluster、集群、Broker、位移主题、复制因子、领导者副本、主题)

目录 启动命令&#xff1a;CMAK的用法★ 在CMAK中添加 Cluster★ 在CMAK中查看指定集群★ 在CMAK中查看 Broker★ 位移主题★ 复制因子★ 领导者副本和追随者副本★ 查看主题 启动命令&#xff1a; 1、启动 zookeeper 服务器端 小黑窗输入命令&#xff1a; zkServer 2、启动 …

编写一个弹跳小球的程序,小球在窗口中四处反弹(python)

import pygame import random# 初始化Pygame pygame.init()# 窗口尺寸 width 800 height 600# 创建窗口 screen pygame.display.set_mode((width, height)) pygame.display.set_caption("Bouncing Ball")# 小球初始位置和速度 ball_radius 20 ball_color (255, …

【kettle】pdi/data-integration 打开ktr文件报错“Unable to load step info from XML“

一、报错内容&#xff1a; Unable to load step info from XML step nodeorg.pentaho.di.core.exception.KettleXMLException: Unable to load step info from XMLat org.pentaho.commons.launcher.Launcher.main (Launcher.java:92)at java.lang.reflect.Method.invoke (Met…

【ARMv8架构系统安装PySide2】

ARMv8架构系统安装PySide2 Step1. 下载Qt资源包Step2. 配置和安装Qt5Step3. 检查Qt-5.15.2安装情况Step4. 安装PySide2所需的依赖库Step5. 下载和配置PySide2Step6. 检验PySide2是否安装成功 Step1. 下载Qt资源包 if you need the whole Qt5 (~900MB): wget http://master.qt…

数据结构(JS实现)

目录 链表链表的特点链表中的常见操作单链表append(data)尾部追加新节点toString()输出链表的节点数据插入节点insert(position,data)get(position)获取链表指定位置节点的数据indexOf(data)查找对应数据节点的位置update(position, newData)更新指定位置节点数据removeAt(posi…

Unity | NGO网络框架

目录 一、相关属性及变量 1.ServerRpc属性 2.ClientRpc属性 3.NetworkVariable变量 二、相关组件 1.NetworkManager 2.Unity Transport 3.Network Object 4.NetworkBehaviour&#xff1a; 5.NetworkTransform Syncing(Synchronizing) Thresholds Interpolation 三…

windows通过ssh连接Liunx服务器并实现上传下载文件

连接ssh 输入&#xff1a;ssh空格用户名ip地址&#xff0c;然后按Enter 有可能出现下图提示&#xff0c;输入yes 回车即可 输入 password &#xff0c;注意密码是不显示的&#xff0c;输入完&#xff0c;再按回车就行了 以上是端口默认22情况下ssh连接&#xff0c;有些公司它…

【VSCode】CMake Language Support 总是下载 .NET 超时,但又不想升级dotnet

错误信息 Error: Could not resolve dotnet path!An error occurred while installing .NET (6.0): .NET Acquisition Failed: Installation failed: Error: .NET installation timed out. You may need to change the timeout time if you have a slow connection. Please se…

VuePress部署到GitHub Pages

一、git push自动部署 1、创建用于工作流的文件 在项目根目录下创建一个用于 GitHub Actions 的工作流 .yml 文件 name: docson:# 每当 push 到 main 分支时触发部署push:branches: [main]# 手动触发部署workflow_dispatch:jobs:docs:runs-on: ubuntu-lateststeps:- uses: a…

湖仓架构的演进

1.数据仓库架构的历史演进 起初&#xff0c;业界数据处理首选方式是数仓架构。通常数据处理的流程是把一些业务数据库&#xff0c;通过ETL的方式加载到Data Warehouse中&#xff0c;再在前端接入一些报表或者BI的工具去展示。 数据仓库概念是 Inmon 于 1990 年提出并给出了完…

Spark Streaming的容错性与高可用性

在实时数据处理领域&#xff0c;容错性和高可用性是至关重要的。Apache Spark Streaming是一个强大的工具&#xff0c;用于实时数据处理和分析&#xff0c;具备卓越的容错性和高可用性。本文将深入探讨Spark Streaming的容错性机制&#xff0c;以及如何实现高可用性的实时数据处…

docker 部署haproxy cpu占用特别高

在部署mysql 主主高可用时&#xff0c;使用haproxy进行负载&#xff0c;在服务部使用的情况下发现服务器cpu占比高&#xff0c;负载也高&#xff0c;因此急需解决这个问题。 1.解决前现状 1.1 部署配置文件 cat > haproxy.cfg << EOF globalmaxconn 4000nbthrea…