以人机对话为例简单了解transformer原理

在这里插入图片描述

Input Embedding

首先输入一句话,将单词向量化,接着嵌入位置信息。因为它没有RNN那样的递归,所以嵌入位置信息是必要的。

Encoder

编码器部分主要包含两个子模块,多头注意力和前馈神经网络。
在这里插入图片描述

Multi-Headed Attention

这里多头注意力模块使用了自注意力机制,它允许将输入的每个单词与其他单词关联起来,得到一个attention权重矩阵,最后根据权重矩阵得到一个(不知道怎么描述)的输出。具体如下:

  • 多个向量(每个单词就是一个向量)被分别送入三个不同的全连接层,那么每个单词就又会得到三个不同的向量,称为 Q Q Q向量(Query)、 K K K向量(Key)和 V V V向量(Value)。
  • 把每个单词的 Q Q Q向量与其他所有单词的 K K K向量相乘,得到attention权重矩阵。(可以把Query理解成视频网站搜索框的输入,Key是某个视频自带的关键词,Value是视频本身,那么 Q Q Q向量与 K K K向量相乘,得到的attention权重矩阵就是搜索框输入与视频关键词的匹配程度)
  • attention矩阵经过softmax归一化,得到0-1之间的概率值。
  • 将上一步的结果与K向量相乘,得到输出 Z Z Z

这里的“多头”是指,有多个注意力模块对上述过程执行了多次,每个“头”得到一个输出 Z Z Z,那么最终的输出是由每个头的输出加权平均得到。它的作用如下:

  • 消除 Q Q Q K K K V V V的初始值产生的影响
  • 每个“头”都可能会学到不同的东西,因此“多头”可以为模型提供更多表达能力

总之,多头注意力模块用于计算输入的注意力权重,并生成一个带有编码信息的输出向量,指示中的每个词如何关注其他所有词。

Add & Norm

接下来,将多头注意力输出加到原始输入上(残差连接),并将残差连接经过层归一化

  • 残差连接允许梯度直接流过网络,不需要经过激活函数,避免梯度消失等问题
  • 层归一化使得网络更加稳定

Feed Forward

归一化后的残差输出被送入前馈网络进行进一步处理
在这里插入图片描述
前馈网络由几个线性层,激活函数组成。前馈网络用于进一步处理注意力输出,可能使其由更丰富的表达。
与多头注意力模块类似,它输出后,也要经过相同的残差连接、层归一化处理。

以上编码器的过程,可以帮助解码器在解码过程中关注一些更加重要的词汇。
编码的过程,无非就是求各个输入之间的关联权重
也可以将编码器堆叠多次,每一层都有机会学习不同的注意力表示,从而有可能提高transformer网络的预测能力。

Decoder

Decoder分为两个多头注意力模块和一个前馈网络,与编码过程虽然大体上是相似的,但仍有许多差异,在此暂时不提。
在这里插入图片描述
在最后有一个线性层充当分类器,分类器的输出被送入最后的softmax层,softmax为分类器输出的每一个类别生成0-1之间的得分,并选取最高的作为预测结果。

总结与思考

尝试用本人瞎琢磨的歪理去理解这个过程:这个模型的关键是多头注意力机制,它可以得到多个单词之间的attention权重矩阵,并通过后面的解码过程得到相关性最强的几个单词,再连成一句话,就可以实现人机对话的功能。具体的来说,就是我们通过训练,使得机器学习到,“How are you”与“I am fine thank you”这几个单词之间相关性较强,因此当你输入“How are you”就很有可能输出已经习得的“I am fine thank you”。
人机对话领域的话我还能强行解释一波,但如果是专业方向领域,我暂时想不到该怎么解释这个过程。

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值