RNN 及其变体的数学理解

news2024/11/23 0:36:59

目录

一、介绍:

二、什么是 RNN 以及它与前馈神经网络有何不同:

三、RNN 背后的数学

3.1 RNN的数学方程

3.2 参数和梯度

3.2.1  损耗相对于V的梯度

3.2.2 损失相对于W的梯度

四、RNN 变体(LSTM 和 GRU)

4.1 LSTM(长短期记忆)  

4.2 RNN 的实际应用:

五、最后注意事项:


一、介绍:

        专家预计人工智能(AI)将致力于创造更美好的生活。他们表示,随着未来将提供更多的计算能力,即更多的图形处理单元,人工智能将为人类带来更多进步和生产力。这篇特别的文章讨论了 RNN、它的变体(LSTM、GRU)及其背后的数学。

        如今,人们可以看到很多这样的人工智能应用程序,例如打击人口贩运、医疗保健顾问、自动驾驶汽车、入侵检测和预防、物体跟踪和计数、人脸检测和识别、疾病预测和人类虚拟援助。         RNN 是一种接受可变长度输入并产生可变长度输出的神经网络。它用于开发各种应用程序,例如文本到语音、聊天机器人、语言建模、情感分析、时间序列股票预测、机器翻译和名称实体识别。

文中的内容:

  • 什么是 RNN 以及它与前馈神经网络有何不同
  • RNN 背后的数学
  • RNN 变体(LSTM 和 GRU)
  • RNN 的实际应用
  • 最后说明

二、什么是 RNN 以及它与前馈神经网络有何不同

        RNN 是一种循环神经网络,其当前输出不仅取决于其当前值,还取决于过去的输入,而对于前馈网络,当前输出仅取决于当前输入。看看下面的例子可以更好地理解 RNN。

亚伯拉罕是以色列人文始祖。

亚伯拉罕是美国总统。

        如果有人被问到谁是亚伯拉罕,他/她会说亚伯拉罕是不同的,一个来自圣经,另一个来美国总统。现在,如果将相同的任务交给机器来给出输出,则在它知道完整的上下文之前它无法说出,即预测单个单词的身份取决于了解整个上下文。此类任务可以通过 Bi-LSTM(RNN 的变体)来实现。 RNN 因其学习上下文的能力而适合此类工作。其他应用包括语音到文本转换、构建虚拟辅助、时间序列股票预测、情感分析、语言建模和机器翻译。另一方面,前馈神经网络产生的输出仅取决于当前输入。例如图像分类任务、图像分割或对象检测任务。此类网络的一种类型是卷积神经网络(CNN)。请记住,RNN 和 CNN 都是有监督的深度学习模型,即它们在训练阶段都需要标签。

三、RNN 背后的数学

3.1 RNN的数学方程

        要了解 RNN 背后的数学原理,请看下图

RNN 背后的数学

RNN 背后的数学

        正如第一个标题中所讨论的,输出取决于当前和过去的输入。令I 1为第一个输入,其维度为n*1,其中 n 是词汇表的长度。S 0是具有 d 个神经元的第一个 RNN 单元的隐藏状态。对于每个单元格,输入隐藏状态应该是前一个。对于第一个单元,用零或某个随机数初始化S 0 ,因为没有看到先前的状态。U是另一个维度为d*n的矩阵,其中d是第一个 RNN 单元中的神经元数量,n是输入词汇量大小。W是另一个矩阵,其维度为d*db是偏差,其维度为d*1。为了找到第一个单元的输出,采用另一个矩阵V ,其维度为k*d,其中c是维度为k*1 的偏差。

从数学上讲,第一个 RNN单元的输出如下

S 1 = UI 1 + WS 0 + b
O 1 = VS 1 +c

一般来说,

S n = UI n + WS n-1 + b
O n = VS n + c

上述方程的关键要点

        一般来说,输出O n取决于S n且S n取决于S n-1。 S n-1取决于S n-2。过程一直进行到达到S 0为止。这清楚地表明第 n个时间步的输出取决于所有先前的输入。

