我知道如何在神经网络中建立注意力。但我不明白注意力层如何学习关注某些特定嵌入的权重。
我有这个问题是因为我正在使用注意力层处理 NLP 任务。我相信它应该很容易学习(最重要的部分是学习对齐)。然而,我的神经网络只能达到 50% 的测试集准确率。注意力矩阵很奇怪。我不知道如何改善我的网络。
举个例子:
英语:你是谁?
中文:你是谁?
对齐方式是
“谁”到“谁”
、“是”到“是”
、“你”到“你”
注意力是如何学会的?
谢谢!
我知道如何在神经网络中建立注意力。但我不明白注意力层如何学习关注某些特定嵌入的权重。
我有这个问题是因为我正在使用注意力层处理 NLP 任务。我相信它应该很容易学习(最重要的部分是学习对齐)。然而,我的神经网络只能达到 50% 的测试集准确率。注意力矩阵很奇怪。我不知道如何改善我的网络。
举个例子:
英语:你是谁?
中文:你是谁?
对齐方式是
“谁”到“谁”
、“是”到“是”
、“你”到“你”
注意力是如何学会的?
谢谢!
来自惊人的博客 - FloydHub 博客 - 注意力机制
Attention 将两个句子转换成一个矩阵,其中一个句子的单词构成列,另一个句子的单词构成行,然后进行匹配,识别相关上下文。这在机器翻译中非常有用。
当我们想到英文单词“Attention”时,我们知道这意味着将您的注意力集中在某件事上并更加注意。深度学习中的注意力机制就是基于这种引导注意力的概念,它在处理数据时更加关注某些因素。
从广义上讲,注意力是网络架构的一个组成部分,负责管理和量化相互依赖:
让我举一个例子来说明 Attention 在翻译任务中是如何工作的。假设我们有一句“你过得怎么样” ,我们想将其翻译成法语版本 - “Comment se passe ta journée”。网络的注意力组件将对输出句子中的每个单词做的事情是从输入句子中映射重要且相关的单词,并为这些单词分配更高的权重,从而提高输出预测的准确性。
在翻译的每一步都为输入词分配权重
我建议阅读这篇文章 -注意机制
更多在 -注意力机制和记忆网络
以最简单的方式回答——让模型通过训练自己来学习注意力权重。我们通过定义一个具有 1 个单元的 Dense 单层 MLP 来做到这一点,该单元“转换”输入句子中的每个单词,当采用这种转换与最后一个解码器状态的点积时,如果翻译下一个单词时需要考虑有问题的单词。
所以在解码器端,在翻译每个单词之前,我们现在知道输入序列中的所有单词需要被赋予什么重要性——我们所要做的就是获取解码器的最后一个隐藏状态并将其与所有的 '输入序列中的单词和softmax结果。
至于在训练期间如何学习权重 - 它的学习方式与学习 NN 中的任何层权重的方式相同 - 使用标准梯度下降、反向传播概念等