前面课程中,实现了多头注意力机制中注意力的计算函数,接下来就是处理多头的逻辑。所谓多头,通俗理解就是把大的特征,拆分成多份,分别计算注意力。

这种结构设计,能让多个注意力机制,去提取每个词汇的不同特征部分,从而均衡同一种注意力机制可能产生的偏差,让词义拥有来自更多元的表达,实验表明可以提升模型效果。

注意,上图中 Linear 后面的残影,代表的是先分头,后经过 Linear 层,但在代码实现中,是先过 Linear 层,再分头。有实验证明,两种实现方法效果相当,所以沿用大众化的实现方案。

代码示例

1、类初始化

内容不可见,请联系管理员开通权限。

2、分头,并计算注意力

内容不可见,请联系管理员开通权限。

3、多头拼接

多头拆分的时候,两个维度互换了,合并时得换回来。

内容不可见,请联系管理员开通权限。

好的,到目前为止,我们编码器的第一部分,多头注意力机制就完成了,接下来就是做残差和标准化,放在下节课介绍。

本文链接:http://edu.ichenhua.cn/edu/note/656

版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!