在The Unreasonable Effectiveness of Recurrent Neural Networks博客中,Andrej Karpathy提到了基于神经网络的机器学习的 future 方向:
我想我理解了指针的隐喻,但是什么才是真正的注意,为什么硬的难于区分?
我找到了有关注意力here的解释,但仍然对软/硬部分感到困惑。
最佳答案
究竟要注意什么?
为了能够理解这个问题,我们需要深入研究某些注意力需要解决的问题。我认为有关的重要文章的开创性论文之一是Recurrent Models of Visual Attention,我鼓励读者仔细阅读该论文,即使起初似乎并不能完全理解。
为了回答到底是什么注意力的问题,我将尝试提出另一个我认为更容易回答的问题。哪个是,为什么要注意? 。我链接的论文试图简洁地回答该问题,在此我将重述部分推理。
想象一下,你被蒙住双眼,被带到了一个惊喜的生日聚会上,而你睁开了眼睛。你会看到什么?
现在,当我们说您看到图片时,它是以下在技术上更正确的操作序列的简化版本,即随着时间的推移而移动您的眼睛并收集有关场景的信息。您不会一次看到图像的每个像素。您一次只能一步一步地关注图片的某些方面,并汇总信息。例如,即使在这样困惑的画面中,您也会认出您的叔叔比尔和堂兄山姆:)。这是为什么?因为您要关注当前图像的某些显着方面。
这正是我们要赋予神经网络模型的力量。为什么?将此视为某种形式的正则化。 (答案的这一部分引用了本文)您通常的卷积网络模型确实具有能够识别困惑图像的能力,但是我们如何找到“好”权重的确切集合呢?这是一项艰巨的任务。通过为网络提供新的体系结构级别的功能,该功能允许它依次关注图像的不同部分并随着时间的推移来聚合信息,我们使这项工作变得更加容易,因为现在网络可以简单地学会忽略困惑情况了(或者是希望)。
希望这能回答问题。辛勤注意是什么? 。现在介绍其可区分性的性质。好吧,还记得我们在看生日照片时如何方便地选择正确的地方看吗?我们是如何做到的?该过程涉及做出难以根据输入(图像)的微分函数表示的选择。例如,根据您已经看过的内容和图像,确定下一个要看的地方。您可能有一个在此处输出答案的神经网络,但我们不知道正确的答案!实际上没有正确的答案。那么我们如何训练网络参数?神经网络训练关键取决于输入的可微分损失函数。这样的损失函数的例子包括对数似然损失函数,平方损失函数等。但是在这种情况下,我们没有关于下一步的正确答案。那我们如何定义损失呢?这就是机器学习 Realm 强化学习(RL)的地方。RL允许您通过使用诸如reinforce方法和actor评论家算法之类的方法在策略空间中进行渐变。
什么是软注意力?
答案的这一部分借用了名称为teaching machines to read and comprehend的论文。
RL方法(例如增强方法)的主要问题是它们具有较高的方差(就计算的期望报酬的梯度而言),该方差与网络中隐藏单元的数量成线性比例。这不是一件好事,特别是如果您要建立一个大型网络。因此,人们尝试寻找可区分的注意力模型。所有这些意味着注意项和损失函数是输入的可微函数,因此存在所有梯度。因此,我们可以将标准的反向传播算法与常见的损失函数之一一起用于训练我们的网络。那么什么是软注意力?
在文本的上下文中,它是指模型选择将更重要与文档中某些单词相对于其他标记相关联的能力。如果您正在阅读文档并且必须根据该文档回答问题,那么集中精力阅读文档中的某些标记可能比仅阅读每个标记具有同等重要的效果更好地回答该问题。这是文本软关注背后的基本思想。之所以是可区分模型的原因是,您可以纯粹基于特定 token 和手头查询来决定对每个 token 付出多少关注。例如,您可以在相同的 vector 空间中表示文档和查询的标记,并查看点乘积/余弦相似度,以衡量在给定查询的情况下您应该对该特定标记给予多大的关注。注意,余弦距离运算相对于其输入是完全可区分的,因此最终整个模型是可区分的。
请注意,本文使用的确切模型有所不同,尽管其他模型的确使用基于点积的注意力得分,但该论点只是出于演示的目的。
关于machine-learning - 软注意力与硬注意力,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35549588/