6、seq2seq - Transformer-Encoder、Transformer-Decoder

news/2025/3/10 17:59:43/文章来源:https://www.cnblogs.com/littlecc/p/18759552
  • Attention - 注意力机制

    • seq2seq是 Sequence to Sequence 的简写,seq2seq模型的核心就是编码器(Encoder)和解码器(Decoder)组成的

    • 通过在seq2seq结构中加入Attention机制,是seq2seq的性能大大提升,先在seq2seq被广泛的用于机器翻译、对话生成、人体姿态序列生成等各种任务上,并取得了非常好的效果

      • 这里 C1 = X1h2 + X2h2 + .....

    +对于Decoder的每一步解码i,都有一个输入Ci,对输入序列所有隐藏信息h1,h2....进行加权求和

    • 相当于在预测下一个词时,会把输入序列的隐藏信息都看一遍,决定预测当前词语输入序列的哪些词最相关


  • Transformer - 今后的大模型都基于这个模型

    • 结构 - 参考seq2seq

    • 基本流程


    • 位置编码

      • 文本是时序型数据,词与词之间的顺序关系往往影响整个句子的含义

      • 【绝对位置编码】

        • 给每个位置位置信息建模
        • 最简单的实现方式:使用每个词汇的次序1,2,...., T作为位置编码信息
        • 如:BERT使用的是Learned Positional Embedding,先初始化位置编码,再放到预训练过程中,训练出每个位置的位置向量
        • 绝对位置编码存在一个严重的问题,例如,模型最大序列长度为512,那么预测阶段输入超过512的序列就无法进行处理
      • 【嫌贵位置编码】

        • 相对位置并没有完整建模每个输入的位置信息,而是在计算Attention的时候考虑当前位置与被Attention的位置的相对距离
        • 由于自然语言一般更依赖于相对位置,所以相对位置编码通常也有着优秀的表现,在Transformer中使用的就是相对位置编码的方式
      • 【更好的编码方式】

        • 目前,已经出现了更优秀的位置编码方式,例如旋转位置编码,他兼顾了绝对位置信息与相对位置信息
      • 【为什么Transformer需要位置编码信息?】

      • 根据上面讨论,我们希望位置编码满足以下的需求:

        • 能够体现词汇在不同位置的区别(特别是同一词汇在不同位置的区别)

        • 能够体现词汇的先后次序,并且编码值不依赖于文本的长度

        • 有值域范围限制

        • 因此,Transformer引入了相对位置的概念,使用sin/cos函数(有界周期函数)来表示相对位置,sin/cos函数周期变化规律稳定,使得编码具有一定的不变性

        • 如下例子:

  • Transformer Encoder

    • 【Multi-Head Attention】
      • 所谓多头,是将线性变换之后的QKV切分为H份,然后对每一份进行后续的self-attention操作,可以理解成将高维向量拆分成了H个低维向量,在H个低维空间里求解各自的self-attention
    • 相当于是在原来的一个768维空间里求任意两个字符的相关度,变成在12个64维空间里求相关度,最后将12个64维拼接在一起变成768维的相关度
    • 相当于是从不同的角度(12个角度)去研究任意两个字符之间的相关度,这比从一个角度去研究的结果更多

  • Add & Norm

  • Feed Forword



  • Transformer Decoder

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

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

相关文章

作业-个人项目编程

作业gitHub 作业链接这个作业属于哪个课程 软件工程这个作业要求在哪里 作业要求这个作业的目标 完成一次个人项目计算模块接口的设计与实现过程1. 代码组织 计算模块的核心功能是读取文件内容并计算两个文本的相似度。代码组织如下: 模块划分文件读取模块:函数:readFile。 …

mybatis-plus02--Lesson2

CRUD和myBatis-plus插件 1.Insert方法和雪花算法 当一个数据表中的id为主键时,且插入的数据的时候不插入主键id,那么会发生什么呢?接下来就进行一次简单测试,还是那个User表,插入其它属性,不插入主键id。 测试方法:@Testpublic void testInsert(){User user = new User(…

免费好用的云服务器提供商

最近倒腾云服务器,想在阿里云上购买,结果发现价格太高,是在买不起。我只好在百度上翻呀翻,终于找到一个免费的,实名一下就能用。链接我贴这儿了,要用请自取:免费好用的云服务器提供商

2020-PTA总决赛-L3-1 那就别担心了(记忆化搜索)

dfs,记忆化搜索思路:读懂题到28分花了十分钟左右,做的时候就感觉可能要超时,因为结点稍微有点多 但是还是继续硬着头皮写下去了,果不其然,最后一个测试点超时,那么就要开dp数组了 题目大意就是找到A到B有几条路径,且是否走哪条路都能通向B28分Code: #include<bits/st…

集合论3 公理化—从罗素悖论到集合的公理化定义

集合论3 公理化—从罗素悖论到集合的公理化定义 罗素悖论 若把所有集合分为两类:第一类中的集合以其自身为元素,第二类中的集合不以自身为元素。 设第一类集合所组成的集合为\(P\),第二类所组成的集合为\(Q\)。于是有: \(P=\{A |A \in A\}\), \(Q=\{A |A \notin A\}\)。 试…

集合论2序数——从自然数系统到无穷集合的排序

集合论2序数——从自然数系统到无穷集合的排序 我们上一节,回答了下面几个关键问题 1 一个无穷集合有多少个元素?——自然数集:\(\aleph_0\),实数集:\(C=2^{\aleph_0}\) 2 不同的无穷集合里的元素“数量”是否有差异?——可数集(自然数集),不可数集(实数集—连续统)…

软件工程-作业2:第一次个人编程作业:论文查重

项目 内容这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023这个作业在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/homework/13324这个作业的目标 学会如何个人系统化地完成软件开发,学会使用性能测试…

换到Edge?我有几点不满意。

前言 向来我都是用百分浏览器这个套壳Chrome,然而在迁移的时候由于网络的原因,存在各种不方便,于是我试着去用Edge,虽然之前也在用,但从来没作为主力使用过。 不足之处 收藏功能一塌糊涂 当我右键某个书签文件夹时,选择添加该网页,他居然要我重新选书签所在的文件夹。更…

【端口转发】 lcx工具

lcx是一个居于socket套接字实现的端口转发工具,有windows和linux两个版本,windows叫lcx.exe,linux叫portmap 一个正常的socket隧道必须具备两端:服务器端和客户端 windows下: 1、转发端口: lcx.exe -slave 公网IP 端口 内网IP 端口2、监听端口: lcx.exe -listen 转发端口…

Manus验证码生成器

Manus验证码生成器 Manus 是Monica团队推出的全球首款通用型AI助手,能将想法转化为行动:不止于思考,更注重成果。 一、关注公众号二、从底部菜单中进入三、使用Manus验证码生成器本文来自博客园,作者:方倍工作室,转载请注明原文链接:https://www.cnblogs.com/txw1958/p/…

洛谷 P1111 修复公路(并查集)

并查集这题如果想到是并查集就很简单了,按t来排序一下就好了AcCode: #include<bits/stdc++.h> using namespace std; struct way{int v1, v2, t; }; bool Cmp(const way &a, const way &b){return a.t < b.t; }vector<way> w; int unionList[1010];int…

实验1 C语言输入输出和简单程序应用编程

任务1: 源代码:1 #include <stdio.h>2 #include <stdlib.h>3 4 int main()5 {6 printf(" o \n");7 printf("<H>\n");8 printf("I I\n");9 printf(" o \n"); 10 printf("<H>\n&quo…