Transformer简介

news2025/1/10 12:07:44

Transformer:

  1. 总体架构

    Transformer是“编码器—解码器”架构,由编码器(encoder)和解码器(decoder)组成,其都是多头自注意力模块的叠加。其中,input sequence分成两部分,分别为源(input)输入序列和目标(output)输出序列。前者输入编码器,后者输入解码器,两个序列均需进行embedding表示并加入位置信息。
    0

  2. encoder

    1. 总体架构:

      Transformer编码器由多个相同的层叠加而成,每个层都有两个子层(sublayer),第一个是多头自注意力(multi-head self-attention)汇聚;第二个子层是基于位置的前馈神经网络。每个子层都采用了残差链接。
      0

    2. 架构设计:
      1. 首先对输入序列进行词嵌入表示并加入位置信息。
      2. 之后,将当前编码器层的输入序列放入多头自注意力层生成新的向量。具体来说,在计算编码器的自注意力时,查询、键和值都来自于前一个编码器层的输出。
      3. 将多头自注意力层的输出与当前编码器层的输入做残差连接并将结果做layer normalization。
      4. 将layer normalization后的结果放入全连接层(feed forward)层。该层的作用是对自注意力层中输出的所有位置表示进行变换,所以其被称为基于位置的前馈神经网络。
      5. 之后进行残差连接并进行layer normalization。
      6. 将结果送入下一个编码器层重复 N N N次。
  3. decoder

    1. 总体架构
      0

      如图,解码器接入编码器最后的输出向量。假设编码器学习的序列是“机器学习”。当解码器接收到[BEGIN]Token时会产生第一个字符“机”,之后由产生的第一个字符“机”产生第二个字符“器”,之后由前两个字符“机器”产生第三个字符“机器学”,之后由产生的前三个字符生成“习”,之后由产生的前四个字符产生[END]token,序列生成结束。

      0

      如图,序列在经过decoder后,会对生成向量做softmax分类,从词表中查表得到生成的字符。

    2. 架构设计:

      如图:

      0

      如图,解码器与编码器组成很相似,其中:

      1. 解码器的第一个multi-head attention变成了masked multi-head attention,该自注意力层只能”向前“看不能”向后看“,因为在解码器中,字符是一个一个产生的,不能”向后“看到当前生成序列的后面字符。
      2. 采用了cross attention层
      3. 在经过 N N N个解码器层后,将输出的向量输入到全连接层并进行softmax分类,得到最终输出字符,并将所有输出字符作为下次输入,直到输出[END]
    3. cross attention

      如图:
      0

      如图,cross attention的q来自decoder,kv来自encoder。该层可以很好的利用编码器学习的信息,也叫”编码器—解码器“注意力层。

  4. 训练:

    1. teacher forcing

      图一:
      0

      图二:
      0

      如图一,训练与预测最大的不同是解码器的输入:

      1. 预测时,解码器的输入除了第一个[BEGIN]字符,其余字符都来自解码器的前一个预测字符。
      2. 训练时,解码器的所有输入都是真实的数据集输入,此时解码器的输出仅仅用来计算交叉熵来进行模型优化。这种方法被叫做teacher forcing

      如图二为Transformer的整体训练架构。

    2. Tips
      1. copy mechanism: 在对话和引用中,一些词汇不必由模型自己产生,而是直接复制输入即可。

        如:–我是小明

        ​ --你好小明

        其中,小明可直接复制由会话中,而不用模型自己生成。

      2. guide attention:

        在特定的问题情境中,强迫注意力层的处理方向。如在语音识别中,处理方向为只有从左到右。

      3. beam search:

        greedy decoding: 在最初的解码器中,进行softmax时只选择当前字符得分最高的字符。但是,单个字符得分最高不代表整个句子中该字符得分最高。

        beam search: 在每次进行字符选择时,选择得分排名前 n n n字符。最后得到的字符得分可能比每次只选择一个字符的得分要好。如图:
        0

        如图,若按照贪心策略,每次都选当前得分最高的字符,那就是红色路径,最后的得分只有0.6,但是若规定每次选择排名前2的字符,那按照绿色路径最后字符的得分为0.9优于红色路径。

        注意:beam search时每次总共选择 n n n个而不是每个分叉选 n n n个。

        当decoder的输出很确定时,使用beam search效果会变好。如:问答

        当decoder的输出带有创造性时,使用beam search效果会变差。如:写文章

    3. Optimizing Evaluation Metrics
      1. 训练时采用交叉熵
      2. 评估模型时采用 BULE score

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

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

