自然语言处理之长短时记忆网络(六)

本文深入介绍了长短期记忆网络(LSTM)的概念与结构特点,详细解释了其独特的门控机制如何帮助解决长期依赖问题,包括遗忘门、输入门及状态更新过程。此外还探讨了几种LSTM的变种。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 情感倾向性分析

长短时记忆网络的基本概念

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。

  • LSTM网络结构
  • LSTM的门控机制
  • LSTM的变种

2 LSTM网络结构

2.1 LSTM网络结构及其特点

  • 基于RNN结构设计,从左到有依次阅读整个句子,并不断更新记忆。
  • LSTM在不同cell之间传递的是2个记忆信息,而不像循环神经网络一样只有一个记忆信息。
    在这里插入图片描述

2.2 LSTM内部结构

  • 区别于循环循环神经网络,LSTM最大的特点是,在更新内部记忆的时候,引入了遗忘机制,那就是:允许网络忘记一些过去阅读过程中看到的一些无关紧要的内容,只保留有用的历史内容,通过这种方式,延长了记忆长度。
    在这里插入图片描述

3 LSTM门控机制

3.1 LSTM的关键:细胞状态

  • 细胞状态类似于传送带,直接在整个链上运行,只有一些少量的线性交互。信息在上面保持不变会很容易实现。
    在这里插入图片描述
  • LSTM通过“门控机制”让信息选择性通过,来去除或者增加信息到细胞状态
  • 包含一个sigmoid神经网络层和一个piontwise乘法操作。
  • Sigmiod层输出0到1之间的概率值,描述每个部分有多少量可以通过。
    在这里插入图片描述

3.2 遗忘门

  • 第一步:决定从“细胞状态”中丢弃什么信息
    在这里插入图片描述

3.2 输入门

  • 第二步:决定放什么信息到“细胞状态中”
    在这里插入图片描述

3.3 更新状态

  • 第三步:更新细胞状态
    在这里插入图片描述

4 LSTM变种

4.1 变种1

  • 增加窥视孔链接(peephole connection)
  • 让门层也会接受细胞状态的输入
    在这里插入图片描述

4.2 变种2

  • 通过使用coupled忘记和输入门
  • 之前是分开确定需要忘记和添加的信息,这里是一同作出决定。
    在这里插入图片描述

4.3 变种3:GRU

  • GRU有两个门,分别为更新门和重置门,即图中的zr和rt更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越少,重置门用于控制忽略前一时刻的信息的程度,重置门的值越小说明忽略的越多。
    在这里插入图片描述
### 长短时记忆网络 (LSTM) 原理 长短时记忆网络是一种特殊的循环神经网络(RNN),旨在解决传统RNN中存在的长期依赖问题。LSTM通过引入门控单元——输入门、遗忘门和输出门,有效地控制信息流,从而允许模型记住长时间序列中的重要信息[^1]。 #### LSTM结构特点 - **细胞状态**:作为贯穿整个链的信息高速公路,几乎不会被改变。 - **三个门**:分别决定哪些信息会被更新到细胞状态中(输入门),哪些会从细胞状态丢弃(遗忘门),以及最终输出什么值给下一个时间步(输出门)。 ```python import tensorflow as tf from tensorflow.keras.layers import LSTMCell lstm_layer = LSTMCell(units=64) output, state = lstm_layer(inputs, states=[previous_state_c, previous_state_h]) ``` ### 深度确定性策略梯度 (DDPG) 原理 深度确定性策略梯度属于一类连续动作空间下的强化学习算法,它结合了价值函数估计与直接策略搜索的优点。DDPG采用两个主要组件:一个是用来评估当前行动的好坏的价值网络(Q-network);另一个是用来生成具体行为的策略网络(policy network)。 #### DDPG工作方式 - 使用经验回放(experience replay)机制提高样本利用率; - 利用软更新(target networks)平滑参数变化,增强稳定性; - 对于每一步骤,计算损失并反向传播调整权重; ```python class Actor(tf.keras.Model): def __init__(self, action_dim): super().__init__() self.fc1 = Dense(400, activation='relu') self.fc2 = Dense(300, activation='relu') self.out = Dense(action_dim, activation='tanh') actor_model = Actor(action_dim=env.action_space.shape[0]) @tf.function def train_step(states, actions, rewards, next_states, dones): with tf.GradientTape() as tape: target_actions = actor_target(next_states) y_i = rewards + gamma * critic_target([next_states, target_actions]) * (1-dones) q_value = critic_model([states, actions]) loss_fn = tf.losses.MeanSquaredError() critic_loss = loss_fn(y_i, q_value) gradients = tape.gradient(critic_loss, critic_model.trainable_variables) optimizer.apply_gradients(zip(gradients, critic_model.trainable_variables)) # 更新Actor Network... ``` ### 关系及区别 两者虽然都应用于机器学习领域,但在设计目的和技术细节上存在显著差异: - **适用场景不同**:LSTM主要用于处理具有时间顺序特性的数据集,如自然语言处理、语音识别等领域;而DDPG则专注于解决带有连续动作空间的任务,在机器人运动规划等方面表现出色. - **内部架构各异**:前者基于递归连接模式并通过特殊设计的记忆模块克服梯度消失/爆炸难题;后者则是由两部分组成—即评价型Q网路和决策制定者policy netwrok. ### 应用场景对比 对于需要建模随时间演变规律的问题,比如股票价格预测或是天气预报,LSTM可能是更好的选择因为它擅长捕捉历史趋势。然而当面临涉及物理交互或动态环境互动的情况时,则更倾向于选用像DDPG这样的方法来进行高效探索与试错学习过程.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值