浅谈RNN、LSTM + Kreas实现及应用

简介: 本文主要针对RNN与LSTM的结构及其原理进行详细的介绍,了解什么是RNN,RNN的1对N、N对1的结构,什么是LSTM,以及LSTM中的三门(input、ouput、forget),后续将利用深度学习框架Kreas,结合案例对LSTM进行进一步的介绍。

本文主要针对RNN与LSTM的结构及其原理进行详细的介绍,了解什么是RNN,RNN的1对N、N对1的结构,什么是LSTM,以及LSTM中的三门(input、ouput、forget),后续将利用深度学习框架Kreas,结合案例对LSTM进行进一步的介绍。

一、RNN的原理

  RNN(Recurrent Neural Networks),即全称循环神经网络,它是一种对序列型的数据进行建模的深度模型。如图1.1所示。

 

图1.1

 

  1、其中为序列数据。即神经网络的输入,例如nlp中,X1可以看作第一个单词、X2可以看作是第二个单词,依次类推。语音处理中,可以将是每帧的声音信号。时间序列中,例如,某生活用品的销量数据。

  2、U、W、V是参数矩阵,b、c是偏置项,f是激活函数,通常采用”热撸”、tanh函数作为激活函数,用softmax将输出转换成各个类别的概率。

  3、上图为经典的RNN结构,其运算过程可以表示为:

 

式中:表示神经网络的输出;表示前一个时间点的状态;

  4、考虑到输入与输出的关系,序列问题具有以下分类:

       一对多的RNN结构:序列输出,用于图像字幕,如图1.2所示。

 

图1.2

  多对一的RNN结构:序列输入,用于情感分类,如图1.3所示。

 

 

图1.3

  多对多:序列输入和输出,用于机器翻译

  同步多对多:同步序列输入和输出,用于视频分类

二、LSTM的原理

  上面第一部分简单介绍了RNN的几种结构,接下来,介绍一下RNN的改进版:LSTM。LSTM(long short-term memory,长短时记忆网络),它的出现解决了很难处理的“长程依赖”问题,即无法学到序列中蕴含的间隔时间较长的规律RNN每一层的隐状态都由前一层的隐状态经过变换和激活函数得到,反向传播求导时最终得到的导数会包含每一步梯度的连乘,将会引起梯度的消失或者梯度的爆炸。LSTM在隐状态使用了加法替代了每一步的迭代变换,这样便可以避免梯度消失的问题,从而使得网络学到长程的规律。

RNN可用图1.4表示

 

 

图1.4

 

  同理,LSTM的结构图1.5所示

 

图1.5

  其中图1.5中的符号,长方形表示对输入的数据做变换或激活函数;圆形表示逐点,逐点运算是指两个形状完全相同的矩形的对应位置进行相加、相乘或者其他的一些运算;箭头则表示向量会在那里进行运算。注意: 通过concat操作,才进入Sigmoid或tanh函数。

  RNN与LSTM有所不同,LSTM的隐状态有两部分,一部分是ht ,另一部分则是在各个步骤之间传递的主要信息,绿色的水平线可看作“主干道”,如图1.6所示。通过加法,可以无障碍的在这条主干道上传递,因此较远的梯度也可以在长程上传播,这便是LSTM的核心思想

 

图1.6

  但是,不是每一步的信息都是完全使用前一步的,而是在 的基础之上“遗忘”掉一些内容,或“记住”一些内容。

  1、  遗忘门,我们首先谈一谈遗忘门,每个单元都有一个“遗忘门”,用来控制遗忘掉 的那些部分,其结构如图1.7所示。其中σ是sigmoid激活函数,它的输出在0~1之间,遗忘门输出的 相同形状的矩阵,该矩阵将会和逐点相乘,决定遗忘掉那部分内容。经过激活函数的输出,f取值接近0的维度上的信息就会被“忘记”,而f取值接近1的维度上的信息就会被保留。

 

图1.7

  2、 输入层,如图1.8,在循环神经网络“忘记”了部分之前的状态后,它还需要从当前的输入补充最新的记忆,这个过程就是“输入门”完成的。输入门的输入同样是两项,分别是:。它的输出项,一项是 同样经过Sigmoid函数运算得到,其值都是在0~1之间,还有一项。最终要“记住”的内容是点相乘,如图1.9。

 

 

图1.8

 

图1.9

3、  输出门,输出门用于计算另一个隐状态的值,真正的输出(如类别)需要通过做进一步运算得到。输出门的结构如图1.20所示,同样根据计算,中每一个数值在0~1之间,通过得到。

 

图1.20

最终总结:LSTM中每一步的输入是,隐状态是,最终的输出必须要经过进一步变换得到。

原文地址https://www.cnblogs.com/shenpings1314/p/10428519.html

相关文章
|
30天前
|
机器学习/深度学习 自然语言处理 数据处理
大模型开发:描述长短期记忆网络(LSTM)和它们在序列数据上的应用。
LSTM,一种RNN变体,设计用于解决RNN处理长期依赖的难题。其核心在于门控机制(输入、遗忘、输出门)和长期记忆单元(细胞状态),能有效捕捉序列数据的长期依赖,广泛应用于语言模型、机器翻译等领域。然而,LSTM也存在计算复杂度高、解释性差和数据依赖性强等问题,需要通过优化和增强策略来改进。
|
1天前
|
机器学习/深度学习 算法 Python
Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测
Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测
31 12
|
30天前
|
机器学习/深度学习 存储 人工智能
基于NumPy构建LSTM模块并进行实例应用(附代码)
基于NumPy构建LSTM模块并进行实例应用(附代码)
44 0
|
30天前
|
机器学习/深度学习 人工智能 PyTorch
基于Numpy构建RNN模块并进行实例应用(附代码)
基于Numpy构建RNN模块并进行实例应用(附代码)
33 0
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
神经网络结构——CNN、RNN、LSTM、Transformer !!
神经网络结构——CNN、RNN、LSTM、Transformer !!
132 0
|
3月前
|
机器学习/深度学习 自然语言处理 数据处理
RNN vs LSTM:序列数据处理的选择
RNN vs LSTM:序列数据处理的选择
50 0
|
4月前
|
机器学习/深度学习 存储 自然语言处理
一文带你了解【深度学习】中CNN、RNN、LSTM、DBN等神经网络(图文解释 包括各种激活函数)
一文带你了解【深度学习】中CNN、RNN、LSTM、DBN等神经网络(图文解释 包括各种激活函数)
114 0
|
4月前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch搭建RNN联合嵌入模型(LSTM GRU)实现视觉问答(VQA)实战(超详细 附数据集和源码)
PyTorch搭建RNN联合嵌入模型(LSTM GRU)实现视觉问答(VQA)实战(超详细 附数据集和源码)
73 1
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
循环神经网络(RNN)在自然语言处理中的应用与挑战
循环神经网络(RNN)在自然语言处理中的应用与挑战
84 0
循环神经网络(RNN)在自然语言处理中的应用与挑战
|
4月前
|
机器学习/深度学习 自然语言处理 计算机视觉
RNN长短期记忆(LSTM)是如何工作的?
RNN长短期记忆(LSTM)是如何工作的?
94 0
RNN长短期记忆(LSTM)是如何工作的?

热门文章

最新文章

相关实验场景

更多