相关文章

包管理工具-npm-npx-yarn-cnpm

代码共享方案 在我们通过模块化的方式将代码划分成一个个小的结构后,在以后的开发中我们就可以通过模块化的方式来封装自己的代码,并且封装成一个工具,这个工具我们可以让同事通过导入的方式来使用,甚至你可以分享给世界各地的程…

数字货币的路在哪里?

在人工智能、分布式数据、边缘计算等核心技术不断发展和普及的过程中,Web3 以其对传统互联网的惊人重塑展现出无穷的发展潜力。在最初的构想中,数字货币是方便用户在 Web3 世界自由交互的通行证。但随着加密货币市场刚刚从长期的动荡中缓慢复苏&#xff…

4个月的测试经验,来面试就开口要17K,面试完,我连5K都不想给他.....

2021年8月份我入职了深圳某家创业公司,刚入职还是很兴奋的,到公司一看我傻了,公司除了我一个测试,公司的开发人员就只有3个前端2个后端还有2个UI,在粗略了解公司的业务后才发现是一个从零开始的项目,目前啥…

系统应用 odex 转 dex

说下为什会有这个需求,以某系统应用为例,我们通过 adb 获取到的 apk 反编译查看只有少部分代码和资源,关键代码看不到。 经过一系列操作,把 odex 转换为 dex 可以看到源码。 工具下载 Smali 下载 1、使用 adb shell pm list pa…

SpringBoot框架SpEL表达式注入漏洞复现与原理分析

前言 这是2016年的一个洞,利用条件是至少知道一个触发 springboot 默认错误页面的接口及参数名。 影响版本:1.1.0-1.1.12 1.2.0-1.2.7 1.3.0 修复方案:升级版本 环境搭建 下载链接:https://github.com/LandGrey/SpringBootVu…

asyncexcel按类型分sheet导出相同数据

需求背景 看标题又是一个变态的需求,但是实际业务场景中确实存在。 既然有需求那我们就得支持。 那么这种场景下如何使用asyncexcel进行异步导出呢? 在之前的文章中我们已经实现了分sheet导出不同业务的数据了 那么此时的场景似乎也差不多&#xff0c…

Python open()函数详解:打开指定文件

在 Python 中,如果想要操作文件,首先需要创建或者打开指定的文件,并创建一个文件对象,而这些工作可以通过内置的 open() 函数实现。open() 函数用于创建或打开指定文件,该函数的常用语法格式如下:file ope…

git日常使用命令

实习这段时间使用了很多git指令来提交代码,简单记录一下日常使用的指令: 提交代码通常顺序: 1.git status 查看本地修改项 2.git add . 提交全部文件 (这个 .是全部文件)到暂存区 3.git commit -m ‘本次提交的说明’…

HTTPS基础原理和配置 - 1

近期又碰到了SSL相关的事情, 就心血来潮开个新专题 - 《HTTPS基础原理和配置》 本文是第一篇文章, 主要介绍SSL TLS加密协议的相关内容。 加密协议历史概要 SSL TLS加密协议其实并没有很长的历史,1995年网景发布了SSL v2.0,这也是web加密的开…

2023年,游戏行业将迎来两大重磅级盛会,释放哪些信号?

