想象一下,你正试图理解人类在阅读书籍时大脑是如何运作的。你不能直接问他们:“你现在在想什么?”因为他们可能不知道,或者可能会撒谎。因此,科学家们使用一种特殊的相机来观察他们的眼睛。这被称为眼动追踪(eye-tracking)。它就像一个微型聚光灯,跟随人的视线移动,向我们展示他们究竟盯着哪些词、跳过了哪些词,以及在哪里停顿了多久。在计算机科学领域,这是一件大事,因为软件工程师一生都在盯着源代码(source code)——即那些告诉计算机如何运行的文本指令。但代码不仅仅是一个故事;它是一个谜题。工程师并不像读小说那样阅读代码;他们会来回跳转,反复阅读某些行,并寻找线索。了解他们的视线落在哪儿,能帮助我们构建更好的工具、设计更清晰的屏幕,甚至教计算机像人类一样思考。
现在,棘手的部分来了:计算机通常非常不擅长猜测人类正在看哪里。它们可能会认为一个长而复杂的单词是最重要的,但人类工程师知道,旁边那个简短、枯燥的单词才是整个程序的关键。这篇论文是关于如何教计算机停止瞎猜,开始像人类程序员一样去“看见”。研究人员构建了一种特殊类型的计算机大脑(模型),它通过观察人类阅读代码的过程来进行学习。他们不仅仅是告诉计算机:“这是代码,猜下一个词。”相反,他们给了它一张秘密的“作弊表”:一张人类眼睛实际落点的位置图。他们教会了计算机将自己的内部“注视点”与人类真实的注视点进行对比,不断调整自己的思维,直到两者匹配。
主要的发现是,这种新的计算机模型在模仿人类注意力方面表现得惊人地出色。当研究人员将其应用于针对三组不同程序员(一些在阅读 Java 代码,一些在阅读 C 代码)的测试时,计算机的预测结果比以往任何计算机模型都更接近人类的真实行为。事实上,在某些测试中,它预测人类视线落点的准确度比旧的标准方法高出了 64% 甚至 467%。它不仅猜对了数字,还学会了人类思维的模式。
但研究人员并没有止步于此。他们想看看这种“类人”的注意力是否能帮助计算机完成一项更难的工作:预测被称为**扫描路径(scanpath)*的精确眼动序列。想象一下,尝试预测一名徒步旅行者在森林中行走时会采取的精确路径,一步接一步。通过接受人类眼动数据训练的计算机,能够比其他著名的 AI 模型(如 GPT-5 和 Claude)以及之前的最佳计算机程序,更好地预测这些路径。虽然它在写作任务上也显示出了进步,但研究人员指出,与之前的最佳计算机程序相比,这些特定的增益在统计学上并不显著,尽管它仍然优于那些商业模型。这表明,当我们教计算机像人类那样去关注时,它们不仅变得更擅长阅读,还开始理解思考本身的过程*。
然而,作者们谨慎地表示,他们并没有声称已经解开了人类思维之谜。他们承认,他们的模型是一个“估计器”,用于估算一群人的普遍行为,而不是任何单个人大脑的完美副本。它也有局限性;它在处理较小的代码块时效果最好,如果代码过于庞大以至于无法一次性放入其内存,它可能会感到困惑。但结果有力地暗示,通过观察我们的眼睛如何移动,我们可以教机器像我们一样看待世界。
技术摘要:预测人类对源代码中单词的视觉注意力
问题陈述
理解软件工程任务中的人类视觉注意力,对于优化用户界面设计、改进软件工程工具以及建模人类认知过程至关重要。尽管眼动追踪数据已被用于研究程序员如何阅读源代码,但通过计算手段预测这种注意力仍然具有挑战性。现有方法分为两类:一类是通用计算机视觉模型,它们将注意力视为空间坐标并忽略了代码中的语义信息;另一类是文本阅读模型,它们假设的眼跳模式并不适用于代码阅读中复杂的、充满回视(regression-heavy)的特性。此外,虽然大语言模型(LLMs)展现出了注意力机制,但尚未确定其内部注意力是否与特定任务导向的代码阅读过程中的人类视觉注意力相一致。本文旨在解决的空白在于,缺乏一种能够利用眼动追踪数据来对齐机器注意力与人类认知模式,从而预测细粒度视觉注意力(源代码中的特定单词)的计算模型。
方法论
作者提出了一种基于预训练 Transformer 架构(具体为 jam 模型,一个 350M 参数的 GPT-2 风格模型)的计算模型,该模型通过实际的眼动追踪数据进行微调。该方法由三个主要部分组成:
- 预测目标: 模型预测源代码片段中每个单词的总注视时间百分比(ptgt)。Ptgt 定义为特定单词(感兴趣区域)的总注视时间除以整个代码人工制品的总注视时间。该指标量化了分配给特定标记(token)的相对重要性或注意力。
- 输入表示: 输入序列包含三个部分:源代码标记、注视标记(人类眼睛停留的单词)以及紧邻注视标记的标记。
- 自定义损失函数: 核心创新在于一个旨在通过微调使模型内部注意力与人类注意力对齐的创新损失函数。该过程包括:
- 注意力读取: 从最终的 Transformer 层中提取注意力矩阵(Q 和 K)(具体是通过平均第 10–16 个注意力头,基于先前发现的深层更易与人类注意力对齐的结论)。
- 机器注意力得分: 通过计算相邻标记与注视标记本身之间的注意力概率的平均值,得到标量注意力得分(a^)。
- 人类监督: 计算机器注意力得分(a^)与地面真值人类 ptgt(a)之间的相似度。
- 损失组合: 总损失(L)结合了用于语言建模的标准分类交叉熵(CCE)损失,以及两个辅助项:用于强制保证注视时间绝对精度的均方误差(MSE),以及用于强制执行注意力相对结构(高低注意力标记排序)的变换皮尔逊相关系数损失(Lcorr)。损失函数会进行动态缩放,以防止辅助项主导语言建模目标。
主要贡献
- 新颖的损失函数: 设计了一个显式最小化人类视觉注意力(ptgt)与神经网络内部自注意力之间差异的损失函数,并利用了 MSE 和皮尔逊相关系数。
- 细粒度预测: 超越了粗粒度的生物特征或任务难度预测,实现了在源代码单个单词(标记)层级的注意力预测。
- 消融实验: 通过系统性评估,证明了皮尔逊相关系数组件对模型性能的具体贡献。
- 扫描路径预测扩展: 将注意力对齐模型应用于预测注视序列(扫描路径)的任务,这一任务需要对人类思维过程的理解。
实验结果
该模型在涉及 Java 和 C 语言以及包括代码文档和缺陷定位在内的任务的三个不同数据集上进行了评估(Smith, Wallace, 和 Rodeghero 研究)。
- 注意力预测 (RQ1): 提出的模型显著优于来自软件工程(Bansal 等人)和计算机视觉(Tafasca 等人)的基准模型。
- 在 Wallace 研究(Java)中,该模型实现了 0.45 的皮尔逊相关系数,而基准模型分别为 0.27 和 0.21(较最佳基准提升了 64%)。
- 在 Rodeghero 研究(Java)中,它实现了 0.48 对比 0.41 和 0.42(提升 16%)。
- 在 Smith 研究(C)中,它实现了 0.25 对比 0.04 和 0.04(提升 467%)。
- 该模型与聚合人类参考值的相似度,在某些指标上甚至超过了单个人类参与者之间的相似度,这表明模型捕捉到了被个体差异所掩盖的“共识”注意力结构。
- 消融实验 (RQ2): 移除皮尔逊相关系数损失会导致所有指标(皮尔逊、斯皮尔曼、肯德尔、余弦相似度)的性能下降,证实了相关系数项对于学习正确的注意力排序至关重要。
- 扫描路径预测 (RQ3): 使用 Bansal 等人的代码摘要数据集,该模型在归一化编辑距离(NLD)、NDCG、精确率和召回率方面均优于原始 Bansal 基准模型及商业模型(GPT-5 Nano 和 Claude-Haiku-4.5)。值得注意的是,与表现出“异类”思维过程的商业模型相比,该模型预测的扫描路径更接近人类程序员(例如,侧重于方法体而非仅仅是签名)。
意义与主张
本文声称,通过结合人类眼动追踪数据的自定义损失函数进行微调,基于 Transformer 的语言模型可以有效地预测人类在源代码单词上的聚合视觉注意力。作者强调,该模型充当的是聚合注意力结构的估计器,而非特定个体的替代品。
主要主张包括:
- 对齐: 当受人类数据引导时,机器注意力可以模仿人类在代码单词上的注意力分布,其准确度水平可与人与人之间的共识度相当。
- 任务理解: 模型在扫描路径预测上的性能提升表明,将内部注意力与人类视觉模式对齐,可以增强模型处理需要理解人类思维过程的任务(如代码摘要)的能力。
- 局限性: 作者谦虚地指出,该模型聚合了时间上的注意力,从而丢失了时间动态和回视模式。他们还提醒,该模型并非人类注意力机制的完整描述,且结果可能无法推广到上下文窗口大于其容量(1,024 个标记)的任务,或未在训练数据中体现的语言/任务。
这项工作将自己定位为计算建模程序员认知领域的一大进步,提供了一个工具,用于更好地理解程序员需要哪些信息,以及如何设计符合人类认知过程的界面。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。