注意力机制是如何学习的?

数据挖掘 神经网络 深度学习 nlp 注意机制
2021-09-24 01:51:29

我知道如何在神经网络中建立注意力。但我不明白注意力层如何学习关注某些特定嵌入的权重。

我有这个问题是因为我正在使用注意力层处理 NLP 任务。我相信它应该很容易学习(最重要的部分是学习对齐)。然而,我的神经网络只能达到 50% 的测试集准确率。注意力矩阵很奇怪。我不知道如何改善我的网络。

举个例子:
英语:你是谁?
中文:你是谁?

对齐方式是
“谁”到“谁”
、“是”到“是”
、“你”到“你”

注意力是如何学会的?

谢谢!

3个回答

来自惊人的博客 - FloydHub 博客 - 注意力机制

注意力机制

Attention 将两个句子转换成一个矩阵,其中一个句子的单词构成列,另一个句子的单词构成行,然后进行匹配,识别相关上下文。这在机器翻译中非常有用。

当我们想到英文单词“Attention”时,我们知道这意味着将您的注意力集中在某件事上并更加注意。深度学习中的注意力机制就是基于这种引导注意力的概念,它在处理数据时更加关注某些因素。

从广义上讲,注意力是网络架构的一个组成部分,负责管理和量化相互依赖:

  1. 输入和输出元素之间(General Attention)
  2. 在输入元素内(Self-Attention)

让我举一个例子来说明 Attention 在翻译任务中是如何工作的。假设我们有一句“你过得怎么样” ,我们想将其翻译成法语版本 - “Comment se passe ta journée”网络的注意力组件将对输出句子中的每个单词做的事情是从输入句子中映射重要且相关的单词,并为这些单词分配更高的权重,从而提高输出预测的准确性。

在此处输入图像描述

在翻译的每一步都为输入词分配权重

我建议阅读这篇文章 -注意机制

更多在 -注意力机制和记忆网络

注意力权重是通过反向传播学习的,就像规范层权重一样。

注意力模型的难点在于了解对齐背后的数学原理。不同的注意力公式以不同的方式计算对齐分数。主要是Bahdanau注意,这里制定另一个是Luong的,在原始论文中提供了几个变体Transformers 有几个self-attention层(我刚刚在这里找到了一个很好的解释)。

然而,反向传播是所有这些的基础。我知道注意力对齐分数如何在完好无损地使用规范学习技术的同时提高我们模型的性能是令人惊奇的。

以最简单的方式回答——让模型通过训练自己来学习注意力权重。我们通过定义一个具有 1 个单元的 Dense 单层 MLP 来做到这一点,该单元“转换”输入句子中的每个单词,当采用这种转换与最后一个解码器状态的点积时,如果翻译下一个单词时需要考虑有问题的单词。

所以在解码器端,在翻译每个单词之前,我们现在知道输入序列中的所有单词需要被赋予什么重要性——我们所要做的就是获取解码器的最后一个隐藏状态并将其与所有的 '输入序列中的单词和softmax结果。

至于在训练期间如何学习权重 - 它的学习方式与学习 NN 中的任何层权重的方式相同 - 使用标准梯度下降、反向传播概念等