【王树森】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作为一个模型使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GD32】从零开始学GD32单片机 | USB通用串行总线接口+HID键盘例程(GD32F470ZGT6)

1. 简介 USB,全称通用串行总线,相信大家都非常熟悉了,日常生活只要用到手机电脑都离不开这个接口,像鼠标键盘U盘都需要使用这个接口进行数据传输,下面简单介绍一下。 1.1 版本标准 USB的标准总体可以分为低速、全速和…

业务资源管理模式语言02

图1 模式间的依赖关系 第一节:最开始,关注应用中包括的资源。首先,必须标识资源(1),下一步,检查资源限定(2),同时量化资源(3) 模式1…

c#笔记5 详解事件的内置类型EventHandler、windows事件在winform中的运用

为什么要研究这一问题? 事件和委托可以说是息息相关。 前面先解释了什么是委托,怎么定义一个委托以及怎么使用匿名方法来内联地新建委托。 事实上事件这一机制在c#的程序开发中展很重要的地位,尤其是接触了winform软件开发的同学们应该都知…

Unity 动态光照贴图,加载后显示变暗或者变白问题 ReflectionProbe的使用

动态加载光照贴图代码,可参考这个帖子 Unity 预制动态绑定光照贴图遇到变白问题_unity urp 动态加载光照信息 变黑-CSDN博客 这次遇到的问题是,在编辑器下光照贴图能正常显示,打出apk后光照贴图加载后变黑的问题 以下4张图代表4种状态&…

opencascade 重叠曲线设置优先显示

‌OpenCASCADE重叠曲线显示设置‌ 当出现重叠曲线时,往往需要设置 优先显示的对象 关键点 SetDisplayPriority SetLayer

磁性齿轮箱市场报告:前三大厂商占有大约79.0%的市场份额

磁性齿轮箱是一种用于扭矩和速度转换的非接触式机构。它们无磨损、无摩擦、无疲劳。它们不需要润滑剂,并且可以针对其他机械特性(如刚度或阻尼)进行定制。 一、全球磁性齿轮箱行业现状与洞察 据 QYResearch 调研团队最新发布的“全球磁性齿轮…

10分钟了解OPPO中间件容器化实践

背景 OPPO是一家全球化的科技公司,随着公司的快速发展,业务方向越来越多,对中间件的依赖也越来越紧密,中间件的集群的数量成倍数增长,在中间件的部署,使用,以及运维出现各种问题。 1.中间件与业…

桥接与NET

仔细看看下面两幅图 net模式,就是在你的Windows电脑(假设叫A电脑)的网络基础上,再生成一个子网络,ip的前两位默认就是192.168,然后第三位是随机,第四位是自己可以手动设置的。使用这种模式唯一的…

设计模式结构型模式之代理模式

结构型模式之代理模式 一、概念和使用场景1、概念2、核心思想3、java实现代理模式的方式4、使用场景 二、示例讲解1. 静态代理2. 动态代理 三、总结1、使用规则2、代理模式的优点包括:3、代理模式的缺点包括: 一、概念和使用场景 1、概念 代理模式是一…

HUD杂散光环境模拟测试设备

概述 HUD(Head-Up Display)杂散光环境模拟测试设备是用于模拟飞行器在实际运行过程中可能遇到的多种光照环境的系统。它主要用于测试和验证HUD显示系统的性能,确保其能在各种光线条件下清晰、准确地显示信息,从而保障飞行员在复杂…

【大模型理论篇】通用大模型架构分类及技术统一化

1. 背景 国内的 “百模大战” 以及开源大模型的各类评测榜单令人眼花缭乱,极易让人陷入迷茫。面对如此众多的大模型,我们该如何审视和选择呢?本文将从大模型架构的角度,对常见的开源大模型架构进行汇总与分析。资料来源于公开…

2024全国大学生数学建模国赛,成员如何分工协作?

文末获取2024国赛数学建模思路代码,9.5开赛后第一时间更新 大家知道,数学建模竞赛是需要一个团队的三个人在三天或四天的时间内,完成模型建立,编程实现和论文写作的任务,对许多第一次参加建模或者建模经验比较欠缺的团…

Android 使用原生相机Camera在预览界面进行识别二维码或者图片处理

1 项目需求 最近项目中有个需求:使用原生相机在预览界面进行识别二维码和图片处理。其实这个需求不是很难,难在对预览画面的处理过程。 自己针对这个需求写了一个工具类,便于后续进行复盘,同时也分享给有类似需求的伙伴们。 2 遇到的问题 2.1 二维码识别成功率低 使用…

由浅入深学习 C 语言:Hello World【提高篇】

目录 引言 1. Hello World 程序代码 2. C 语言角度分析 Hello World 程序 2.1. 程序功能分析 2.2 指针 2.3 常量指针 2.4 指针常量 3. 反汇编角度分析 Hello World 程序 3.1 栈 3.2 函数用栈传递参数 3.3 函数调用栈 3.4 函数栈帧 3.5 相关寄存器 3.6 相关汇编指令…

优化学习管理:Moodle和ONLYOFFICE文档编辑器的完美结合

目录 前言 一、什么是 Moodle 1、简单快速插入表单字段 3、免费表单模板库 4、开启无缝协作 三、在Moodle中集成ONLYOFFICE文档 四、在Moodle安装使用ONLYOFFICE 1、下载安装 2、配置服务器 3、在Moodle中使用ONLYOFFICE 文档活动 五、未来展望 写在最后 前言 在当今教育科技飞…

JVM垃圾回收算法:标记-清除算法 、复制算法、 标记-整理算法、 分代收集算法

文章目录 引言I 标记回收算法(Mark-Sweep)算法不足II 复制算法(Copying)III 标记整理算法(Mark-Compact)IV 分代收集(以上三种算法的集合体)内存划分新生代算法:Minor GC老年代算法V 查看JVM堆分配引言 垃圾回收(Garbage Collection,GC) Java支持内存动态分配、…

Flask+LayUI开发手记(六):树型表格的增删改查

树型表格的增删改查功能与数据表格的是完全一致,就是调用layui-form表单组件实现数据输入再提交,比较大的区别是树型节点的编辑,都需要有上级节点的输入,而这个上级节点的展示,必须是以树型方式展示出来。当然&#xf…

语音控制开关的语音识别ic芯片方案

语音控制开关是一种基于语音识别技术的设备,它通过内置的语音识别芯片,将用户的语音指令转化为电信号,从而实现对设备的控制。例如在智能家居设备上的应用,通常需要连接到家庭的Wi-Fi网络上,以便与智能手机或智能音箱等…

golang RSA 解密前端jsencrypt发送的数据时异常 crypto/rsa: decryption error 解决方法

golang中 RSA解密前端(jsencrypt)发来的密文后出现 "crypto/rsa: decryption error" , 这个问题首先需要确认你的私匙和公匙是否匹配, 如果匹配 那检查入参数据类型, 前端发送来的rsa加密后的数据一般都是…