10.1. 注意力提示

文章目录

    • 10.1. 注意力提示
      • 10.1.1. 生物学中的注意力提示
      • 10.1.2. 查询、键和值
      • 10.1.3. 注意力的可视化
      • 10.1.4. 小结

10.1. 注意力提示

自经济学研究稀缺资源分配以来,我们正处在“注意力经济”时代, 即人类的注意力被视为可以交换的、有限的、有价值的且稀缺的商品.

10.1.1. 生物学中的注意力提示

非自主性提示是基于环境中物体的突出性和易见性.
自主性,主观意愿推动.

10.1.2. 查询、键和值

自主性的与非自主性的注意力提示解释了人类的注意力的方式, 下面我们看看如何通过这两种注意力提示, 用神经网络来设计注意力机制的框架.

首先,考虑一个相对简单的状况, 即只使用非自主性提示。 要想将选择偏向于感官输入, 我们可以简单地使用参数化的全连接层, 甚至是非参数化的最大汇聚层或平均汇聚层。

在注意力机制的背景下,我们将自主性提示称为查询(query)。
给定任何查询,注意力机制通过注意力汇聚(attention pooling) 将选择引导至感官输入(sensory inputs,例如中间特征表示)。
在注意力机制中,这些感官输入被称为值(value)。
更通俗的解释,每个值都与一个键(key)配对, 这可以想象为感官输入的非自主提示。
以设计注意力汇聚, 以便给定的查询(自主性提示)可以与键(非自主性提示)进行匹配, 这将引导得出最匹配的值(感官输入)。

注意力机制通过注意力汇聚将查询(自主性提示)和键(非自主性提示)结合在一起,实现对值(感官输入)的选择倾向
10.1. 注意力提示_第1张图片

10.1.3. 注意力的可视化

平均汇聚层可以被视为输入的加权平均值, 其中各输入的权重是一样的。 实际上,注意力汇聚得到的是加权平均的总和值, 其中权重是在给定的查询和不同的键之间计算得出的。

import torch
from d2l import torch as d2l

# 为了可视化注意力权重,我们定义了show_heatmaps函数。 其输入matrices的形状是 (要显示的行数,要显示的列数,查询的数目,键的数目)。
#@save
def show_heatmaps(matrices, xlabel, ylabel, titles=None, figsize=(2.5, 2.5),
                  cmap='Reds'):
    """显示矩阵热图"""
    d2l.use_svg_display()
    num_rows, num_cols = matrices.shape[0], matrices.shape[1]
    fig, axes = d2l.plt.subplots(num_rows, num_cols, figsize=figsize,
                                 sharex=True, sharey=True, squeeze=False)
    for i, (row_axes, row_matrices) in enumerate(zip(axes, matrices)):
        for j, (ax, matrix) in enumerate(zip(row_axes, row_matrices)):
            pcm = ax.imshow(matrix.detach().numpy(), cmap=cmap)
            if i == num_rows - 1:
                ax.set_xlabel(xlabel)
            if j == 0:
                ax.set_ylabel(ylabel)
            if titles:
                ax.set_title(titles[j])
    fig.colorbar(pcm, ax=axes, shrink=0.6);

# 下面我们使用一个简单的例子进行演示。 在本例子中,仅当查询和键相同时,注意力权重为1,否则为0。
attention_weights = torch.eye(10).reshape((1, 1, 10, 10))
show_heatmaps(attention_weights, xlabel='Keys', ylabel='Queries')

10.1. 注意力提示_第2张图片

10.1.4. 小结

  • 人类的注意力是有限的、有价值和稀缺的资源。

  • 受试者使用非自主性和自主性提示有选择性地引导注意力。前者基于突出性,后者则依赖于意识。

  • 注意力机制与全连接层或者汇聚层的区别源于增加的自主提示。

  • 由于包含了自主性提示,注意力机制与全连接的层或汇聚层不同。

  • 注意力机制通过注意力汇聚使选择偏向于值(感官输入),其中包含查询(自主性提示)和键(非自主性提示)。键和值是成对的。

  • 我们可以可视化查询和键之间的注意力权重。

你可能感兴趣的:(Python基础学习,python书籍笔记,#,人工智能)