3.2 参数和梯度

        RNN 中的参数U、V、b、c、W  在所有 RNN 单元之间共享。共享的原因是创建一个可以在所有时间步上应用的通用函数。参数是可学习的,负责训练模型。在每个时间步,都会计算损失并通过梯度下降算法反向传播。

3.2.1  损耗相对于V的梯度

        梯度表示切线的斜率,并指向函数增长率最大的方向。我们有兴趣找到损失最小的 V。从损失来看,它意味着成本函数或误差。简单来说,成本函数是真实值与预测值之间的差值。移动方向与相对于 V 的损失梯度方向相反。使用以下数学公式获得 V 的新数学值

        其中d(L)/d(V)是从时间步长获得的所有损失的总和。有两种更新权重的方法。一种是计算定义批次的梯度然后更新它(Mini Batch)或按样本计算并更新(随机)。在计算d(L)/d(V)期间,应用链式法则。看下图来理解计算和链式法则。

用于计算 V 损失梯度的链式规则实现

用于计算 V 损失梯度的链式规则实现

3.2.2 损失相对于W的梯度

        W乘以S。为了计算任意时间步上损失相对于权重的导数,应用链式法则来考虑从S nS 0到达W的所有路径。这意味着由于任何错误的 S n,W 都会受到影响。换句话说,一些错误的信息来自某些隐藏状态,从而导致损失。从数学上讲,权重更新如下

        要记住的关键点是,梯度和权重要么在每个样本中更新,要么在批次之后更新。这取决于算法选择随机还是小批量。看一下下面的屏幕截图,以更精致的方式形象化这个概念。

关于 W 的梯度下降

关于 W 的梯度下降

四、RNN 变体(LSTM 和 GRU)

        通过上面的讨论,我希望 RNN 背后的数学原理现在已经清楚了。 RNN 的主要缺点是无论序列长度如何,状态向量的维度保持不变。考虑到一种情况,如果输入序列的长度很长,则新信息会被添加到同一状态向量中。当到达距离第一个时间步很远的第n个时间步时,信息会变得非常混乱。在这样的位置,并不清楚在时间步骤1或2提供的信息是什么。它类似于一块尺寸固定的白板,可以在上面不断地书写。在某些位置,它会变得非常混乱。人们甚至无法阅读船上写的内容。为了解决这些问题,其变体被开发为所谓的 LSTM 和 GRU。他们的工作遵循选择性阅读、写作和遗忘的原则。现在白板(类似于状态向量)是相同的,但仅在时间步写入所需的信息,并过滤掉不必要的信息,使顺序神经网络适合长序列的训练。从这里可以看出 LSTM 和 GRU 之间的区别。

4.1 LSTM(长短期记忆)  

        数学表示:

        遵循的策略是选择性地写、读和忘记。

选择性写入

 选择性写入

        选择性写入:

        在 RNN 中,   S t- 1与x t一起输入 到单元中,而在 LSTM 中,S t-1使用另一个向量t-1 转换为h t-1。这个过程称为选择性写入。选择性写入的数学方程如下

        选择性阅读:

        看一下下图来理解这个概念

选择性阅读

选择性阅读

        h t-1与x t 相加得到 s t。然后对 (图中写为tc )进行阿达玛积 ,得到t。这称为输入门。只有选择性信息才会进入,这个过程称为选择性读取。从数学上讲,选择性读取的方程如下:

选择性忘记:

        看一下下图来理解这个概念

选择性遗忘

选择性遗忘

        s t-1是与ft 的 阿达玛积,称为选择性遗忘。总体t是通过选择性阅读和选择性遗忘相加得到的。请看下图来理解上面的说法

添加选择性阅读和忘记

添加选择性阅读和忘记 

        从数学上讲,选择性遗忘的方程如下:

        注意: GRU(门控循环单元)没有忘记门。它只有输入门和输出门。

