transformer

自然语言处理(NLP),说白了就是一个向量,通过一组权重矩阵,映射到另一个向量的过程,无论是翻译问题,还是预测下一个词是啥,都是一个空间映射到另外一个空间的问题,通过我们自己编码,标注,然后学习权重。但是需要思考一个问题,如何更好的映射呢?
比如“it”这个词,我们编码成X1即[0,1,0.2,0.2,…,0.1]向量,通过学习,其映射成Y1即[0.3,.0.1,.0.2,…,0.1]的向量,这个向量我们去查编码解码,得到是”它“,但是这就说明所有的“it”都是“它”的意思么,这个过程是不是少考虑了什么呢?经过分析发现,语义和语境就是很重要的因素。然而,我们并没有将其考虑到其中,因此,X1中需要加入语境语义的信息,称其为X1‘。这也是RNN,或者transformer中考虑上下文的原因,只是二者将上下文的信息加入到X1中方式是不同的,RNN是将上一时刻的信息处理完后加入到下一时刻,而transformer是开始就将全局的信息统领起来,看每个时刻对当前时刻的影响,但是这样的做法就是失去位置信息,所以还需要的embeddinng时候加入位置信息。这些就看每种方法使用的trick了。当然自然语言处理并没有这么简单,很多细节上都需要去研究,使用很多的技巧,才能保证输出能满足我们的需求。
再次思考:我觉得人工智能就是在对向量进行各种trick的变换,以保证最终的变换是我们所需要的?这个说法可能不对,慢慢体会吧!

  1. 首先,self-attention的输入就是词向量,即整个模型的最初的输入是词向量的形式。那自注意力机制呢,顾名思义就是自己和自己计算一遍注意力,即对每一个输入的词向量,我们需要构建self-attention的输入。在这里,transformer首先将词向量乘上三个矩阵,得到三个新的向量,之所以乘上三个矩阵参数而不是直接用原来的词向量是因为这样增加更多的参数,提高模型的效果。对于输入X1,乘上三个矩阵后分别得到Q1、K1、V1,同样的,对于输入X2,也乘上三个不同的矩阵得到Q2、K2、V2。
    在这里插入图片描述
    2.那接下来就要计算注意力的份了,这个得分是通过计算Q与各个单词的K向量的点积得到的。我们以X1为例,分别将Q1和K1、K2进行点积运算,假设分别得分为112和96。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值