请注意注意力 - 将注意力发挥到极致
学习资料:
上期我们探索过, 人类眼睛黄斑的独特构造,让我们具备了注意力,通过移动眼睛,也能跳跃注意到画面中的其他局部信息。人类衍生出的注意力,是为了我们更专注于更加重要的细节,减少信息干扰。
切换注意力¶
为了理解一个事物,做一项购买决定之前,我们其实都是经历了一段思考, 这段思考时期,有短有长,有时候短到可能我们都没有意识到。而在这短暂的思考期间, 借助我们眼球的运动能力,我们可以不断切换要注意的地方, 即使在观察一段静止图片时或浏览静态网页时,都是如此。每次注意到的不同地点, 让我们能产生新的认知,或者对先有认知有更深程度的理解。人类通过在时间轴上, 眼球的移动,收集随时间变化的注意力,如果换一个说法,我想我会说: 这是对注意力的注意力。第一份注意力,产生了第一份认知理解,基于第一份理解, 我们决定第二次注意的位置,以此类推,直到我们达到完整的掌控和理解,做出对应的决策。
在语言上,也是一样,我们举个例子。
语言多次注意力¶
如果哪天有一位异性好友对你表白的回复是:“你人很好,很感谢有你的陪伴”。情场新手刚上车,第一眼看起来,好像是这个女生再夸我,激动得我眼泪要掉下来。带着这句话,让我一天都有好心情。可是当我吃完饭,再回想起她说我“人很好”,“感谢”我,这句话怎么听起来怪怪的。睡前我好像想明白了,她虽然说我好,但是这只是发好人卡的前奏,重点在后面,她在用“感谢陪伴”,委婉拒绝我!所以我使用了三次注意力,每次注意的时候都是基于上次注意后的理解。通过反复地回忆、琢磨才能研究透一句话背后的意思。
所以,如果深刻理解是通过注意力产生的,那么肯定也不只使用了一次注意力。这种思路正是目前AI技术发展的方向之一,利用注意力产生理解,而且使用的也是多次注意力的转换。
我们之前提到的模型,在通读语言后产生一个对句子全局的理解(句向量),然后再分别将 全局理解 和部分被注意的 局部理解 效应叠加,作为我后续任务的基础,比如基于全局和局部生成回复信息。但是这并不是我们刚刚提到的在注意力上再注意。所以聪明的科研人员创造了另一种方法,他们说,根本没有什么全局理解,我们用一次一次的注意力产生的局部理解就能解决这个问题。我们再来重复一遍上述发好人卡的过程,不过这一次,我们站在机器的角度,看它是怎么注意的。
模型第一次会通常会注意到一些局部的信息,在分散的地域分析有哪些有趣的词汇可以做出贡献,它觉得有趣的词可能是“好”, “感谢”, “陪伴”,如果单看这些注意到的东西,我可能以为女生在表扬我,我十分有戏。不过模型基于注意到的信息,再次注意。这次,模型开始觉得不对劲了,她说我好,还感谢我的陪伴,她到底想说啥? 经过第三次注意,模型意识到她可能只是想先扬后抑,这句话实际是一种转折,重点在后半句。所以模型也可以经过几次注意,不同层级的注意力带来的是不同层级上的理解。越是后面的注意,就是越深度的思考。如果熟悉自然语言模型的同学此刻应该也想到了,这就是 Transformer 模型。
Transformer注意力模型¶
如果把它可视化出来,Transformer 模型就长这样,它使用的是一个个注意力矩阵来表示在不同位置的注意力强度。通过控制强度来控制信息通道的阀门大小。即使这样,研究者还觉得不够。假如这种情况是一个人看多次,我们何不尝试让多个人一起看多次呢?这样会不会更有效率,变成三个臭皮匠赛过诸葛亮?
结果就有了这样的形态,多个人同时观察一句话,分别按自己的意见提出该注意哪里, 然后再汇总自己通过自己的注意力得到的结论,再进入下一轮注意力。 研究表明,这种注意力方案的确可以带给我们更深层的句意理解。
而且近期也有研究将这种 Transformer 模型框架延伸到了计算机视觉领域,带去了更专注的视觉注意力。
Talk is cheap, show me the code, 我也有通过编程实现AI技术的开源分享,想进一步动手把玩AI的同学,请关注莫烦Python,进店免费享用吧。