4.2 RNN 的实际应用:

        RNN 的用例包括语音到文本转换、构建虚拟辅助、情感分析、时间序列股票预测、机器翻译、语言建模。更多研究正在使用 RNN 及其变体创建生成式聊天机器人。其他应用程序包括图像字幕、从小段落生成大文本和文本摘要器(像 Inshorts 这样的应用程序正在使用此功能)。音乐创作和呼叫中心分析是使用 RNN 的其他领域。

五、最后注意事项:

        简而言之,从开头一段就可以理解 RNN 和前馈神经网络的区别,然后深入了解 RNN 背后的数学原理。最后,通过解释 RNN 的不同变体以及 RNN 的一些实际应用来完成本文。为了研究 RNN 的应用,必须掌握微积分、导数方面的丰富知识,尤其是链式法则的工作原理。研究完理论后,应该用您最喜欢的编码语言编写有关这些主题的一些代码。

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

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

相关文章

代码随想录算法训练营第36期DAY19

DAY19 104二叉树的最大深度 根节点的高度就是最大深度。 非递归法: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) …

Ansible自动运维工具之playbook

一.inventory主机清单 1.定义 Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。 2.变量 (1)主机变量 [webservers] 192.168.10.14 ansible_port22 ansible_userroot ans…

央国企加速新质生产力形成和发展,HR数字化工具如何推动创新内核构建?

自今年两会以来,“新质生产力”一词获得了广泛的关注。众多专家学者对其重要性、定义及作用进行了热烈且深入的讨论,一致强调了新质生产力的核心地位。对于那些致力于转型为现代化国有企业的国资中央企业而言,培育新质生产力无疑成为了当前及…

JVM笔记-常用命令

1、jstat jstat是一个极强的监视JVM的工具&#xff0c;可以用来监视JVM的各种堆和非堆的大小以及内存使用量。 Usage: jstat -help|-optionsjstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]jstat的常用用法如图所示&#xff…

Java Swing手搓童年坦克大战游戏(III)

坦克大战豪华山寨版二期工程 计划&#xff1a;实现【道具功能】【分数统计、排行榜】【多种类型敌军坦克派遣】【自建地图】【游戏存档读档】【联网实现双人配合】等&#xff0c;修复一些严重的bug。由于功能比较多&#xff0c;目测会分多篇文章记录…… 前言 通过对原游戏的…

C语言 函数概述

好 接下来 我们来讲函数 构建C程序的最佳方式 就是模块化程序设计 C语言中 最基本的程序模块被称为 函数 所以 这个知识点的重要性不言而喻 这里 我们讲个故事 诸葛亮六出祁山时 为了逼司马懿出战 派人送给力司马懿一件女人衣服 司马懿只是为使者 诸葛亮的饮食起居 使者感叹…

光电探测器性能指标测试

光电探测器的三个核心指标&#xff1a; 带宽&#xff0c;转换增益&#xff0c;噪声(信噪比&#xff0c;NEP&#xff0c;噪声密度) 测试环境&#xff1a;可调谐激光器&#xff08;CW LASER&#xff09;&#xff0c;强度调制器(AM)&#xff0c;信号发生器(AWG)&#xff0c;可调衰…

stm32f103zet6_DAC_2_输出电压

实现效果 DAC输出的电压 同过电压表测量电压 1.DAC配置的步骤 初始化DAC时钟。配置DAC的GPIO端口。设置DAC的工作模式&#xff08;例如&#xff0c;是否使用触发功能&#xff0c;是否启用DAC中断等&#xff09;。启动DAC。 2常用的函数 函数 HAL_DAC_Start() - 开启指定…

5月6(信息差)

&#x1f30d;一次预测多个token&#xff0c;Meta新模型推理加速3倍&#xff0c;编程任务提高17% https://hub.baai.ac.cn/view/36857 &#x1f384; LeetCode 周赛超越 80% 人类选手&#xff0c;推理性能超 Llama3-70B。 ✨ 我国量子计算机实现“四算合一” 实现通算、…

CAPL如何实现TLS握手认证

