📗
deeplearning
  • 机器学习
    • LR & SVM
    • 树模型
    • 评测指标
    • 数据不平衡
  • CV基础
    • 基础模型
    • 初始化
    • 激活函数
    • 注意力机制
    • 损失函数
    • 优化器
    • 可视化
    • 轻量级网络
    • 多任务学习
  • deepfake
    • 数据集
  • 人脸
    • 数据集
    • 人脸对齐
    • 人脸检测
    • 人脸识别
  • 语义分割
    • 语义分割
  • 无监督
    • 无监督
  • 推荐系统
    • 推荐系统模型
    • 推荐系统中的偏差
    • 王喆:深度学习推荐系统
    • 特征处理
    • 重排序
    • 互联网商业化变现
  • 数学
    • bayes最大似然
    • 蒙特卡洛
  • 网站
    • css
    • html
    • js
    • jquery
    • flask
  • 基础工具
    • anaconda
    • docker
    • git
    • linux install
    • vpn
    • latex
  • python
    • numpy
    • matplotlib
    • pandas
    • multi process
    • pytorch
  • 设计模式
    • 设计模式之美
    • 图说设计模式
  • 其他
    • how to ask
    • python style
Powered by GitBook
On this page
  • 软性注意力
  • 硬性注意力
  • 键值对注意力
  • 多头注意力
  • 自注意力

Was this helpful?

  1. CV基础

注意力机制

Previous激活函数Next损失函数

Last updated 3 years ago

Was this helpful?

attention函数的本质可以被描述为一个查询query到一系列键值对(key-value)的映射,类似一个寻址(addressing)的过程。

软性注意力

为了从 𝑁 个输入向量[𝒙1, ⋯ , 𝒙𝑁 ] 中选择出和某个特定任务相关 的信息,我们需要引入一个和任务相关的表示,称为查询向量(Query Vector), 并通过一个打分函数来计算每个输入向量和查询向量之间的相关性。

可以分为两步

  1. 计算注意力分布。注意力分布可以解释为在给定任务相关的查询 𝒒 时,第 𝑛 个输入 向量受关注的程度.

  2. 加权平均

相关性打分函数有四种形式:

  1. 加性模型 $s(x, q)=v^{\top} \tanh (w x+\boldsymbol{U} q)$

  2. 点积模型 $s(x, q)=x^{\top} q$

  3. 缩放点积模型 $s(x, q)=\frac{x^{\top} q}{\sqrt{D}}$

  4. 双线性模型 $s(x, q)=x^{\top} w q$

其中 $W , U , v$ 为可学习的参数,$D$ 为输入向量的维度

当输入向量的维度 𝐷 比较高时,点积模型的值通常有比较大的方差,从而导致Softmax函数的梯度会比较小.因此,缩放点积模型可以较好地解决这个问题。

硬性注意力

软性注意力选择的信息是所有输入向量在注意力分布下的期望.此外,还有一种注意力是只关注某一个输入向量,叫作硬性注意力(Hard Attention)。

硬性注意力有两种实现方式:

  1. 一种是选取最高概率的一个输入向量,即$att(X, q)=x_{\hat{n}}$,其中$\hat{n}$为概率最大的输入向量的下标

  2. 另一种硬性注意力可以通过在注意力分布式上随机采样的方式实现

键值对注意力

用键值对(key-value pair)格式来表示输入信息,其中“键”用来计算注意力分布,“值”用来计算聚合信息.

当k=v时,就是普通的注意力机制。

多头注意力

多头注意力(Multi-Head Attention)是利用多个查询 𝑸 = [𝒒1 , ⋯ , 𝒒𝑀 ],来并行地从输入信息中选取多组信息.每个注意力关注输入信息的不同部分.

$\operatorname{att}((\boldsymbol{K}, \boldsymbol{V}), \boldsymbol{Q})=\operatorname{att}\left((\boldsymbol{K}, \boldsymbol{V}), \boldsymbol{q}{1}\right) \oplus \cdots \oplus \operatorname{att}\left((\boldsymbol{K}, \boldsymbol{V}), \boldsymbol{q}{M}\right)$

其中 $\oplus$ 表示向量拼接

自注意力

不同的输入长度,其连接权重的大小也是不同的. 这时我们就可以利用注意力机制来“动态”地生成不同连接的权重,这就是自注意力模型(Self-Attention Model)。可以处理变长序列。