【模型解读】浅析RNN到LSTM

[预训练语言模型专题] 结合HuggingFace代码浅析Transformer 本文为预训练语言模型专题系列第九篇 快速传送门 1-4:[萌芽时代]、[风起云涌]、[文本分类通用技巧]、[GPT家族] 5-8:[BERT来临]、[浅析BERT代码]、[ERNIE合集]、[MT-DNN(KD)] 感谢清华大学自然语言处理实验室对预训练语言模型架构的梳理,我们将沿此脉络前行,探索预训练语言模型的前沿技术,红框中为已介绍的文章,本期将结合HuggingFace代码浅析Transformer代码,欢迎大家留言讨论交流。 前言 前面几期一起分享了这么多基于Tr... 阅读详情

卷积神经网络使用固定大小的矩阵作为输入(比如一张图片),然后输出一个固定大小的向量(比如不同分类的概率),适合于图像分类,目标检测,图像分割等。但是除了图像外,还有非常多的信息是非固定长度或者大小的,比如视频,语音,此时更加适合用来处理这些时序信号的网络就是一些时间序列模型。

常见的时间序列模型包括RNN,LSTM等,今天简单说一说。

作者 | 言有三

编辑 | 言有三

01

RNN

我们通常所说的RNN实际上有两种,一种是Recurrent Neural Networks,即循环神经网络,一种是Recursive Neural Networks,即递归神经网络。


循环神经网络是首先被提出的,它是一种时间上进行线性递归的神经网络,也就是我们通常所说的RNN。


递归神经网络(recursive neural network)被视为循环神经网络(recurrent neural network)的推广,这是一种在结构上进行递归的神经网络,常用于自然语言处理中的序列学习,它的输入数据本质不一定是时序的,但结构却往往更加复杂,我们这里只说循环神经网络。


一个RNN的结构如下:

640?wx_fmt=png

左侧就是模型的基本结构,右侧就是它在时间上进行展开的示意图。xt是时刻t的输入,相应的ht,ot分别是对应时刻t的隐藏层和输出层。


上面我们可以看出,一个RNN的输入包括了两个:一个是当前时刻输入xt,用于实时更新状态,另一个是上一时刻隐藏层的状态ht-1,用于记忆状态,而不同时刻的网络共用的是同一套参数。

RNN中常用的激活函数是tanh,所以上面的式子写成公式,就是:

640?wx_fmt=png

w就是要学习的权重,用几句代码表示RNN就是。

class RNN: 

   def step(self, x): 

      self.h = np.tanh(np.dot(self.W_hh, self.h) + np.dot(self.W_xh, x)) #更新隐藏层

      y = np.dot(self.W_hy, self.h) #得到输出

   return y

普通卷积神经网络的优化使用的是反向传播,那么RNN使用的是什么呢?最常见的还是反向传播,不过是带时序的版本,即BPFT(backpropagation through time),它与BP的原理是完全一样的,只不过计算过程与时间有关。


与普通的反向传播算法一样,它重复地使用链式法则,区别在于损失函数不仅依赖于当前时刻的输出层,也依赖于下一时刻。所以参数W在更新梯度时,必须考虑当前时刻的梯度和下一时刻的梯度,传播示意图如下;

640?wx_fmt=png

具体的公式我们就不编辑了,大家可以找书看,之所以有后续的LSTM等,就是因为RNN有大问题:因为t时刻的导数会传播到t-1,t-2,... ,1时刻,这样就有了连乘的系数。

连乘一直带来了两个问题:梯度爆炸和消失。而且,在前向过程中,开始时刻的输入对后面时刻的影响越来越小,这就是长距离依赖问题。这样一来,就失去了“记忆”的能力,要知道生物的神经元拥有对过去时序状态很强的记忆能力。

02

LSTM

前面说的RNN有两个问题,长短期记忆(Long short-term memory, LSTM)就是要解决这两个问题,通过引入若干门来解决,相比RNN多了一个状态cell state。

这个cell state承载着之前所有状态的信息,每到新的时刻,就有相应的操作来决定舍弃什么旧的信息以及添加什么新的信息。这个状态与隐藏层状态h不同,在更新过程中,它的更新是缓慢的,而隐藏层状态h的更新是迅速的。

LSTM的网络结构图如下,输入包括ht-1,xt,输出ht,状态为ct-1,ct。

640?wx_fmt=png

2.1  遗忘门与遗忘阶段

遗忘门决定了要从上一个状态中舍弃什么信息,它输入上一状态的输出ht-1、当前状态输入信息xt到一个Sigmoid函数中,产生一个介于0到1之间的数值,与上一个时刻的状态ct-1相乘之后来确定舍弃(保留)多少信息。0 表示“完全舍弃”,1 表示“完全保留”,这个阶段完成了对上一个节点cell state进行选择性忘记,遗忘门和它的输出公式如下:

