软注意力与硬注意力

Soft attention vs. hard attention

在此博客 post、The Unreasonable Effectiveness of Recurrent Neural Networks 中,Andrej Karpathy 提到了基于神经网络的机器学习的未来方向:

The concept of attention is the most interesting recent architectural innovation in neural networks. [...] soft attention scheme for memory addressing is convenient because it keeps the model fully-differentiable, but unfortunately one sacrifices efficiency because everything that can be attended to is attended to (but softly). Think of this as declaring a pointer in C that doesn't point to a specific address but instead defines an entire distribution over all addresses in the entire memory, and dereferencing the pointer returns a weighted sum of the pointed content (that would be an expensive operation!). This has motivated multiple authors to swap soft attention models for hard attention where one samples a particular chunk of memory to attend to (e.g. a read/write action for some memory cell instead of reading/writing from all cells to some degree). This model is significantly more philosophically appealing, scalable and efficient, but unfortunately it is also non-differentiable.

我想我理解了指针的比喻,但到底什么是注意力,为什么硬的不可微?

我找到了关于注意力 here 的解释,但仍然对 soft/hard 部分感到困惑。

关注到底是什么?

为了能够理解这个问题,我们需要深入研究一下注意力试图解决的某些问题。我认为关于 hard attention 的开创性论文之一是 Recurrent Models of Visual Attention,我鼓励 reader 阅读该论文,即使它看起来并不完整一开始可以理解。

为了回答注意力到底是什么的问题,我将尝试提出一个我认为更容易回答的不同问题。也就是说,为什么要关注?。我链接的论文试图简洁地回答这个问题,我将在此处重现部分推理。

想象一下,您被蒙上眼睛并被带到一个惊喜的生日派对上,而您刚刚睁开眼睛。你会看到什么?

现在,当我们说您看到图片时,它是以下技术上更正确的更短版本动作序列,即随着时间的推移移动您的眼睛并收集有关现场的信息。您不会一次看到图像的每个像素。您一次 关注 图片的某些方面并汇总信息。例如,即使在这样一张混乱的照片中,您也能认出您的叔叔比尔和堂兄山姆 :)。这是为什么?因为您关注当前图像的某些突出方面

这正是我们想要赋予神经网络模型的那种力量。为什么?将此视为某种正则化。 (这部分答案参考了论文)你通常的卷积网络模型确实有能力识别杂乱的图像,但我们如何找到确切的权重集"good"?这是一项艰巨的任务。通过为网络提供新的架构级功能,使其能够按顺序 关注 图像的不同部分并随着时间的推移聚合信息,我们使这项工作变得更容易,因为现在网络可以简单地学会忽略混乱(希望如此)。

我希望这能回答问题什么是硬注意力?。现在介绍其 可微性 的性质。好吧,还记得我们在看生日照片时是如何方便地挑选要看的正确位置的吗?我们是怎么做到的?此过程涉及做出选择,这很难用输入(图像) 的可微分函数来表示。例如,根据您已经看过的内容和图像,决定下一步要看的地方。你可能有一个神经网络在这里输出答案,但我们不知道正确答案!事实上没有正确答案。那么我们如何训练网络参数呢?神经网络训练主要取决于输入的可微损失函数。此类损失函数的示例包括对数似然损失函数、平方损失函数等。但在这种情况下,我们没有正确的答案知道下一步该去哪里。那么我们如何定义损失呢?这就是称为 强化学习 (RL) 的机器学习领域的用武之地。RL 允许您通过使用强化等方法在策略 space 中进行渐变方法和演员评论家算法。

什么是软注意力?

这部分答案借用了一篇名为 teaching machines to read and comprehend 的论文。 RL 方法(例如强化方法)的一个主要问题是它们具有高方差(根据计算的预期奖励的梯度),它与网络中隐藏单元的数量成线性比例。这不是一件好事,尤其是当您要构建一个大型网络时。因此,人们试图寻找 可区分的 注意力模型。所有这一切都意味着注意力项和损失函数是输入的可微分函数,因此所有梯度都存在。因此,我们可以使用我们的标准反向传播算法以及一种常用的损失函数来训练我们的网络。那么什么是软注意力?

在文本上下文中,它指的是模型选择将更重要与文档中的某些词相关联而不是其他标记的能力。如果您正在阅读一份文档并且必须根据它回答一个问题,那么专注于文档中的某些标记可​​能会帮助您更好地回答问题,而不是仅仅阅读每个标记就好像它同样重要一样。这是文本软注意力背后的基本思想。它之所以是 可微分模型 是因为您完全根据特定的令牌和手头的查询来决定对每个令牌支付多少注意力。例如,您可以在同一向量 space 中表示文档和查询的标记,并查看点 product/cosine 相似度作为衡量您应该对该特定标记给予多少关注的量度,给定该查询.请注意,余弦距离操作相对于其输入是完全可微的,因此整个模型最终是可微的。 请注意,本文使用的确切模型不同,这个论点只是为了演示,尽管其他模型确实使用基于点积的注意力分数。