自注意力机制(上篇)

输入是向量序列的情况

在进行语义情感分析时,判断其是积极还是消极的,对于语句的处理,往往是将词转化为向量,而一个句子则是一组向量序列,需要将这组向量序列输入到模型中,才能输出其是积极还是消极的。

对于词汇的编码,有很多方法,其一,独热编码,即有多少词汇,则向量的维度即是多少,这种方法可以让词汇之间没有关联。可以看到特点,其编码只有一个维度是1,其余均为0.

其二,词嵌入。将词汇表示成向量,其向量中包含语义的信息,所以可以通过向量计算出事物之间的关联。相似的事物会相距较近。

一段声音信号也可以看作是一组向量,其声音信号的窗口大小通常设置为25ms,其移动步长设置为10ms,如果1分钟中的语音,那么就需要用60s/10ms=6000个向量来进行描述。

图也是一组向量,例如社交其实可以看作一个图,每个节点可以看作一个人,每个人其实就是一个向量,向量中包含了该人的相关信息(性别,出生日期等)。

输入和输出数量相同

什么情况会出现这种情况?比如词性标注,一个句子中的每个词表示成一个向量,但是经过模型需要输出该词的词性,即多少个词向量作为输入,需要输出多少个词性标签。

同时语音识别也是如此,通过一个向量判断是什么音标。社交网络中,某个人对某个物品的购买情况。

输入是一个序列,输出是一个标签

做语义情感分析时,一段语句是由一组向量描述的,通过模型进行输出的结果只是一个情感标签;语音识别,通过一组语音向量去识别是谁说的。

序列到序列任务

语音识别,通过一组语音向量作为输入,模型输出语音中的表达文字。这个时候的输入和输出不一定数量相同。

自注意力机制原理

图6.11序列标注,可以看出采用的是对每一个词向量单独进行标注,但我们可以观察到第一个saw是动词,而第二个saw是名词。简单的全连接是不可以的,图6.12是把所有的词向量都丢入全连接层里面,但是这个窗口的大小怎么控制,如果其语句词汇过长,其参数过多,不仅计算量大,而且容易过拟合。所以需要借助自注意力机制。

自注意力模型是输入几个向量,输出相同的向量,只是输出的向量其包含的整个句子的联系,将该向量在输入到全连接层就可以解决上述问题。

其实自注意力模型考虑所有的输入才输出结果b,那其内部具体怎么实现的呢?

向量b1的产生过程,如上图所示,其\alpha决定是否相关,那么如何计算呢?有两种方法,一种点积,另一种是相加。

图6.20可以看到query即a1左乘矩阵获得的,借助query和其他key进行点积运算,可以算出相关系数,借助softmax激活函数,可以使得其对应的相关系数进行转化,其加和为1,更加直观。

其实可以看出来如果\alpha 1.2大,则b1更接近于v2。

其具体的过程如下:

多头自注意力

多头自注意力相较于自注意力改进了不少。可以看出输入x左乘Wq矩阵得到的q,q在左乘两个矩阵分别得到q1,q2,当然k,v也同样如此。

可以看到后面标号为1的是进行一起的计算,后面标号为2的进行一起的计算,两者分开进行计算,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值