循环神经网络(RNN)

大家好,这里是七七,这两天在写关于神经网络相关的知识,面对的是有一定基础的读者哦。


一、RNN核心思想

RNN的核心思想就是曾经的输入造成的影响,会以致影响之后的输入,即隐含层的输出取决于历史数据的全部输入。

 三个核心点

  1. 当前时刻隐含层的输出矢量不仅与当前网络的输入矢量有关,而且与上一个时刻隐含层的输出矢量有关
  2. 当前时刻网络的输出矢量只与当前时刻隐含层的输出矢量有关
  3. RNN在某一时刻的输出不仅与该时刻的网络输入有关,海域该时刻之前的所有时刻的网络输入有关

 二、单向RNN

 

 这张图展示的便是一个单项RNN,其中,x为输入向量,t代表第几次,U代表输入权矩阵,W代表历史权矩阵,V代表隐含层的输出权矩阵,s代表隐含层,o代表输出层。

本次s的值取决于本次的输入和上次的s的值,本次的o值只取决于本次的s的值。

中间的隐含层也可以有两层、三层以及更多,相应的计算公式也会发生改变,但原理都是一样的。

三、BPTT算法

        BPTT算法其实就是BP算法增加了TT(Through Time),作用就是训练RNN模型的U、V、W这三个矩阵。与BP算法一样,这也是一种梯度下降算法。

具体过程是这样的,每输入一组数据后(如好几个矩阵),通过预期值与预测值之间的误差,来对U、V、W这三个矩阵进行修改,从而提高正确率。

BPTT的推导过程很复杂,七七这里直接省略推导过程(有好多好多过程┭┮﹏┭┮)

总之,我们只要知道,可以用这个算法,通过梯度下降,来训练模型就可以了。

四、填空问题

填空问题就是我给出一句话,把其中的某个词给扣掉,然后让计算机来填上我刚刚扣掉的这个空。对于要填最后一个空的句子来说,我们可以用单向RNN模型来完成,具体方法是这样的

  1. 首先一定是训练模型,要用好多句子来训练这个模型。其中,我们需要对这些句子中出现的每个词统计起来,形成词库。这样,每个词对应唯一一个编号。其中,还要有两个特殊的符号,来代表开始符和结束符。
  2. 然后呢,我们还要对每一个词进行矢量化。这里我们先引入一个概念:独热矢量,就是一个分量为1,而其他分量都为0的矢量。
  3. 这样一来,每个词都对应一个独热矢量,如[0 0 0 0 0 0......1 0 0......0]。这个独热矢量就可以作为输入来代表对应的词了。
  4. 词库中有多少个词,我们的输入和输出就有多少个神经元,至于隐含神经元,一般是根据经验来确定发的。
  5. 在训练的时候,我们需要将句子中的词一个一个输入,然后模型的输出应该是预测的下一个词语。如我们想输入“我爱你”,我们第一次输入的是“我”,此时如果模型输出为“爱”,那么就对了,否则就错了,需要记录错误,并在最后根据错误量进行权值调整。
  6. 训练是需要划分训练集和测试集的,如二八分。将一部分数据用于训练,通过这部分数据来调整权值;用另一部分数据作为测试,来检测模型的准确率。
  7. 对于模型的输出,我们可以用将所有输出神经元的激活函数采用softmax函数,这个函数的作用是让所有输出的值之和为1,也就形成了一个概率,然后取输出中最大的那个独热矢量作为输出的值。

上面我们讨论的问题是填最后一个词,如果说这个被扣掉的词是在句子中间,单向RNN就不行了,这是我们可以用双向RNN,就是在单向RNN的基础上将隐含层再复制一遍,然后将新增的隐含层向后传递影响改为向前传递影响就可以了,这里不做仔细讨论,了解即可。

五、梯度爆炸与梯度消失

这里的推导就不给大伙展示了,电脑上的公式实在不好写,直接给大伙介绍介绍吧。

一般,当MLP的层数较多时,其训练过程就可能发生梯度爆炸与消失现象,从而导致训练失败。

那我们要如何处理呢,下面来介绍应对的方法

对于梯度爆炸,我们可以设置一个梯度阈值,训练过程中梯度矩阵中某些元素的绝对值一旦超过阈值,则超过的部分可直接削去,这样就可以很好地抑制梯度爆炸。

对于梯度消失,可以使用LSTM模型,是一种新的RNN网络模型

六、LSTM

