首页 > 其他分享 >【学习笔记】Self-attention

【学习笔记】Self-attention

时间:2023-09-13 13:55:06浏览次数:42  
标签:Self attention 笔记 vector 相关性 CNN self

最近想学点NLP的东西,开始看BERT,看了发现transformer知识丢光了,又来看self-attention;看完self-attention发现还得再去学学word embedding...

推荐学习顺序是:word embedding、self-attention / transformer、BERT(后面可能还会补充新的)

我是看的李宏毅老师的课程+pdf,真的很爱他的课...!讲的非常清楚又很风趣馁!

下面是学习笔记,是我简化提取的对自己有用的信息,适合有一定基础的人阅读,大家如果看了哪里不懂的可以评论区留言,或者去看原视频~

input

  • a vector
  • a set of vectors

vector set as input

  • text: one-hot encoding(不包含语义信息) ; word embedding (包含语义信息)
  • speech: choose a frame as a vector
  • graph: consider each node as a vector

output

  • each vector has a label (POS tagging词性标注
  • whole sequence has a label (sentiment analysis情感分析
  • model decides the number of lables (seq2seq - translation机器翻译

self-attention

FC(全连接层)可以用window来考虑上下文信息;但如何考虑整个sequence?

sequence长度不确定的情况下用window并不好!(window只能设置成最大的sequence长度,占据内存空间)

于是,铛铛!出现了self-attention:

那么对于当前输入的某个vector,如何在序列中找到和它相关的vectors?

计算相关性!(这里用的是算点积)

这里的q可以理解成query,k理解成key,打个比方就是拿着一把钥匙(这里是query)去试不同房间的锁(这里是key),看看和哪个更匹配!

相关性分数α'和对应的v (value)相乘后取和,得到加权和b,也就是self-attention的输出

这里的value我的理解是,拿着一把钥匙去开不同的锁,如果匹配度高就能打开房间门,房间里的东西就可以看作是这个value

最后我们能拿到的就是所有打开了的房间门里面的东西,也就是相关性分数作为权重,所有value的加权和!

 这边每个b的计算都是并行的

 怎么做到并行呢?很自然想到矩阵运算:

Muti-head Self-attention

如果vector之间不止一种想被学习到的相关性呢?

引入多头机制 - 不同的head学习不同的相关性!

positional encoding

self-attention里没有位置信息!

给每个位置一个独特的编码向量

  • hand-crafted
  • learned from data

Applications

  • Transformer
  • BERT

Self-attention v.s. CNN

  • CNN的感受野是人为设计的(卷积窗口);self-attention是可学习的(投影矩阵学习相关性
  • CNN是存在限制的self-attention;self-attention是更复杂更灵活的CNN

更flexible的模型需要更多的数据,否则容易overfitting!

数据量小的时候,用CNN更合适;数据量足够大的时候,self-attention表现更好

self-attention v.s. RNN

  • RNN需要上一时刻的输出作为当前时刻的输入,因此是nonparallel的;而self-attention是parallel
  • RNN里如果想要考虑两个很远的vector很难 (一层层传递会丢失信息);self-attention天涯若比邻

笔记就到这里结束啦,如果大家有错误或者想法欢迎提出,一起讨论!

标签:Self,attention,笔记,vector,相关性,CNN,self
From: https://www.cnblogs.com/Aikoin/p/17699472.html

相关文章

  • 《Python编程从入门到实践》--- 学习过程笔记(4)列表操作
    一、遍历列表squares=('a','b','c','d')foriinlist(squares):print(i)二、python根据缩进来判断代码与前一个代码行的关系。(要注意缩进问题)for循环中,其下的所有缩进语句都属于for循环。三、数字列表创建及操作(1)range()函数。range(a,b)只打印a到b前一......
  • 笔记本连接手机热点但是无法上网
    谷歌浏览器地址栏输入   chrome://net-internals/#dnscmd命令输入 然后重启  netshintipresetnetshwinsockresetipconfig/releaseipconfig/renewipconfig/flushdns重启DNS服务此次问题解决IP地址为172.20.10.7第二次出现问题cmd命令执行ipconfig/......
  • Ansible学习笔记04:ansible命令选项 主机组参数
    Ansible命令选项在之前的笔记中,使用了这样的一条命令ansibletest-mping,使用ping模块对主机组test中的受控机进行测试。ansibile使用ssh在这条命令中没有指定ssh的端口密码用户名,因为在之前配置中,做了ssh互信,端口与用户名写在了ansible配置文件中。如果需要使用其他账号、密码......
  • 新人笔记-final
    packagecom_black.final00;publicclassDemo{publicstaticvoidmain(String[]args){ziz=newzi();z.method();z.show();}}packagecom_black.final00;//当写为publicfinalclassfu此类不可被继承publicclassfu{......
  • Go学习笔记5
    十六、基于TCP协议的网络通信创建客户端【1】调用Dial函数:(net包下)【2】代码:packagemainimport("fmt""net"//所需的网络编程全部都在net包下)funcmain(){//打印:fmt.Println("客服端启动。。")//调用Dial函数:参数需要指定t......
  • 信息系统项目管理师教程(第四版) 第一章 信息化发展 学习笔记1-20230911
    第一章《信息化发展》 学习要点:1、信息的基本概念、信息的7个质量属性。2、信息系统的概念、特点或用途、抽象模型、信息系统生命周期。3、信息化、信息化系统。4、工业互联网(四大层级)、车联网(体系框架、链接方式、应用场景)。5、农业农村现代化、乡村振兴战略、两化融合与......
  • kubernetes权威指南读书笔记-Serivce的ClusterIP地址
    EndPoint:由POD的IP加上容器的端口构造;它表示POD里的一个服务进程对外的通信地址;一个POD也存在多个ENDPOINT的情况。KuernetesService的一个功能就是实现负载均衡。它是这样来实现的,kubernetes内部在每个Node上都运行了一套全局的虚拟负载均衡器,自动注入并自动实时更新集群中所有......
  • python版elasticsearch入门笔记
    Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。Elasticsearch的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再......
  • 电气工程师必学------CODESYS v3.5 入门学习笔记(一)
    一、新建工程打开软件新建工程,如图此教程只是入门练习,所以这里一般情况下都是创建的Standardproject,也就是标准工程。窗口下方可以设置工程名称与存放位置。紧接着是选择设备与编译语言。初学者条件有限就直接上仿真,电脑是windowsx64的话设备选择上图所示就OK。语言这里我......
  • openGauss学习笔记-67 openGauss 数据库管理-创建和管理普通表-创建表
    openGauss学习笔记-67openGauss数据库管理-创建和管理普通表-创建表67.1背景信息表是建立在数据库中的,在不同的数据库中可以存放相同的表。甚至可以通过使用模式在同一个数据库中创建相同名称的表。创建表前请先规划存储模型。67.2创建表执行如下命令创建表。openGauss=#......