Transformer理解(一)

B站一个视频从编码-解码的角度入手理解Transformer,以语言翻译为例,从原理上进行了理解。链接放在这里,感兴趣的可以阅读https://www.bilibili.com/video/BV1XH4y1T76e/?share_source=copy_web&vd_source=105bb61f95787148e38c0ff96f63c2e7

首先说明计算规则:输入的向量矩阵,都需要与Wq,Wk和Wv这三个矩阵相乘,才会得到Q,K,V。这三个矩阵起到空间变换作用的。先把K转置,然后Q与之相乘,得到矩阵A(注意力得分,T行T列),对A的每一项进行缩放(除以根号D_out),按行计算Softmax。

从概率理解该步骤,除以D_out是为了使方差为1,服从假设的正态分布。

如何理解?词向量是具备一些基础语义的,但是语义是受限的,V就是表示词典里查到的客观语义。

按照不同顺序组合这些词,才具备了主观性。

这里Up主举了一个很生动的例子:“美女”在字典中形容很漂亮的女性,如果紧跟一句“加个微信吧”,那么大概率真的说明这个人很好看,但如果接的是“麻烦让一让”,那美丽的程度可能大幅度降低了。

因此,A'就相当于上下文关联而对这个词产生的修改系数。

接下来就是为什么A'可以表示上下文的信息呢?关键的步骤是Q·K^T,对于两个向量而言,内积可以理解为一个向量在另一个向量上的投影,就能体现相关关系(正相关、无关、负相关等)。

上图运算后的词向量是经过修正的,根据A',只对词向量对应维度进行修正。语义越接近,代表该列的值越大。这一步相当于根据上下文对词义本身进行校准。

使用两个矩阵(Wq和Wk)的作用在于增加非线性要素,增强表达能力。

位置编码

目的是表现词语前后顺序的位置信息,给模型增加位置信息有两种思路:一是权重(乘法),二是偏置系数。

符号\bigodot阿达玛乘积,代表两个矩阵的元素是逐项相乘的;而加法就是逐项相加。原版的Transformer是使用加法来实现位置编码。

而位置编码又分为相对位置编码和绝对位置编码,其具体差别需要阅读相关论文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值