LSTM这个模型七七也是用过跟多次了,但此前一直不是很清晰,这次把它搞懂了,来分享给大伙。下面是LSTM的一般结构

LSTM对于RNN的改进在于它改进了一般RNN的隐含层。一般RNN的隐含层是只有状态s的,但LSTM在隐含层中加入了新的状态c,c就叫做单元状态。我们这里说的状态s就怼应上图中的h。

除了单元状态外,LSTM还引入了门的概念。门的作用其实就是对通过门的矢量进行一种增益处理。门其实就是一个矩阵,这个矩阵中元素的数值根据一些参数来确定。我们的输入数据纵向结合上次的隐含层输出数据后,与门进行按元素相乘运算。

 LSTM在隐含层一共设置了3个门:

  1. 遗忘门(f):它决定了上一时刻的单元状态有多少会保留进当前时刻的单元状态
  2. 输入门(i):它决定了当前时刻的临时单元状态有多少会保留进当前时刻的单元状态
  3. 输出门(o):它决定了当前时刻的单元状态有多少会保留进当前时刻的输出状态

这些门的计算公式都是一样的,区别只是它们的参数不同。

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

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

相关文章

Infuse for Mac激活版:高清影音播放软件

对于热爱影音娱乐的Mac用户来说,Infuse for Mac是一个不容错过的选择。它以其简洁的操作界面和强大的播放功能,为用户带来了全新的影音播放体验。 Infuse for Mac支持广泛的音视频格式,无需额外转换,即可轻松播放您喜爱的影片。无…

Mybatis Plus二级缓存 使用@CacheNamespace 失效@CacheNamespace和@CacheNamespaceRef

1、注解 CacheNamespace(flushInterval 100000,eviction LruCache.class,readWrite false,size 1024)2、xml配置 <cache eviction "LRU" flushInterval "100000" readOnly "true" size "1024"/> 二级缓存&#xff0c;配置文…

【Linux 性能详解】CPU性能分析工具篇

目录 uptime mpstat 实时监控 查看特定CPU核心 pidstart 监控指定进程 组合多个监控类型 监控线程资源 按用户过滤进程 vmstart 用途 基本用法 输出字段 perf execsnoop dstat 通俗解释 技术层面解释 使用示例 总结 uptime uptime 是一个在 Linux 和 Unix…

上班不想用脑子写代码了怎么办?那就试试Baidu Comate啊宝贝

本文目录 前言1、视频编程实战1.1、熟悉代码库中的代码1.2、参考现有代码编写新代码 2、下载使用教程3、使用体验3.1、AutoWork 产品测评3.2、解决有关ajax请求后重定向问题3.3、询问编程相关知识3.3.1、cookie和session的区别与联系3.3.2、数据库中主键外键的相关知识 4、问题…

基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调)

基于EBAZ4205矿板的图像处理&#xff1a;12图像二值化(阈值可调) 我的项目是基于EBAZ4205矿板的阈值可调的图像阈值二值化处理&#xff0c;可以通过按键调整二值化的阈值&#xff0c;key1为阈值加1&#xff0c;key4为阈值减1&#xff0c;key2为阈值加10&#xff0c;key5为阈值…

【bug记录】清除僵尸进程,释放GPU显存

目录 1. 为什么会出现这种情况&#xff1f;2. 解决方案方法一&#xff1a;使用 fuser 命令方法二&#xff1a; 3. 小贴士 在进行深度学习或其他需要GPU支持的任务时&#xff0c;我们有时会发现虽然没有可见的进程在执行&#xff0c;但GPU资源却意外地被占用。这种情况往往会阻碍…

AI换脸原理(4)——人脸对齐(关键点检测)参考文献2DFAN:代码解析

注意,本文属于人脸关键点检测步骤的论文,虽然也在人脸对齐的范畴下。 1、介绍 在本文中,重点介绍了以下几项创新性的成果,旨在为人脸关键点检测领域带来新的突破。 首先,成功构建了一个卓越的2D人脸关键点检测基线模型。这一模型不仅集成了目前最优的关键点检测网络结构,…

sqlite3命令行工具无法退出问题处理

一、背景&#xff1a; 软件使用的后台数据库为sqlite&#xff0c;linux主机系统层面使用sqlite3命令行工具登录数据库后&#xff0c;无法执行sql脚本&#xff0c;无法退出sqlite3。无法执行ctrlc&#xff0c;执行ctrlz后sqlite3前台进程被中断&#xff0c;但是该进程没有退出。…

