【王树森】RNN模型与NLP应用(8/9):Attention(个人向笔记)

前言

  • 基于RNN的Seq2Seq模型无法记住长序列
  • Attentnion机制可以大幅度提升Seq2Seq模型
    在这里插入图片描述

Seq2Seq Model with Attention

  • Attention可以让句子在逐步变长的时候不忘记前面的输入信息
  • Attention还可以告诉Decoder应该关注哪一个状态
  • 优点:Attention可以大幅度提高准确率
  • 缺点:Attention计算量比较大

Simple RNN + Attention

  • 需要计算最后一个输出的状态和前面所有状态的相关性(权重),把这个权重记为 α i \alpha_i αi,所有的权重总和为1
    在这里插入图片描述
    • 计算方法1(原版):①把 h i h_i hi s 0 s_0 s0 做concatenation,②然后和一个矩阵 W W W(需要被训练的参数)相乘后丢到 tanh 激活函数里面使其范围变为 [ − 1 , 1 ] [-1,1] [1,1] ,③然后再和 v T v^T vT 做内积得到一个实数。④最后把所有的权重做一个Softmax。
      在这里插入图片描述
    • 计算方法2(更流行,和Transformer一致):①将 h i h_i hi W K W_K WK(需要被训练的参数) 相乘得到 k i k_i ki,将 s 0 s_0 s0 W Q W_Q WQ(需要被训练的参数) 相乘得到 q 0 q_0 q0,其中 k i k_i ki q 0 q_0 q0 都是一维的向量。② k i T q 0 k^T_iq_0 kiTq0 得到权重 α i ~ \tilde{\alpha_i} αi~。③对所有的 α i ~ \tilde{\alpha_i} αi~ 做 Softmax即可得到权重。
      在这里插入图片描述
  • 我们对所有的 h i h_i hi 利用刚刚算出的权重计算加权平均得出一个向量 c 0 c_0 c0,其中一个 c c c 对应一个 s s s,计算出的加权平均向量被称为 Context vector。
    在这里插入图片描述
  • 对于更新状态来说,之前的Simple RNN是这样的,它不会去看前面的状态,而是只会看最后一个
    在这里插入图片描述
  • 而有Attention后更新状态还会把之前的信息 c 0 c_0 c0 考虑进去,也就是还会把前面的信息考虑进去,这样就把RNN遗忘的问题解决了
    在这里插入图片描述
  • 而对于后续的状态 s i s_i si 重复前面的步骤即可,注意每次权重 α i \alpha_i αi 都需要重新计算后得出 c i c_i ci
    在这里插入图片描述
  • Question: 有多少权重 α i \alpha_i αi 被计算了?
    • 对于每一个 c i c_i ci ,我们都i需要用 s i s_i si 来计算 m m m 个权重
    • 假设 Decoder 有 t t t 个状态,那么总共就需要计算 m t mt mt
    • 这个时间复杂度是很高的!
  • 权重可视化:在下面的图中,连线表示相关性,连线越粗,相关性越强。而可以看到Area和zone有比较粗的连线,而英语中的Area就对应法语中的zone:权重指导Decoder关注Encoder中正确(如zone会特别关注Area)的状态,从而生成正确的翻译
    在这里插入图片描述

Summary

  • 之前的Seq2Seq模型:Decoder只会关注最后一个状态,容易导致遗忘
  • Attention则会关注Encoder的所有状态
  • Attention还会指导Decoder关注的侧重点
  • 缺点:更高的计算复杂度,之前的模型只需要 O ( m + t ) O(m+t) O(m+t) 的复杂度,而Attention则需要 O ( m t ) O(mt) O(mt) 的复杂度,其中 m m m 是源序列的长度, t t t 是目标序列的长度
  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
王树森的Q学习是一种强化学习算法,广泛应用于机器学习领域。 Q学习是通过不断迭代更新一个称为Q值的表格来实现的。这个表格记录了每个状态和动作组合的Q值,表示在某个状态下,采取某个动作所获得的预期回报。通过学习更新Q值,智能体能够学会在不同的情境下选择最优的动作。 王树森的Q学习算法主要包含以下几个步骤: 1. 初始化Q值表格,设置初始状态和动作; 2. 在每个时间步骤中,智能体观察当前状态和可用的动作,并根据一种策略(如epsilon-greedy)选择一个动作; 3. 执行所选择的动作,观察新的状态和获得的奖励; 4. 更新Q值表格,使用Q-learning更新公式:Q(s, a) = (1 - α) * Q(s, a) + α * (r + γ * max(Q(s', a'))),其中α是学习率,γ是折扣因子,r是获得的奖励,s'是新状态; 5. 重复上述步骤,直到达到指定的终止条件(如达到最大迭代次数或Q值收敛)。 王树森的Q学习算法具有以下优点: 1. 简单而高效:Q学习算法易于理解和实现,可以在很多问题上取得良好的效果; 2. 模型无关性:Q学习不需要事先了解环境的动力学模型,只需要通过与环境的交互进行学习即可; 3. 可扩展性:Q学习可以应用于离散或连续动作空间的问题。 然而,王树森的Q学习算法也存在一些限制和挑战: 1. 状态空间和动作空间的维度较高时,Q值表格会变得非常庞大,导致算法的计算和存储开销很大; 2. Q学习对环境中随机性的处理不够灵活,可能会收敛到局部最优解; 3. Q学习算法通常需要大量的训练数据和迭代次数才能获得较好的结果。 综上所述,王树森的Q学习是一种经典的强化学习算法,通过不断更新Q值表格来实现智能体的学习和决策。虽然存在一些限制,但Q学习在许多问题上取得了良好的效果,是机器学习领域中的一项重要研究内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值