LSTM算法原理理解

神经网络

  模拟人类大脑神经网络结构,每个神经元和其他的神经元相互连接,当它兴奋的时候会向相连的神经元发送化学物质,从而改变神经元的电位,当神经元的电位超过阈值,它会被激活,向其他神经元发送化学物质。其实神经网络的本质就是学习从输入到输出的函数映射,因为遇到一个未知的问题,无法对问题进行函数建模,利用神经网络学习出函数模型,这个学习的结果最终其实是每一层神经元的权重。

  每一个神经元都会在线性运算后的结果上(W*x+b),套上一个激活函数。激活函数的作用其实就是增强网络模型的非线性性,因为激活函数就是一个非线性函数,当如果每一层神经元后不添加激活函数,那么输出其实就是输入的线性组合,不管网络有多少层,输出就是输入的线性组合。常见的激活函数有tanh(-1,1),sigmod(0,1),relu[0,1)。

RNN

  普通的神经网络假设输入和输入之间是相互独立的,但是很多时候人类理解事物都是基于上下文的。RNN和普通的神经网络的区别在于,不仅仅每层之间的神经元存在连接,同一层之间的神经元也存在连接,上一个时刻的状态能作用与下一个时刻的状态。但是当网络层数过深的时候,RNN不好训练,可能会造成梯度消失或是梯度爆炸的问题。RNN采用基于时间的反向传播法(BPTT)进行训练,这种训练方法也是一种梯度下降法。当网络结构太深,造成网络结构太深,网络权重不稳定,本质来说是因为梯度反向传播中的连乘效应。

  当梯度消失时,会造成神经网络参数无法更新,停止了学习。梯度爆炸则是更新速率太快,大幅度更新网络权重,可能无法学习到权重最佳值,也可能造成权重值为NaN而无法更新权重。

RNN图示结构:

 

LSTM

  RNN无法解决长期依赖问题,输出和前面很长一段序列有关。LSTM则设计用来解决这种问题,LSTM相比RNN来说,就是添加了三个门:遗忘门,输入门,输出门。

  遗忘门:决定从细胞状态中丢弃什么信息

  输入门:决定让多少新的信息加入细胞状态,这一步将输出细胞状态

  输出门:确定输出值,该输出值基于细胞状态 

转载于:https://www.cnblogs.com/xiaobaituyun/p/10688732.html

### LSTM算法原理概述 LSTM(Long Short-Term Memory)是一种特殊类型的RNN(循环神经网络),其核心设计目标是为了克服传统RNN在长时间序列建模中存在的梯度消失和梯度爆炸问题[^2]。LSTM通过引入一种称为“门”的机制,能够有效地控制信息的流动,从而实现对长期依赖关系的学习。 #### LSTM的核心组件 LSTM的主要组成部分包括输入门、遗忘门、输出门以及细胞状态(Cell State)。这些部分共同协作完成信息的选择性保留与更新: 1. **遗忘门(Forget Gate Layer)**: 遗忘门决定了哪些信息应该被丢弃或保持不变。它通过对前一时刻隐藏状态 \( h_{t-1} \) 和当前输入 \( x_t \) 的组合进行处理,并通过一个 sigmoid 层生成一个介于 0 到 1 的数值,其中 0 表示完全丢弃,而 1 表示完全保留[^3]。 2. **输入门(Input Gate Layer)**: 输入门用于决定哪些新信息会被加入到细胞状态中。这一过程分为两步:首先,通过另一个 sigmoid 层判断哪些值需要更新;其次,通过 tanh 层创建一个新的候选值向量,作为可能添加到细胞状态的内容[^3]。 3. **细胞状态(Cell State)**: 细胞状态是 LSTM 中最重要的特征之一,它可以看作是一条贯穿整个网络的信息高速公路。通过加法运算将经过遗忘门过滤后的旧状态与新的候选值结合起来,形成最新的细胞状态。 4. **输出门(Output Gate Layer)**: 输出门负责决定最终输出的结果是什么。具体而言,先利用 sigmoid 函数筛选出一部分细胞状态,再将其传递给 tanh 函数以缩放至 -1 至 1 范围内,最后得到本时刻的输出 \( h_t \)[^3]。 #### LSTM的工作流程 以下是基于上述各部件描述的一个典型工作流: 1. 当前时刻 t 接收到来自外部环境的新输入 \( x_t \),同时也接收到了来自上一时序的记忆单元输出 \( h_{t-1} \) 及记忆单元内部存储的状态 \( c_{t-1} \); 2. 使用遗忘门确定哪些历史记录不再重要需舍去; 3. 借助输入门评估新增内容的重要性及其形式; 4. 更新细胞状态,综合考虑之前保存下来的数据以及现在准备写入的部分; 5. 应用输出门选取适当比例已加工好的数据向外发送成为下一阶段初始条件的一部分。 #### 关键概念——Backpropagation Through Time (BPTT) 为了优化参数,在训练过程中采用了 BPTT 技术。这种方法本质上是对标准 BP 算法的一种扩展应用,特别适用于像 RNN 或者 LSTM 这样具有时间维度特性的模型架构。由于每个时间节点都存在相互关联的关系,因此当计算损失函数相对于各个权重偏导数时,不仅考虑到即时产生的影响,还需要追溯过往若干次迭代累积下来的效应总和[^1]。 #### 图解说明 虽然无法直接展示图片文件,但是可以根据文字叙述构建大致框架理解如下几个方面: - 单元格(Cell): 包含三个主要子模块(忘记门, 输入门, 输出门), 并维护着自己的状态变量C; - 时间轴(Timeline): 显示不同瞬间之间如何交互作用, 如何从前一步继承信息并向后传播改变; - 数据流向(Data Flow Arrows): 清晰标注每一个箭头代表的具体意义, 比如X,Y,H,C等等. ```plaintext +-------------------+ | | | Forget Gate |<----+ | | | +-------+----------+ | | | v | +-------+----------+ | | | | | Input |--->| | Gate | | | | | +-------+----------+ | | | v | +-------+----------+ | | | | | Cell State Update|--->| | | | +-------+----------+ | | | v | +-------+----------+ | | | | | Output |<--+ | Gate | | | +-------------------+ ``` 以上简易图表展示了单个LSTM节点内的基本构成要素及时空联系状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值