Spring-依赖查找

依赖查找 根据名称进行查找 实时查找 BeanFactory beanFactory new ClassPathXmlApplicationContext("beans.xml"); Object bean beanFactory.getBean("personHolder"); System.out.println(bean);xml如下: <bean id"person" class&qu…

运维自动化工具:Ansible 概念与模块详解

目录 前言 一、运维自动化工具有哪些 二、Ansible 概述 1、Ansible 概念 2、Ansible 特点 3、Ansible 工作流程 4、Ansible 架构 4.1 Ansible 组成 4.2 Ansible 命令执行来源 5、Ansible 的优缺点 三、Ansible 安装部署 1、环境部署 2、管理节点安装 Ansible 3、…

Golang | Leetcode Golang题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; func sortColors(nums []int) {p0, p2 : 0, len(nums)-1for i : 0; i < p2; i {for ; i < p2 && nums[i] 2; p2-- {nums[i], nums[p2] nums[p2], nums[i]}if nums[i] 0 {nums[i], nums[p0] nums[p0], nums[i]p0}} }

模型全参数训练和LoRA微调所需显存的分析

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

k8s调度原理以及自定义调度器

kube-scheduler 是 kubernetes 的核心组件之一&#xff0c;主要负责整个集群资源的调度功能&#xff0c;根据特定的调度算法和策略&#xff0c;将 Pod 调度到最优的工作节点上面去&#xff0c;从而更加合理、更加充分的利用集群的资源&#xff0c;这也是我们选择使用 kubernete…

java--io流(一)

1. 前置知识 字符集是什么&#xff1f; 字符集&#xff08;Character Set&#xff09;是一组字符的集合&#xff0c;它定义了可以在计算机系统中使用的所有字符。字符集可以包括字母、数字、标点符号、控制字符、图形符号等。字符集使得计算机能够存储、处理和显示各种语言和…

嵌入式Linux学习第四天启动方式学习

嵌入式Linux学习第四天 今天学习I.MX6U 启动方式详解。I.MX6U有多种启动方式&#xff0c;可以从 SD/EMMC、NAND Flash、QSPI Flash等启动。 启动方式选择 BOOT 的处理过程是发生在 I.MX6U 芯片上电以后&#xff0c;芯片会根据 BOOT_MODE[1:0]的设置来选择 BOOT 方式。BOOT_M…

Linux——基础IO2

引入 之前在Linux——基础IO(1)中我们讲的都是(进程打开的文件)被打开的文件 那些未被打开的文件呢&#xff1f; 大部分的文件都是没有被打开的文件&#xff0c;这些文件在哪保存&#xff1f;磁盘(SSD) OS要不要管理磁盘上的文件&#xff1f;(如何让OS快速定位一个文件) 要…

数据仓库与数据挖掘实验练习3-4(实验二2024.5.8)

练习3 1.简单文件操作练习 import pandas as pd # 读取文件 pd.read_csv(pokemon.csv) # 读取 CSV 文件的函数调用&#xff0c;它将文件中的数据加载到 DataFrame 中&#xff0c;并指定了 Pokemon 列作为索引列。 pd.read_csv(pokemon.csv,index_colPokemon)#查看类型 type(p…

React:Router-2. createBrowserRouter函数式

参考文档&#xff1a;ReactRouter官网 前边的文章 BrowserRouter组件式路由 提供了组件式路由的方式&#xff0c;在react-router6.4.0及以上版本&#xff0c;提供了 createBrowserRouter 函数式路由创建方式。 一、创建路由 1. 新建router.js文件&#xff0c;使用createBrow…

十二届蓝桥杯Python组1月中/高级试题 第五题

** 十二届蓝桥杯Python组1月中/高级试题 第五题 ** 第五题&#xff08;难度系数 5&#xff0c;35 个计分点&#xff09; 提示信息&#xff1a; 平均数&#xff1a;是指在一组数据中所有数据之和再除以这组数据的个数。 如&#xff1a;“1&#xff0c;2&#xff0c;3&#xf…

命令行方式将mysql数据库迁移到达梦数据库(全步骤)

因项目需求&#xff0c;需要将mysql数据库转换为国产达梦数据库&#xff0c;但由于安全问题&#xff0c;正式环境只能用命令行方式连接&#xff0c;下列是操作全步骤 目录 一、操作逻辑二、操作步骤1、本地安装达梦相关工具2、将服务器mysql导出到本地a) 服务器命令行导出mysql…