N10 - NLP中的注意力机制


目录

  • [1. 注意力机制是什么](#1. 注意力机制是什么)
  • [2. 注意力实现步骤](#2. 注意力实现步骤)
    • [0. 准备隐藏状态](#0. 准备隐藏状态)
    • [1. 获取每个编码器隐藏状态的分数](#1. 获取每个编码器隐藏状态的分数)
    • [2. 通过softmax层运行所有分数](#2. 通过softmax层运行所有分数)
    • [3. 通过softmax得分将每个编码器的隐藏状态相乘](#3. 通过softmax得分将每个编码器的隐藏状态相乘)
    • [4. 向量求和](#4. 向量求和)
    • [5. 将上下文向量输入编码器](#5. 将上下文向量输入编码器)
    • 最后来一个总的动图
  • 总结与心得体会

1. 注意力机制是什么

在上节的seq2seq框架中,让两个循环神经网络(RNN)构成了 编码器-解码器 结构。其中编码器逐个读取输入词,获得固定维度的向量表示,然后解码器基于这些输入逐个提取输出词。

上面的结构的问题在于,解码器从编码器接受的唯一信息是 最后一个编码器隐藏状态,这是类似于对输入的序列进行总结。

所以对于较长的输入文本,结构会变成如下图所示

如果仍然希望解码器仅仅利用最后一个编码器的隐藏状态的输出就输出完成的译文,肯定是不太合理地,会导致灾难性遗忘。

所以我们如果可以向解码器提供每个编码器时间步的向量表示,而不是只把最终的给它,是不是就能改进翻译的结果呢,这就需要引入注意力机制。

注意力机制是编码器和解码器之间的接口,它为解码器提供每个编码器隐藏状态的信息(最后一层的除外)。通过这个设置,模型能够有选择地侧重输入序列中游泳的部分,有助于模型更高效地处理输入长句。

注意力机制的本质:通过为每个单词分配值,注意力机制可以为不同单词分配不同的注意力。然后利用softmax对编码器隐藏状态进行加权求和,得到上下文向量(Context Vector)。

注意力层的实现可以分成6个步骤。

2. 注意力实现步骤

0. 准备隐藏状态

首先需要准备一个解码器隐藏状态和所有可用的编码器的隐藏状态

1. 获取每个编码器隐藏状态的分数

分数(标量)通过评分函数获得。图示是解码器和编码器隐藏状态之间的点积。

2. 通过softmax层运行所有分数

将上一步的得分放到softmax层,这些得分代表注意力分布。

3. 通过softmax得分将每个编码器的隐藏状态相乘

将每个编码器隐藏状态与对应的softmax得分相乘,获得alignment向量

4. 向量求和

将所有的alignment向量相加,生成上下文向量(Context Vector)

5. 将上下文向量输入编码器

最后一步就是把生成的上下文向量给编码器作为输入使用

最后来一个总的动图

总结与心得体会

在没有本节学习之前,我一直以为注意力机制就是Transformer中使用的自注意力机制。通过注意力机制的过程学习,我才发现,自注意力机制只是注意力机制中的一种,并且Transformer这种也只是自注意力机制的一种实现形式。宏观上来看,自注意力机制可以用在更广泛的场景中,比如计算一下特征图每层之间的注意力分数,叫做通道注意力机制。

相关推荐
摆烂小白敲代码1 分钟前
【机器学习】K近邻算法
c++·人工智能·算法·机器学习·近邻算法
UQI-LIUWJ35 分钟前
模型运行速度笔记: s/epoch VS s/iter
人工智能·笔记·机器学习
墨绿色的摆渡人1 小时前
用 Python 从零开始创建神经网络(三):添加层级(Adding Layers)
人工智能·python·深度学习·神经网络
nuc_baixu1 小时前
opencv kdtree & pcl kdtree 效率对比
人工智能·opencv·计算机视觉
学步_技术1 小时前
自动驾驶系列—自动驾驶中的短距离感知:超声波雷达的核心技术与场景应用
人工智能·机器学习·自动驾驶·uss
凡人的AI工具箱1 小时前
15分钟学 Go 第 54 天 :项目总结与经验分享
开发语言·人工智能·后端·算法·golang
&永恒的星河&1 小时前
爆火的AI智能助手ChatGPT中自注意力机制的演化与优化
人工智能·chatgpt
B站计算机毕业设计超人1 小时前
计算机毕业设计Python+CNN卷积神经网络股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
大数据·爬虫·python·深度学习·机器学习·课程设计·数据可视化
WenGyyyL2 小时前
无人机检测车辆——多目标检测
人工智能·目标检测·无人机
goomind2 小时前
YOLOv11实战PCB电路板缺陷识别
人工智能·python·深度学习·yolo·目标检测·计算机视觉·缺陷检测