前面课程中,给大家讲解了词嵌入和位置编码层的实现,按照结构图,下一步就要进入编码器层。编码器层其实很简单,由两个部分组成:Multi-Head Attention(多头注意力机制)、Feed Forward(前馈神经网络)。接下来,就从微观到宏观的顺序,给大家拆解编码器的结构,这节课先介绍注意力机制。

在心理学中,注意力是选择性地专注于一件或几件事物,而忽略其他事物的认知过程。神经网络中的注意力机制(Attention Mechanism)是在计算能力有限的情况下,将计算资源分配给更重要的任务,同时解决信息超载问题的一种资源分配方案。

注意力的计算规则

需要三个指定的输入Q(query)、K(key)、V(value),通过以下注意力计算公式,得到 query 在 key 和 value 作用下的表示。

计算过程

生活中的例子

从所给的四个选项中,选择最合适的一个填入问号处,使之呈现一定的规律性:


备注:自注意力机制,就是 key、query、value 的信息来源是相同的,相当于对自身信息的进一步特征提取。

代码示例

1、Attention函数实现

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

2、调用示例

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

注意力机制的设计很巧妙,但代码实现很简单,直接套用公式即可,几行代码就搞定了。但是目前还没有考虑 PAD 值的影响,这块还挺麻烦,下节课单独处理这个问题。

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

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