微调性能赶不上提示工程怎么办?Can Gradient Descent Simulate Prompting?——论文阅读笔记

今天速读一篇文章

Can Gradient Descent Simulate Prompting?

一句话总结

针对【新知识应用的场景里,FT效果往往追不上ICL 】这个情况,作者引入MAML的思想↓

内圈让模型学习新知识形成知识FT模型;

外圈通过最小化ICL和知识FT模型的KL散度,来引导模型逼近ICL的效果。

※ 备注1:ICL这里单指把知识召回到上下文当中,不考虑有没有few-shot Example。

※ 备注2:作者把这个方法叫learn by condition, LC,实验中会用到这个称呼。

※ 备注2【新知识应用的场景里,FT效果往往追不上ICL】这个情况举个常见的例子,如果RAG的知识索引和知识切片做的好,本地知识的回答正确率往往比在这些知识库上Train过的模型高。

多说一句【新知识应用的场景里,为什么还要用FT?】

我选这篇读确实是因为这个Setting有现实意义。

比如,在让模型KnowHow的场景下,模型要学习大量的"在什么场景下应该作什么,应该怎么做 "这样的知识。如果这些知识的总量比较有限(场景比较静态),那ICL就能做的很好。但如果场景非常非常多(你就想想自己看小红书炒菜会出多少种跟图文攻略不一样的情况,就能体会了),把所有这些知识都塞到上下文里就不如训练更经济 了。

而且一些场景中(比如引导型对话),又很难把"场景"的索引建起来以便RAG------因为场景描述本身就是个非结构化知识描述,表征、文本分析法其实都比较难准确建立索引。

想通过训练解决问题,但仅靠背诵一遍 【操作手册】(formalize 在什么场景下应该作什么,应该怎么做的文档),模型的执行性能是远远做不到和ICL相比的。

而且在实际工程开发中,其实存在两个阶段:

阶段一是用提示工程和Agent体系来支持80%的场景 ,这个时候会积累一些非常精品的知识。

阶段二是想办法把剩下20%的场景也支持起来 ,这个时候ICL其实受限于场景的膨胀和模型的理解效率,已经无法维继,必须转向其他方案,而转向其他方案时,如果不继续利用前面开发的提示工程和Agent生产的数据,前面的开发成本又白花了。

所以能够弥合这两个阶段的方案,其实非常适合实际场景应用。

整体步骤

  1. 内圈优化(Inner Loop)
    假装微调 :给模型θ\thetaθ看一条新知识ccc(如"Bob works at Best Buy"),让它用一次梯度下降 更新自己的参数,得到θ′\theta'θ′。

  2. 外圈优化(Outer Loop)
    训练模型的"学习能力"

    • 拿BASE模型θ\thetaθ 和新知识 ccc 去回答问题 qqq(如"Does Bob work at an electronics store?")得到答案 aaa
    • 拿内圈"假装微调"后的模型θ′\theta'θ′,计算这个目标↓

这个目标就是BASE模型 θ\thetaθ 给定新知识 ccc ,问题 qqq 的情况下生成答案 a^\hat{a}a^ 的概率和假装微调模型 θ′\theta'θ′,给定问题qqq,"生成" a^\hat{a}a^ 的概率的KL。(不是真生成,只是算logits)

  • 调整 :根据这个KL,用梯度下降更新模型的初始参数 θ\thetaθ

但以上理念性方案之外,作者对训练的描述非常缺乏细节。除了,使用了LORA ,超参 lr=1E-3 和训了1个epoch 以外,其他的细节就没啥了(比如,作者说对梯度进行了clip,那你clip的参数是多少呢?再比如,训练的时候,学习知识的单步gradient怎么放训练图上?再比如,通过后面实验可以看到,作者主实验里的的内圈是每次一个知识的,但是外圈的batch_size是16个, 这是不是得固定好对应篇章的问题?种种,心累)

效果怎么样

一定程度逼近了ICL,但差距还比较明显

这个图上横轴对应的是训练配置 ,柱子的颜色对应的是测试配置 ,横轴上,BM是BASE Model,LC是作者的方法,LG是把BASE模型通过ICL生成的答案a^\hat{a}a^ 换成ground truth aaa,其他没变。

注意图上的字,中文是我写的,主实验你放张表怎么啦,能画得这么不清楚,作者真的是......需要调整 (¦3」∠)

效果上看,BASE模型+ICL在SQuAD上能达到87% (caption里写是Accuracy......),BASE模型+纯FT(就是普通的拿训练集Finetune)就只能达到47.3% 。而作者的方法LC(橙色柱子中间LC对应的哪个柱子)能达到58.6% ,简单说还是有所逼近但不够看

内外圈的配置很关键,但作者没说清楚

你就说,实验配置有没有必要写到caption里去吧......

这个实验表,其实就是比是不是用LORA就够了 。如果说纯BASE模型+ICL是天花板的话:↓

※一个结果是:内外圈都用全参数微调外圈用了Rank=1的LORA (内圈还是全参数微调)的结果差不多 ,因为内圈实际上只参与外圈模型更新的gradient计算,但不参与更新,所以其实意思是这些知识和问题回答只要Rank=1就够了?(我其实希望作者能展示更多实验数据集上的结果)