640?wx_fmt=png

2.2 输入门与选择记忆阶段

选择记忆阶段,也就是对输入有选择性地进行“记忆”,重要的记录下来,不重要的少记一些,它决定了要往当前状态中保存什么新的信息。它输入上一状态的输出ht-1、当前输入信息xt到一个Sigmoid函数中,产生一个介于0到1之间的数值it来确定需要保留多少的新信息。


“候选新信息”则通过输入上一状态的输出、当前状态输入信息和一个tanh激活函数生成。有了遗忘门和输入门之后,就得到了完整的下一时刻的状态Ct,它将用于产生下一状态的隐藏层ht,也就是当前单元的输出。

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

2.3 输出门与输出阶段

输出门决定了要从cell state中输出什么信息。与之前类似,会先有一个Sigmoid函数产生一个介于0到1之间的数值Ot来确定我们需要输出多少cell state中的信息。cell state的信息在与Ot相乘时首先会经过一个tanh层进行“激活”,得到的就是这个LSTM block的输出信息ht。

640?wx_fmt=png

以上就是LSTM的基本原理,它通过门控状态来对信息进行选择性的记忆,满足了需要长时间记忆信息和遗忘信息的需求。

当然,随之而来的就是大量的参数,因此后续就有了GRU。另外,RNN和LSTM不止有单向的,还有双向的,这些就留给读者自己去学习了。

总结

时序模型在语音,视频以及自然语言处理等领域有不可替代的作用,虽然相比普通的CNN,模型的复杂度和训练难度都增加了不少,但是在进阶之路上也是需要好好掌握的。

转载文章请后台联系

侵权必究

更多请关注知乎专栏《有三AI学院》

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期模型精选

想要变身”AI专家“,就戳戳手指关注我们吧

别忘了点“好看”支持作者噢  ??? 

机器学习面试准备(持续更新)--- 优秀博文传送门,收集优秀资源 优秀博文传送门,收集优秀资源 阅读详情

相关推荐

一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】

本文主要译至并加上了部分笔者的见解,对于全面理解LSTM有一定的帮助。

zik的博客 3079

一文读懂RNN&LSTM

在左边部分中,是神经网络的输入,是输入层到隐藏层之间的权重矩阵,是记忆单元到隐藏层之间的权重矩阵,是隐藏层到输出层之间的权重矩阵,是隐藏层的输出,同时也是要保存到记忆单元中,并与下一时刻的一起作为输入,是神经网络的输出。循环神经网络的记忆单元会保存时刻时循环层(既图中的隐藏层)的状态,并在时刻,将记忆单元的内容和时刻的输入一起给到循环层。要注意的是,在计算时,每一步使用的参数U 、 W 、 b U、W、bU、W、b都是一样的,也就是说每个步骤的参数都是共享的,这是RNN的重要特点,一定要牢记。

IT_GGMonster的博客 2867

llama factory

NOTE] 除上述链接以外的其他网站均为未经许可的第三方网站,请小心甄别。

thesky123456的博客 1273

【项目实战】Python实现循环神经网络RNN-LSTM回归模型项目实战(股票价格预测)

【项目实战】Python实现循环神经网络RNN-LSTM回归模型项目实战(股票价格预测)

张陈亚的博客 1万+

LCD、LED、OLED、Mini LED、Micro LED、全阵列LED、QLED、QD-OLED、QNED、AMOLED是什么意思?

LCD(液晶显示器,Liquid Crystal Display)定义:LCD 是一种利用液晶材料控制光线通过的显示技术,需依靠背光源(如冷阴极荧光灯 CCFL 或 LED)照亮液晶层以形成图像。技术原理:液晶分子在电场作用下改变排列,控制背光通过的强度和颜色。液晶本身不发光,需外部光源。特点:结构包括背光层、液晶层、彩色滤光片和偏光片。响应时间较慢,黑色表现因背光漏光而偏灰。LED(发光二极管显示,Light Emitting Diode)定义。

中国最威武的城市!武功军威-武威,铁骨铮铮! 3431

UOS的ARM机编译QT5.14.2记录

我需要的qt版本是Qt5.14.2,所以选择编译Qt5.14.2源码;几个月前尝试了编译一次,当时编译过程中出现了报错,当时时间很紧最后安装的默认版本来使用,最近有时间重新进行了一次编译,历经3个星期(4G的内存)终于解决了各种坑,编译成功了,现在将编译过程中遇见的一些坑记录一下,方便日后能记得这一次可恶的编译过程,如有描述欠缺的地方,还希望各位大佬给点意见指导指导🙏。

NiF693zzz的博客 1619

一文看懂从 RNN 到 LSTM

