首页 > 其他分享 >李宏毅transformer笔记

李宏毅transformer笔记

时间:2023-05-01 22:14:06浏览次数:49  
标签:输出 transformer 李宏毅 Attention 笔记 Encoder 输入 向量

 

首先这里解决的问题是Seq2Seq

列出各种场景,语音识别,机器翻译,chatbot

 

当前现在NLP模型之所以这么重要,在于他的通用能力,很多场景都可以转换成Seq2Seq

summary,情感分析啊,只要你能通过QA和机器交互的场景都可以是Seq2Seq

这里的例子,语法树解析,多元分类,甚至是对象识别

Seq2Seq其实也不是啥新问题,以前都是用RNN来解决的

当然现在都用transformer

Transformer分为Encoder和Decoder

这里看下Encoder,当然这样的encoder可以是各种模型,RNN,CNN都行

对于transformer,可以看出Encoder就是一个self-Attention模型,n2n,输入和输出个数相同

和之前说的标准的Self-attention相比,差异在于

加入residual,每一层都输出都会加上输入,residual的目的主要是在网络过深的时候防止梯度消失

在每层输出都加入layer Norm,这个norm的过程很直觉

 至于使用Multi-head,和加入Positional Encoding的目的前面也都说过

Bert的架构和这个完全一样

Encode讲完,看下Decode

Decode有两种,AR和NAR

AR,顾名思义,输出的向量是一个个依次输出的,每次取概率最大的那个,其实就是个分类问题

每个向量输出,作为下个输入

为了能有效结束,需要加入end token

Decoder的结构,不看中间的部分,和Encoder几乎相同

唯一的差别就是,这是用Masked Attention

为何用Masked,这个很直觉,因为在Decode的时候,无法像普通的Self Attention一样看到所有的输出,只能看到之前的

对于NAT,是一次性输入所有的输出向量,这里的问题自然是如何决定个数?训练一个predicter来输出num或者每次都输出些,找到end截断

NAT,会比较高效,但是准确率不行,这就是为何主要还是用AT的decoder

现在把中间的部分补上,这部分叫Cross Attention

在Self Attention中,是看encoder中一个输入和其他输入的Attention Score,即相关度

这里是,decoder根据Begin token生成的向量作为q,计算和Encoder中每个输出向量的Attention Score,用到的是K,V两个向量

所以称为cross Attention,这个输出是由decoder生成的向量,和所有encoder输出向量决定的,影响力由cross Attention score决定

 

最后看下如何训练,

训练就是看生成向量和训练集中答案算minimize cross entropy

这里需要注意的是,在训练的时候,Decoder输入是正确答案,而不是生成的值;但是测试的时候输入是生成的值

这里产生不一致,称为exposure bias,怎么弥补?方法居然是训练的时候故意给点错误

 

标签:输出,transformer,李宏毅,Attention,笔记,Encoder,输入,向量
From: https://www.cnblogs.com/fxjwind/p/17367081.html

相关文章

  • Vue3 新特性 笔记整理
    一.基于Vite的构建vite优点(可以快速构建vue项目比webpack打包更加快捷)1.快速的冷启动2.及时的模块热更新3.真正的按需编译举例:vite3构建vue3项目npminitvite=>选择框架,选择类别npminstall安装依赖 注:vite构建后的项目,不包含路由等脚手架,需要按需导入 二......
  • MySQL学习笔记:基于GTID的主从复制
    GTID的主从复制背景GTID出现之前,在一主多从的复制拓扑中,如果主库宕机,需要从多个从库选择之一作为新主库,这个过程比较复杂。没有一种直接了当的方法找到其它从库对应的新主库二进制日志坐标。通常的做法是先要寻找每个从库复制原主库的最后语句,然后找到新主库中包含该语句的二进制......
  • 代码笔记27 numpy和pytorch中的多维数组切片
    原来还可以用数组切数组,我算是长见识了。不多说了,直接上代码应该可以明白importnumpyasnpxyz=np.arange(36).reshape(3,4,3)B,N,C=xyz.shapefarthest=np.random.randint(0,N,size=B)#torch.randint(0,N,(B,),dtype=torch.long)#初始时随机选择一点(B......
  • Irwin-Hall 分布学习笔记
    定理:Irwin-Hall分布对于\(n\)个在\([0,1]\)内均匀分布的实数随机变量,它们的和不超过一个实数\(z\)的概率为:\[F(z)=\sum\limits_{k=0}^{\lfloorz\rfloor}(-1)^k\binom{n}{k}\frac{(z-k)^n}{n!}\]证明:首先明确一个概念:概率密度。对于一个随机变量\(X\),在\([0,1]\)......
  • 2023 qbxt 笔记整理
    洛谷P4460n<20,试试状压设\(dp[i][j]\)表示状态为i,最后一个点为j(当前在点j)。枚举当前点为i,要转移的点为k转移:$dp[i|(1<<k-1)][k]+=dp[i][j]$还需要判断一下三点连线在不在同一条直线上。代码:#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;inl......
  • 【System Verilog】初步学习笔记
    1、SV基本语法、分层验证平台、数据类型、task&function、oop(封装,继承,多态)、随机化、线程、组件内部通信(event,semaphores,mailboxes)等见https://www.cnblogs.com/xh13dream/tag/systemverilog/2、coverage:       3、assertion: ......
  • UVM基础笔记
    1、UVM基本概念(通用验证方法学)   2、简单构建一个UVM平台env一旦构建完成,就不能更改,如果改了,那之前跑的测试案例都要重来。每一个组件都有对应的基类 UVM中,穿梭于各个组件中的基本信息单元叫做transaction的数据对象,也叫事物(agent)对象。       ......
  • 前端进化笔记-JavaScript(二)
    因为作者学过其他类c语言,就不对大家都熟悉的内容进行赘述了。语法JavaScript区分大小写标识符:变量,函数,属性,函数参数的名称第一个字符必须是字母,下划线(_),美元符号($);关键字、保留字、true、false和null不能用作标识符作者在后续阅读的过程中,发现对各种名称不熟悉导致阅读不......
  • JavaWeb复习笔记
    MysqlsqlDDLDMLDQL约束设计多表查询内连接外连接子查询事务......
  • stm32cubemx 笔记
    1、时间频率配置界面  FSMC-> FlexibleStaticMemoryController,即灵活的静态存储器控制器->专门用于连接外部存储器的总线接口。FSMC可连接到各种外部存储器,包括SRAM、NORFlash、NANDFlash、LCD显示器  FCLK->FCLK的作用是提供给FLASH读取的时钟,以便芯片内部的程序......