※ 另一个结果是,内圈用随机初始的LORA来更新,和内圈用训练过的LORA来更新,后者效果好巨多 。注意这里没说Rank,正文里也没有明说Inner的Rank是不是等于1(虽然按作者的实验节奏是有可能是1 的,毕竟你这个LORA adapter从哪儿来的嘛),吊诡的是表的 这一列(最后一列 )上效果Gap最大,SQuAD 上能打到72% 但wiki只能达到38,即和Full差不多。而wiki 数据上的question其实是作者楞构造的,就是把一句话随机楞拆成 三部分,比如 ↓

这样其实真的挺楞的。无非打磨是续写能力,跟背诵原知识差距不大。

这个SQuAD和wiki的Gap,往好了解释 ,可以说是我参考的一篇论文观点的印证 Instruction-tuned Language Models are Better Knowledge Learners 即 先训QA后训QA+Document对模型回答问题的能力有帮助。

往不好了解释:这个Inner拿来的Adapter训练得多深啊,不是上一个epoch训完,已经见过一遍知识和QA的adapter吧?那训练epoch数就不一样了啊,算不算过拟合呢?

可能是难知识编辑的一种方案

上表中的表头被我改了,当前arxiv版本中的表头根本看不出是写啥(作者你快改吧,加油干💪🏻)简单来说,就是↓

※ 其一、作者发现有些Case(表的第一行)在普通FT前后,模型都答不对问题 。在作者推荐的LC方法的内圈(我猜的)跑完之后,也是回答不正确的,但是LC外圈跑完之后就能回答对了。

※ 其二、有些Case就是普通FT训练前后都回答不正确,但LC内圈跑完已经能回答了。

这里其实我有个疑问,普通FT的lr是多少啊,LC1e-3的lr模型其实啥都背的下来了,就只是对这个Q敏感不敏感的问题。

评价与感想

  1. 作者这篇工作特别像是把第0.5稿给丢到arxiv上了。实验的setting,结果的描述等等都非常欠整理,代码也没有放,导致很多细节无法确定,应该后面会有更好的版本放出来的,对吧ヾ(◍°∇°◍)ノ゙。
  2. 刨去论文写作没完工带来的问题,这篇的setting和思路我都非常喜欢。前面说过了场景的价值,这里说思路。在LLM的学习过程中引入MAML的尝试其实不止这篇论文一个,但是着眼于新知识学习的工作,我最近好像只看到这一个。而且就作者现在的setting而言,也应该可以扩展到Reasoning(虽然看ICLR25也有一个引入MAML做推理的,但是着眼点不太一样,不在这里比较了)。
  3. 论文的机制分析非常非常不够 。就之前对Induction Head的研究而言,一些工作会认定模型的ICL能力和知识记忆能力来自于Transformer不同的Head 。比如Cutting Off the Head Ends the Conflict: A Mechanism for Interpreting and Mitigating Knowledge Conflicts in Language Models 这篇文章提到模型上下文理解的头和知识记忆的头分别在不同的层,而且这两者的作用强弱会影响"知识冲突"这一现象。

而今天我们讨论的这篇文章的作者可以说是【把ICL头当做Teacher,把记忆头当做Student,做模型内的知识蒸馏】,那训练完了之后,这些头有什么变化?

另外,作者在LC方法能独占优化的Case上也没有分析,到底在外圈模型的什么变了导致模型能答对问题了?这些都需要解释。

不过,往好处说,至少还可以再出两篇续作,一篇讲机制,一篇讲训练加速,是不是?

相关推荐
whabc1005 分钟前
和鲸社区深度学习基础训练营2025年关卡2(2)sklearn中的MLPClassifier
人工智能·深度学习·numpy
往日情怀酿做酒 V176392963827 分钟前
pytorch的介绍以及张量的创建
人工智能·pytorch·python
北辰alk39 分钟前
如何实现AI多轮对话功能及解决对话记忆持久化问题
人工智能
智驱力人工智能39 分钟前
极端高温下的智慧出行:危险检测与救援
人工智能·算法·安全·行为识别·智能巡航·高温预警·高温监测
Leo.yuan1 小时前
数据分析师如何构建自己的底层逻辑?
大数据·数据仓库·人工智能·数据挖掘·数据分析
笑稀了的野生俊1 小时前
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32‘ not found
linux·人工智能·ubuntu·大模型·glibc·flash-attn
吕永强1 小时前
意识边界的算法战争—脑机接口技术重构人类认知的颠覆性挑战
人工智能·科普
二二孚日1 小时前
自用华为ICT云赛道AI第三章知识点-昇腾芯片硬件架构,昇腾芯片软件架构
人工智能·华为
潇-xiao2 小时前
进程状态 + 进程优先级切换调度-进程概念(5)
linux·笔记
蹦蹦跳跳真可爱5892 小时前
Python----OpenCV(几何变换--图像平移、图像旋转、放射变换、图像缩放、透视变换)
开发语言·人工智能·python·opencv·计算机视觉