【王树森】Transformer模型(1/2): 剥离RNN,保留Attention(个人向笔记)

Transformer简介

  • Transformer 是一个Seq2Seq模型
  • Tramsformer 不是RNN
  • Transfomer 只有attention和全连接层
  • 机器翻译在大型数据集上完爆最好的RNN

Review Attention for RNN

这节课讲的attention相对比于前两节课多了一个 v i v_i vi,之前是用权重直接乘 h h h,而在这里是乘以 v v v。最后得到向量 c c c
在这里插入图片描述


Attention without RNN

  • Attention一开始设计是用在RNN上的,那么我们应该如何把attention从RNN中剥离出来呢?
  • 本节课将使用一个attention和一个self-attenion层搭建一个Transformer

1. 设计一个attention层用于Seq2Seq模型

  • Seq2Seq模型有一个encoder和一个decoder
  • encoder接受 m m m 个词向量的输入
  • decoder接受 t t t 个词向量的输入,来生成下一个单词
  • 对于encoder的输入向量,我们用两个个矩阵 W K W_K WK W V W_V WV 将其变换为上面的 k k k 向量和 v v v 向量:
    在这里插入图片描述
  • 对于decoder的输入向量,我们用一个矩阵 W Q W_Q WQ 将其变换为上面的 q q q 向量
    在这里插入图片描述
  • K K K m m m k k k 向量叠在一起的矩阵,用 q q q K K K 算出相关性,其中 α \alpha α m m m 维的向量,元素及总和为1,代表着 m m m k k k 向量和 q q q 的相关性
    在这里插入图片描述
  • 利用得到的相关性和 v v v 计算 context vector c c c,其中这一系列运算可以简化为 V α V\alpha Vα
    在这里插入图片描述
  • 对所有的 q q q 用类似的方法计算出所有 context vector c c c,这样attenion层的输出就是一个 C C C 矩阵
    在这里插入图片描述
  • 对于一个 c i c_i ci 来说,它依赖于decoder的当前输入 x i ′ x'_i xi,还有所有encoder的输入 x 1 , x 2 . . . , x m x_1,x_2...,x_m x1,x2...,xm
    在这里插入图片描述
  • 以英译德为例:利用decoder的 x 2 ′ x'_2 x2 和 所有encoder的输入 x 1 , x 2 . . . , x m x_1,x_2...,x_m x1,x2...,xm,我们可以生成 c 2 c_2 c2,然后把 c 2 c_2 c2 丢进一个softmax里面产生概率来预测下一个德语单词。 c 2 c_2 c2 是知道整句英语的,所以可以很好的避免遗忘问题
    在这里插入图片描述
  • 总结Attenion层:接受encoder的输入 X = [ x 1 , x 2 , . . . , x m ] X=[x_1,x_2,...,x_m] X=[x1,x2,...,xm] 和decoder的输入 X ′ = [ x 1 ′ , x 2 ′ , . . . , x t ′ ] X'=[x'_1,x'_2,...,x'_t] X=[x1,x2,...,xt],输出一个context vector矩阵 C = [ c 1 , c 2 , . . . , c t ] C=[c_1,c_2,...,c_t] C=[c1,c2,...,ct],其中参数有三个矩阵: W K , W Q , W V W_K,W_Q,W_V WK,WQ,WV,它们需要从数据中学习
    在这里插入图片描述

2. 搭建一个Self-Attention层取代RNN

  • self-attention层和attention层完全类似,只是输入不同:其中任意一个词向量的改变都会影响到别的词向量
    在这里插入图片描述
  • 在self-attention里:每一个输入的向量都要被变换为 q , k , v q,k,v q,k,v
    在这里插入图片描述
  • 而权重计算也是类似的:对于 α 1 \alpha_1 α1 来说,它依赖于 q 1 q_1 q1,和其他所有的 k k k
    在这里插入图片描述
  • 对于 c 1 c_1 c1 计算来说,既依赖于上面它计算出的权重 α \alpha α 也依赖于所有的 v v v
    在这里插入图片描述

Summary

  • attention最初被用于改善RNN的Seq2Seq模型
  • 后来发现attention不仅仅局限于Seq2Seq模型,而是可以被用在所有的RNN上
  • 之后发现可以直接从RNN中剥离出attention作为一个模型使用
  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值