Transformer

(self-attention)自注意力机制

将词汇转化为向量表示,可以使用one-hot进行编码,但是这种编码方式认为所有的词之间是没有关系的

还有一种方法是Word Embedding,这种方法相似的词汇会聚集到一起。

输入

文字、声音和图等的输入都是一堆向量

输出

1、N->N(如词性标注)

2、N->1(情绪分析,就是评价一条评论是正面的还是负面的)

3、N->N'(机器自己决定输出数目的多少)

视频中以第一种输出情况为例(N->N)

经过Self-attention得到的四个vectors是考虑了整个sequence(句子)之后才得到的,然后再作为全连接层的输入,再输出

self-attention和全连接层交替使用

self-attention处理整个句子的信息,而全连接层专注于处理某个位置的信息

self-attention的运作过程

b1--b4的产生不是按照顺序产生的,是并行运行产生的

b1的得出是考虑了a1到a4之后得到的。

b1产生的步骤:

1、根据a1找到sequence里与a1相关的其它向量

那么现在的问题是如何得出α呢?

Dot-product和Additive的方式都可以得到

本文中使用的是Dot-product

a1与a1、a2、a3、a4分别进行dot-product计算,分别计算关联性,得到α的值之后经过softmax进行归一(不一定使用softmax,也可以使用relu等,结果可能比softmax的结果更好,这里使用的方法是不确定的)

2、得到α' 之后抽取重要的信息,下面是抽取重要信息的过程

与a1的关联性越强,即得到的α' 的值越大,那么最后计算b1的时候的影响就会越大,就会越接近。

矩阵运算的角度

过程概述图(只有红框里面的数据是未知的,需要通过training data找出来的,其余的数据都是已知的)

Multi-head Self-attention

有多种不同的相关性,就会有多个head,不同的head做各自的计算

Positonal Encoding

在上述的过程中,并没有考虑位置的问题。

在做词性标注的时候,位置的信息就比较重要,比如动词出现在开头的概率就比较低

所以就需要在原有的基础上添加位置向量

self-attention VS CNN

CNN是简化版的self-attention,self-attetnion需要考虑整个的信息,而CNN只需要考虑设定的红框的信息

self-attention VS RNN

Transformer

Sequence-to-sequence(Seq2seq)

输入一个sequence,输出一个sequence,但是输出的长度是由机器自己决定的

Seq2seq过程

Encoder

transformer中的self-attention

经过b经过self-attention之后的a,然后再和b相结合,做residual之后进行norm得到c,c经过全连接层之后得到d,然后d再和c进行结合做residual,之后再做norm

上图的过程就是下图过程的详细版

右图中的输入加入了positional encoding,然后经过multi-head-attention之后进行residual和norm,接着是前馈网络,接着又进行residual和norm,就这样执行n次。

Decoder

前面的输出,再作为下一步的输入

何时停止?

添加“stop token”

encoder和decoder

masked self-attention

表示在生成b1的时候只能考虑a1,在生成b2的时候只能考虑a1和a2,在生成b3的时候只能考虑a1,a2和a3,在生成b4的时候考虑a1,a2,a3,a4

为什么需要masked self-attention?

其实非常的直观,因为decoder的过程是依次执行的,是现有前面的然后才有后面的,就像是现有a1然后才有a2,而self-attention是一块执行的

Decoder ---- Non-autoregressive(NAT)

与AT不同的是,NAT是一次输入多个begin,但是这就有一个问题,如何确定输入的begin的数量(因为输入是不确定的)?

        1、另外设置一个Classifier这个分类器的输入是decoder的input,然后输出是一个数字,这个数字就是表示的begin的数量

        2、给一个begin的上限,根据输入的end进行中断,如上图

NAT的好处

并行进行,速度比AT的速度快

但是NAT的表现弱于AT的表现

Encoder和Decoder中间的传递

cross attention

q来自于decoder,k和v来自于encoder。decoder凭借产生的q抽取encoder里面重要的信息产生作为FC的输入的值

下一步的过程:

训练过程

将decoder的输出和正确答案做cross entropy,并且使corss entropy最小,这样的正确率越高。

在训练的时候,这里decoder的输入是正确答案,就是提前给decoder看正确答案,在有“begin”和“机”的情况下,下一步输出的就是“器”

补充

前馈神经网络

神经网络前馈是接收输入数据并生成输出的机器学习模型。这些网络由多层人工神经元组成,这些人工神经元通过加权连接连接。在不环回的情况下,数据以单一方向从输入层流向输出层。在训练期间调整神经元之间连接的权重,以减少模型预测的输出与实际正确输出之间的差异。

cross entropy

交叉熵(Cross-Entropy)是一种用于衡量两个概率分布之间的距离或相似性的度量方法。在机器学习中,交叉熵通常用于损失函数,用于评估模型的预测结果与实际标签之间的差异

Dot-product

其实就是做点积(内积)运算

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值