CAPL有专门的章节介绍如何实现TLS握手认证的函数: CAPL调用哪些函数实现TLS握手认证,需要了解TLS在整个通信过程的哪个阶段。 首先TCP需要建立连接,这是TLS握手的前提。当TLS握手认证完成后,可以传输数据。 所以TLS握手开始前需要确保TCP建立连接,TCP传输数据前需要确保…

5.6代码

1.最大公约数 这个题最重要的是要找到一个区间是1&#xff0c;找到之后就可以直接加次数就可以了 #include <bits/stdc.h>using namespace std;main() {long long n,i,j,a0,b,ans99999;cin>>n;long long s[n],dp[n][n];for(i0;i<n;i){cin>>s[i];if(s[i]1…

五一 作业

#include <iostream>using namespace std; class Num { private:int a; public:Num() {}Num(int a):a(a){}//设置a的值void set(int a){this->aa;}//1-a的和void Sum(){if(a<1){cout<<"a<1"<<endl;return;}int sum0;for(int i1;i<a;i)…

荧光纳米纤维膜的优点

荧光纳米纤维膜是一种具有荧光特性的纳米纤维材料&#xff0c;它结合了纳米纤维的良好性能和荧光物质的发光特性&#xff0c;在多个领域具有潜在的应用价值。 荧光纳米纤维膜可以通过不同的制备方法得到&#xff0c;其中一种常见的方法是利用荧光物质对纳米纤维进行修饰或掺杂。…

如何从Windows 10电脑远程登录Ubuntu系统

要从Windows 10电脑远程登录Ubuntu系统&#xff0c;您可以使用以下步骤&#xff1a; 在Ubuntu上安装xRDP: 首先&#xff0c;在Ubuntu电脑上打开终端&#xff0c;然后输入以下命令来安装xRDP服务&#xff1a; sudo apt update sudo apt install xrdpxRDP是一个开源的远程桌面协议…

【docker 】 push 镜像提示:denied: requested access to the resource is denied

往 Docker Registry &#xff08;私服&#xff09;push 镜像提示&#xff1a;denied: requested access to the resource is denied 镜像push 语法&#xff1a;docker push <registry-host>:<registry-port>/<repository>:<tag> docker push 192.16…

QT开发(四) 制作一个JSON检查小工具

1、JSON概念 1.1 定义 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它易于人类阅读和编写&#xff0c;同时也易于机器解析和生成。JSON基于JavaScript语言的子集&#xff0c;但是独立于编程语言&#xff0c;因此可以被多种…

JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式

技术栈 1. 开发语言&#xff1a;JAVA 2. 数据库&#xff1a;MySQL 3. 后端框架&#xff1a;Spring boot 4. 前端框架&#xff1a;VUE2 5. 电子班牌&#xff1a; Android 7.1 6. 小程序&#xff1a;原生开发 7. 多学校Saas 模式 电子班牌是一款智慧校园管理工具&#xf…

Kubernetes核心概念基本操作

1.1 Namespace命名空间 1.1.1 Namespace核心概念 Kubernetes 的 Namespace&#xff08;命名空间&#xff09;是一种用于创建逻辑隔离分区的机制&#xff0c;它的主要作用是用来实现多套环境的资源隔&#xff0c;它允许用户在同一个物理集群中模拟出多个虚拟集群的效果。以下是…

cmake的使用方法: 将源文件组织到不同的目录

一. 简介 前面几篇文章学习了cmake工具针对单个 .c文件的编译方法。 cmake针对含有多个 .c文件的工程的使用编译。cmake工程编译是如何实现编译生成库文件。 本文学习一下另一种情况&#xff1a;当源文件组织到不同的目录下时&#xff0c;cmake工具该如何编译工程。 二. c…

C++继承 - 下

目录 1. 继承和友元 2. 继承与静态成员 3. 菱形继承以及菱形虚拟继承 3.1. 单继承 3.2. 多继承 3.3. 菱形继承 3.4. 菱形虚拟继承 3.5. 菱形继承的底层细节 3.6. 菱形虚拟继承的底层细节 3.7. 虚拟继承 4. 继承的总结 5. 相关继承练习题 5.1. 如何定义一个无法被继…