来自 |知乎 作者 |陈诚链接 | https://zhuanlan.zhihu.com/p/32085405这是在看了台大李宏毅教授的深度学习视频之后的一点总结和感想。看完介绍的...

大数据技术派 769

sentaurus学习笔记(HFET_pGate_GaN仿真)(九)

`(sdedr:define-constant-profile-placement "Ohmic.s" "Ohmic" "Pl.ohmic.s" 0.002)`这一行将`"Ohmic"`掺杂剖面放置在`"Pl.ohmic.s"`参考评估窗口中,同样`0.002`可能表示掺杂剖面在窗口中的偏移量或其他参数。欧姆接触是半导体器件中的一种低阻抗电气接触,通常需要高掺杂来减少接触电阻并提高器件性能。通过这些步骤,SDE能够为器件的源极和漏极区域设置高掺杂的欧姆接触,这对于确保器件的高性能和低接触电阻至关重要。

qq_52640792的博客 1382

从RNN到LSTM:深度学习在自然语言处理领域的惊艳算法

当谈到计算机科学时,算法是一个重要的话题,因为它们能帮助解决很多问题。而有些算法,其高效性和惊人表现,令人感到惊艳。在自然语言处理领域,有很多受到关注的算法,比如词向量、语言模型、注意力机制等,这里我将以深度学习中的RNN模型、LSTM模型、YOLO算法为例进行介绍。

工宗浩生财指南针 924

【IIC通信】Chap.1(I2C)IIC通信原理、IIC读写时序详解

IIC通信以两根连线SDA、SCL实现了完善的全双工同步数据传送, 可以方便地构成多机系统和外围器件扩展系统。

Jie_MSD的博客 2万+

Android malloc_debug实现原理及使用

2)设置 __libc_globals 对象中的 libc_globals.default_dispatch_table 和 current_dispatch_table 指向 malloc_dispatch_table,以后在 malloc 库函数里都会通过 GetDispatchTable(),这个函数就是返回的 current_dispatch_table 指针;MAX_FRAMES 表示被抓取的 frames 的数量,如果设为0, 表示在分配空间被释放时,不会抓取任何调用栈。

专注于系统快稳省领域 3744

「模型解读」浅析RNN到LSTM

https://www.toutiao.com/a6711704602531594764/ 卷积神经网络使用固定大小的矩阵作为输入(比如一张图片),然后输出一个固定大小的向量(比如不同分类的概率),适合于图像分类,目标检测,图像分割等。但是除了图像外,还有非常多的信息是非固定长度或者大小的,比如视频,语音,此时更加适合用来处理这些时序信号的网络就是一些时间序列模型。 常见的时间序列模型包...

喜欢打酱油的老鸟 701

aistudio高效解压zip文件的实用技巧

本文详细介绍了在百度AI Studio平台上高效解压ZIP文件的实用技巧。针对深度学习项目数据准备中的常见痛点,重点讲解了使用Python zipfile库和Linux unzip命令两种核心方法,并提供了路径设置、大文件处理、中文乱码等关键问题的解决方案,帮助用户提升数据处理效率。

salt的博客 788

从RNN到LSTM

【模型解读】浅析RNN到LSTM 本文转载自知乎为言有三的模型解读 源地址为:https://zhuanlan.zhihu.com/p/55949716 原文作者: 知乎言有三,公众号《有三AI》号主,书籍作者,AI/摄影/羽毛球/电影 卷积神经网络使用固定大小的矩阵作为输入(比如一张图片),然后输出一个固定大小的向量(比如不同分类的概率),适合于图像分类,目标检测,图像分割等。但是除了图像外,还有非常多的信息是非固定长度或者大小的,比如视频,语音,此时更加适合用来处理这些时序信号的网络就是一些时间序列模

SmartLab307的博客 467

深度强化学习在足式机器人中的应用 (一):基础原理与仿真环境

我们将首先深入探讨其背后的核心挑战与技术栈,然后详细推导机器人学和强化学习的基本数学原理,特别是剖析在机器人控制领域表现卓越的PPO算法。下面的独立Python脚本展示了Isaac Gym的基本API用法,加载一个Go1机器人(假设URDF已准备好),并让它执行一个简单的预设动作(正弦波运动),以此来熟悉仿真流程。:代码的核心是直接操作GPU上的PyTorch张量,避免了CPU和GPU之间的数据拷贝,这是实现高性能的关键。:所有计算(如伪策略中的正弦波计算)都应该是向量化的,一次性为所有。

VectorShift的博客 228

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

深度学习模型浅析

循环神经网络RNN(Recurrent Neural Networks) 擅长处理序列数据,如语音、文本等。而深度学习(Deep Learning, DL)作为AI皇冠上的明珠,更是以其卓越的表现引领着新一轮的技术革命。接下来,我们将揭开深度学习模型神秘面纱,一同探索其背后的工作原理。尽管面临诸多挑战,如过拟合、可解释性缺乏等问题,但其未来发展前景依然十分乐观。未来,深度学习将继续与其他领域深度融合,带来更多创新成果,创造无限可能。直到21世纪初,随着GPU技术突破和大数据积累,DL迎来第二次春天。

