machine-learning - 软注意力 vs. 硬注意力

标签 machine-learning neural-network recurrent-neural-network

在这篇博文中,The Unreasonable Effectiveness of Recurrent Neural Networks ,Andrej Karpathy 提到了基于神经网络的机器学习的 future 方向:

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 ,但仍然对软/硬部分感到困惑。

最佳答案

究竟什么是注意力?

为了能够理解这个问题,我们需要深入研究注意力试图解决的某些问题。我认为 上的一篇开创性论文用心关注 Recurrent Models of Visual Attention我会鼓励读者通读那篇论文,即使它起初看起来并不完全理解。

为了回答究竟什么是注意力的问题,我将尝试提出一个我认为更容易回答的不同问题。即,为什么要关注? .我链接的论文试图简洁地回答这个问题,我将在这里复制部分推理。

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

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

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

我希望这能回答问题 什么是硬注意力? .现在进入其性质 可微性 .好吧,还记得我们是如何在查看生日照片的同时方便地选择正确的地点进行观看的吗?我们是怎么做到的?这个过程涉及做出难以用输入(图像)的可微函数表示的选择。例如,根据您已经看过的内容和图像,决定下一步看哪里。你可以有一个输出答案的神经网络,但我们不知道正确的答案!事实上没有正确的答案。那么我们如何训练网络参数呢?神经网络训练严重依赖于输入的可微损失函数。此类损失函数的示例包括对数似然损失函数、平方损失函数等。但在这种情况下,我们没有下一步该往哪里看的正确答案。那么我们如何定义损失呢?这就是一个叫做 的机器学习领域。强化学习 (RL) 进来了。RL 允许您通过使用诸如加强方法和 Actor 评论算法之类的方法在策略空间中执行梯度。

什么是软注意力?

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

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

关于machine-learning - 软注意力 vs. 硬注意力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35549588/

相关文章:

python-3.x - 计算混淆矩阵中的精确度和召回率

R h2o : how to implement a custom stopping_metric for GBM

python - tf.layers.conv2d和tf.contrib.slim.conv2d之间的区别

neural-network - 如何训练 ANN 玩纸牌游戏?

python - 即使在使用正则化器之后 LSTM 中的过度拟合

machine-learning - Keras运行时错误: GpuCorrMM failed to allocate working memory of 576 x 802816

python - 如何找到拟合指数函数的 x ?

python - 如何限制 Keras 中权重的格式

tensorflow - Torch 或 Tensorflow 中的通用循环神经网络

tensorflow - 如何在 Tensorflow/Keras 中的 2 层之间创建循环连接?