技术方案的第一步,永远是调研。
林晨把透明蒸馏项目的调研分为两条线:一条是可解释性方向,交给张明远;另一条是蒸馏方法方向,他自己来。陆小溪负责梳理现有数据管道,评估改造可行性,暂时不参与调研。
周四上午,林晨坐在工位上,面前摊着三篇打印出来的论文,笔记本上密密麻麻写满了标注。屏幕上还开着七八个标签页,全是最近两年顶会里关于模型蒸馏和可解释性的文章。
这不是他第一次做技术调研——入职第一周的可解释性调研他已经做过一轮了,那份四十多页的报告还在内部wiki上挂着。但那次的调研是广撒网式的,目的是了解全貌;这次的调研是精准打击式的,目的是找到在蒸馏过程中保留可解释性的具体技术路线。
他先梳理了现有的主流蒸馏方法。
硬标签蒸馏是最简单的——教师模型输出分类结果,学生模型直接学习这些标签。效果有保证,但可解释性几乎为零。学生模型学到的是教师的答案,而不是教师的推理过程。pASS。
软标签蒸馏是hinton在2015年提出的经典方法——教师模型输出概率分布(soft labels),学生模型学习这个分布。好处是信息量更大,坏处是依然只传递了结果层面的知识,没有传递中间层的推理逻辑。pASS。
特征蒸馏更进一步——不仅传递输出,还传递中间层的特征表示。学生模型不仅要学怎么答,还要学怎么想。这个方向更接近目标,但现有的特征蒸馏方法关注的是效果保真,而不是可解释性。也就是说,学生模型学到了中间层的特征分布,但它无法解释这些特征对最终决策的贡献度。有潜力,但不够。
关系蒸馏——教师模型中不同样本之间的关系也被传递给学生模型。比如两篇文章在教师的表示空间里是相似的,学生模型也应该保持这种相似性。这个方法天然带有一定的语义信息,对可解释性有帮助。可以考虑。
注意力蒸馏——将教师模型中的注意力图作为额外监督信号传递给学生。注意力图本身就是一种特征归因——它告诉你模型在哪些位置投入了更多的计算资源。这个方法和可解释性有直接关系,但它只适用于基于注意力机制的模型,对非transformer架构不适用。重点关注。
林晨在笔记本上画了一个对比表格,把每种方法的优点、缺点、和可解释性的关联度逐一标注。然后他在表格最右边加了一列,标题是可解释性改造潜力。
关系蒸馏和注意力蒸馏的改造潜力最高,但都不完全满足透明蒸馏的需求。他需要的不是在现有蒸馏方法上打补丁,而是设计一种新的蒸馏框架,让可解释性成为蒸馏过程的内生约束,而不是事后添加的附属功能。
他站起来,走到白板前(他们小组申请了一块固定白板,就在工区角落),开始画架构草图。
草图的核心是一个三角形的约束框架:
顶部顶点标注效果保真——学生模型的输出要尽量接近教师模型。 左下顶点标注模型压缩——学生模型的参数量和推理延迟要显着低于教师模型。 右下顶点标注可解释性保持——学生模型要能提供决策归因,解释为什么给出这个结果。
传统的蒸馏方法只优化顶部和左下之间的权衡(效果vs压缩),完全忽略了右下角的可解释性。透明蒸馏要做的是在三者之间找到帕累托最优的平衡点。
他在三角形中间画了一个圈,标注核心创新点:可解释性感知的蒸馏损失函数。
这个损失函数由三部分组成:
输出蒸馏损失(传统软标签蒸馏)——保证效果保真
特征蒸馏损失(中间层特征对齐)——保证表示学习
可解释性蒸馏损失(新增)——保证学生模型的归因结果与教师模型一致
第三部分是创新的核心。如何定义归因结果一致?如果教师模型对某次推荐决策的归因是用户兴趣占60%,内容热度占30%,多样性占10%,那么学生模型也应该给出类似的归因比例,而不能只学到输入输出映射而丢失归因信息。
林晨在白板上画了一个具体例子:
教师模型输出:推荐内容A,归因={用户兴趣:0.6,内容热度:0.3,多样性:0.1} 学生模型输出:推荐内容A,归因={用户兴趣:0.55,内容热度:0.35,多样性:0.1}
两个模型的推荐结果相同,归因比例近似但不完全一致。这个差距就是可解释性蒸馏损失——差距越小,学生模型对教师模型推理逻辑的还原度越高。
他在白板上写下关键公式的设计思路:
L_total = a * L_output + β * L_feature + γ * L_explain
其中a、β、γ是超参数,控制三个损失项的权重。通过调整这三个权重,可以在效果、压缩和可解释性之间找到不同的平衡点。
妙啊。他自言自语,退后一步看着白板上的草图。
这不是一个简单的技术优化,而是一个全新的蒸馏范式——从效果驱动的蒸馏可解释性感知的蒸馏。如果实验能验证这个框架的有效性,轻舟项目就能实现一个质变:不只是模型变小了,而是小模型依然透明。
他拿出手机,拍了白板上的草图,发给陈博士,附了一句:初步思路,欢迎拍砖。
五分钟后,陈博士的回复来了:方向对。重点考虑一下可解释性蒸馏损失的计算方式,Shapley值计算成本太高,线上不现实,要想一个近似方案。
林晨笑了。陈博士果然一针见血。Shapley值是特征归因的理论最优解,但计算复杂度是指数级的,不可能在线上实时计算。他需要一个高效的近似方案。
他回到工位,开始调研Shapley值的近似计算方法。KernelShAp、FastShAp、SamplingShAp……每个方法都有自己的权衡,有的速度快但精度低,有的精度高但计算量大。
他快速浏览了十来篇论文,最终锁定了两个方向:
方向一:注意力权重作为Shapley值的近似。在transformer架构中,注意力权重本身就是一种天然的特征归因信号。如果教师在蒸馏过程中同时传递注意力分布,学生就可以学到归因信息,而不需要额外的Shapley值计算。计算成本几乎为零。
方向二:FastShAp结合特征蒸馏。在离线阶段用教师模型预计算Shapley值,作为蒸馏标签的一部分。在线推理时,学生模型直接输出归因结果,不需要实时计算。计算成本为一次前向传播的额外开销。
方向一更优雅,但只适用于transformer架构;方向二更通用,但需要离线预计算。
为什么不两个都做?他在笔记本上写下这句话,然后在旁边画了一个分支:transformer架构用方向一,其他架构用方向二。统一接口,按模型类型自动选择。
他站起身,走到张明远的工位旁边。明远正在电脑前翻看一篇关于ShAp的论文,看到林晨过来,立刻切换到笔记界面。
明远,调研进展怎么样?
我整理了现有的可解释性方案,张明远把笔记屏幕转过来给林晨看,Shapley值、LImE、注意力权重这三种是目前最主流的。但我有个疑问——Shapley值计算太慢了,线上用不了,那我们做可解释性蒸馏的时候,怎么保证实时性?
林晨笑了——明远和他想到一起去了。
问得好。我刚跟陈博讨论过同样的问题。他把自己白板上的思路给张明远讲了一遍,我们走两条路线:注意力权重归因作为轻量方案,FastShAp作为通用方案。你先重点调研注意力权重在蒸馏场景下的可行性,尤其是多注意力头如何传递和聚合。
张明远认真记下来。
还有一点,林晨补充,不要只看推荐系统领域的论文。金融风控、医疗诊断这些对可解释性要求更高的领域,可能已经有成熟的方案了。我在量化系统里用过一些风险归因的方法,回头我整理一份资料给你。
收到。
林晨拍了拍他的肩膀,回到自己的工位。路过陆小溪工位时,她正在低头看代码,没有打扰。
坐回工位,他打开文档,在技术方案的第一版里写下了今天的调研成果。核心架构思路已经清晰了,剩下的是把细节填进去,然后交给陈博士审阅。
窗外,南山科技园的午后阳光从云层中透出来,照在白板的草图上。三角形框架、三条损失函数、两个近似方案——这些线条和符号,正在从一个模糊的想法变成一个可执行的方案。
他继续敲键盘,文档的字数从0到500、从500到1000,一点一点生长。调研还没结束,但方向已经定了。
方向定了,剩下的就是跑。