随着全球大流行的转变,各行业对于未来的预测也在不断调整,以便快速跟进,抢占先机,游戏行业也是如此。 2023年2月,将有两个重磅级的游戏产业盛会召开。 据中国音数协游戏工委官微消息,由中国音像与数字出版…

使用Autowired为什么会被IDEA警告,应该怎么修改最佳

问题原因 关于这个问题,其实答案相对统一,实际上用大白话说起来也容易理解。 初始化问题 先看一下Java初始化类的顺序:父类的静态字段 > 父类静态代码块 > 子类静态字段 > 子类静态代码块 > 父类成员变量 > 父类构造代码块 &…

python基于django+vue偏远地区教师支教系统

角色:老师、学校、管理员 前台应包括:首页、支教岗位、志愿老师、老师分享、公告信息、平台简介、个人中心 1、首页:把导航条上的支教岗位、志愿老师、老师分享、公告信息显示并能点击查看。 2、支教岗位,根据不同类别岗位需求选择…

网络安全-PHPstudy环境搭建

网络安全-PHPstudy环境搭建 网络搭建我是专家,安全我懂的不多,所以可能很基础。。因为我自己都不懂,都是跟着课程学的 PHPstudy 这个东东是一个在windwos下可以快速部署的web开发环境,安装了就能用,也支持iis和ngin…

MySQL入门篇-MySQL表连接小结

备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊常见的表连接的方法 测试数据: create table t1(id int); create table t2(id int);insert into t1 values(1); insert into t1 values(2);insert into t2 values(2); insert into t2 values(3); commit;内连接 --求交集 …

【C++】—— I/O流

目录 一、C语言的输入输出 二、流是什么 三、CIO流 1. C标准IO流 2. C文件IO流 1. 文件操作步骤 2. 以二进制的形式操作文件 3. 使用>>和<<对文件进行操作 四、stringstream的介绍 一、C语言的输入输出 C语言中我们用到的最频繁的输入输出方式就是scanf …

使用burpsuite抓包 + sql工具注入 dvwa靶场

使用burpsuite抓包 sql工具注入 dvwa靶场 记录一下自己重新开始学习web安全之路②。 一、准备工作 1.工具准备 sqlmap burpsuite 2.浏览器准备 火狐浏览器 设置代理。 首先&#xff0c;先设置一下火狐浏览器的代理 http代理地址为127.0.0.0.1 &#xff0c;端口为8080 …

《Learning to Reconstruct Botanical Trees from Single Images》学习从单幅图像重建植物树

读书报告下载https://download.csdn.net/download/weixin_43042683/87448211论文原文https://dl.acm.org/doi/10.1145/3478513.3480525论文视频https://www.bilibili.com/video/BV1cb4y127Vp/?fromseopage&vd_source5212838c127b01db69dcc8b2d27ca5171引言植物存在在室外与…

深度理解机器学习16-门控循环单元

评估简单循环神经网络的缺点。 描述门控循环单元&#xff08;Gated Recurrent Unit&#xff0c;GRU&#xff09;的架构。 使用GRU进行情绪分析。 将GRU应用于文本生成。 基本RNN通常由输入层、输出层和几个互连的隐藏层组成。最简单的RNN有一个缺点&#xff0c;那就是它们不…

【开发环境配置】--Python3的安装

1-开发环境配置 工欲善其事&#xff0c;必先利其器&#xff01; 编写和运行程序之前&#xff0c;我们必须先把开发环境配置好。只有配置好了环境并且有了更方便的开发工具&#xff0c;我们才能更加高效地用程序实现相应的功能。然而很多情况下&#xff0c;我们可能在最开始就…

谢希仁版《计算机网络》期末总复习【完结】

文章目录说明第一章 计算机网络概述计算机网络和互联网网络边缘网络核心分组交换网的性能网络体系结构控制平面和数据平面第二章 IP地址分类编址子网划分无分类编址特殊用途的IP地址IP地址规划和分配第三章 应用层应用层协议原理万维网【URL / HTML / HTTP】域名系统DNS动态主机…