2401_89185419的博客 780

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

搜索和CTR预估入坑指南

搜索小白、CTR小白,整理了一份入坑指南,一些比较好的博客和论文。本文适用于有一定的机器学习和深度学习基础,但是不懂搜索和CTR的同学。

forget-tears的博客 833

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

nn.调用各种模型层 详解

1.通俗讲解pytorch中nn.Embedding原理及使用 :通俗讲解pytorch中nn.Embedding原理及使用 - 简书 (jianshu.com)

、Lu的博客 509

【模型解读】说说移动端基准模型MobileNets

文章首发于微信公众号《与有三学AI》 【模型解读】说说移动端基准模型MobileNets 这是深度学习模型解读第4篇,本篇我们将介绍MobileNets。 作者&编辑| 言有三 01 概述 Google开发的MobileNets【1】是用于嵌入式平台计算机视觉应用的基准模型。MobileNets是流线型的架构,它使用depthwise sparable convolu...

hacker_long的专栏 1218

【模型解读】“全连接”的卷积网络,有什么好?

【模型解读】“全连接”的卷积网络,有什么好? 这是深度学习模型解读第8篇,本篇我们简单介绍Densenet。 作者&编辑 | 言有三 1 从skip connect到dense connect 我们知道,曾经深度网络训练不好收敛,Resnet的出现打破了这一僵局,背后的思想仅仅只是拉了一个skip connect,也就是将输入和输出相连相加,下面是一个resnet18的展...

hacker_long的专栏 1464

【模型解读】pooling去哪儿了?

文章首发于微信公众号《与有三学AI》 【模型解读】pooling去哪儿了? 这是深度学习模型解读第5篇,本篇我们将介绍深度学习模型中的pooling。 作者&编辑 | 言有三 01 概述 相信大家都记得,LeNet5,AlexNet,Vgg系列的核心思想,是convolution+pooling的核心结构。 但是,不知道从何时开始,pooling没了,对,就...

hacker_long的专栏 614

全局稳定性收敛平衡点为0吗_【模型解读】Inception结构,你看懂了吗

这是深度学习模型解读第3篇,本篇我们将介绍GoogLeNet v1到v3。1 Inception V1【1】GoogLeNet首次出现在2014年ILSVRC 比赛中获得冠军。这次的版本通常称其为Inception V1。Inception V1有22层深,参数量为5M。同一时期的VGGNet性能和Inception V1差不多,但是参数量也是远大于Inception V1。Inception M...

weixin_33773734的博客 109

3d卷积神经网络_【模型解读】从2D卷积到3D卷积,都有什么不一样

接着模型解读系列,在中国科幻作家刘慈欣的科幻小说《三体Ⅲ·死神永生》中,首次提出了降维打击这个概念,这是本质上区别于同一维度的攻击,破坏性也更大。而现在我们要说的是从二维卷积升级到三维卷积,它相比2D卷积是否会有不一样呢? ...

weixin_42347486的博客 1394

卷积神经网络ppt_【模型解读】NIN中的1*1卷积,你懂了吗

这是深度学习模型解读第2篇,本篇我们将介绍Network In Network。Network In Network 是发表于2014年ICLR的一篇paper。这篇文章采用较少参数就取得了Alexnet的效果,Alexnet参数大小为230M,而Network In Network仅为29M,这篇paper主要两大亮点:1 提出MLP卷积层下图是传统卷积结构:使用relu的一个非线性变换操作为:...

weixin_39981185的博客 337

[深度学习概念]·注意力机制浅析(Attention is All You Need论文)

转载地址 实战博客地址 GitHub:https://github.com/xiaosongshine/transfromer_keras 前言 2017 年中,有两篇类似同时也是笔者非常欣赏的论文,分别是 FaceBook 的 Convolutional Sequence to Sequence Learning 和 Google 的 Attention is All You Need,...

简明AI工作室 3977

【模型解读】network in network中的1*1卷积,你懂了吗

文章首发于微信公众号《与有三学AI》 【模型解读】network in network中的1*1卷积,你懂了吗 这是深度学习模型解读第二篇,本篇我们将介绍NetworkInNetwork。 作者&编辑 | 言有三 NetworkInNetwork是发表于2014年ICLR的一篇paper。这篇文章采用较少参数就取得了Alexnet的效果,Alexnet参数大小为230M,而...

hacker_long的专栏 735
上一篇: 【研究院】低调务实的网易人工智能,你熟悉吗?
下一篇: 【模型解读】历数GAN的5大基本结构
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值