【生成式AI时代下的机器学习(2025)】第十一讲:今天你想为 Foundation Model 装备哪些 Task Vector?浅谈神奇的 Model Merging 技术

神奇的模型融合技术与应用探索

媒体详情

上传日期
2025-06-09 21:41
来源
https://www.youtube.com/watch?v=jFUwoCkdqAo
处理状态
已完成
转录状态
已完成
Latest LLM Model
gemini-2.5-pro-preview-06-05

转录

下载为TXT
speaker 1: 好,各位同学大家好啊,我们来上课吧。 那今天要跟大家分享一个很神奇的技术,叫做model mer那. 这个部分呢我不会讲太长,大概30分钟内可以结束。 我这段讲完之后呢,助教会来讲model mer的作业啊。 就是因为作业久呢就是有关model mer的作业,所以我们今天呢一定要讲一下model mer的内容。 好,那今天就是跟大家分享一个很神奇的技术,叫做model merging。 这个技术怎么用呢? 好想象这个情景,今天有很多foundation model,比如说拉马系列,那大家呢会用这些foundation model来做不同的事情。 你会对这些foundation model用不同的资料做post training,你就得到有不同专长的拉马模型。 啊,比如说你拿你自己的资料去对foundation model做post training,你就得到另外一个模型。 那这个模型呢我把拉玛穿三个盔甲,代表它跟原来的拉玛有不一样的能力。 那隔壁小明呢收集了另外的资料,他也fine了另外一个拉玛版本的模型。 那这个模型呢有一只箭,所以后来大家就叫他小明剑魔。 好,那就看说隔壁小明呢他练的模型有一支箭你就觉得很羡慕。 你想说我也要练一支有剑的拉马出来,那这个剑可以代表任何能力啦。 比如说他很会说某种语言啊,或者是他很会写very lo就, 代表某个特别的能力。 没想说我想帮我的拉玛也加同样的能力。 那怎么做呢? 一般的想法是你就跟小明要一下他的训练资料,然后呢再拿这些训练资料来微调你的模型,对你的模型再做一次后训练,那你的模型就有这支箭了啊。 但是我们在之前的课程中也学到说,post training很容易让模型遗忘过去已经有的技能。 所以这边你不只要跟小明借资料,你还要把你原来的资料拿来倒在一起一起做训练,这样才能避免模型忘记他有的技能。 好,这个步骤蛮麻烦的。 首先我们先不管小明愿不愿意借你资料,同样别人是不太愿意借你资料的。 就算他愿意借你资料,你也需要花额外的算力才有办法帮你的模型添加新的能力。 但这边跟大家讲一件神奇的事情,你可以在不用小明任何的训练资料,也不需要做任何额外训练的情况下,直接把小明的剑加到有盔甲的拉。 马上这件事情怎么做呢? 好,那我们这边定义一些符号。 假设原来的foundation model它的参数我们叫做谁的? 你自己的模型参数叫做C达A小明的模型参数叫做C达B那这个参数呢你可以想象成就是一个向量。 那假设是一个有70亿个参数的模型,那它的参数排起来就是一个维度,是70亿维的向量。 好,那我们现在呢把C达B直接减掉C达这两个都是向量可以相减。 那如果这是一个有70亿个参数的模型的话,那相减完以后,他们参数的差也是一个70亿维的向量。 好,把它们两个参数相减。 那这两个参数相减代表什么意思呢? 就代表了那一支键,代表了这个模型相对于foundation model所额外练出来的能力。 我们把这个额外的能力,这个参数的差叫做task vtor。 接下来你再把这个参数的差直接加到的A上面就结束了。 就这样我说完了这招就是model mergin。 好,那如果说讲到这边你还没有真的听得很懂的话,那我们就举更具体的例子告诉你实际上是怎么做的。 实际上就是假设foundation model里面有某一个神经元,但foundation model里面有成千上万的神经元,有某一个神经元,这个神经元呢接进来的三只街角参数分别是一二跟负一。 你自己拿你的资料翻译出你自己的模型,从个神经元它的参数是一二跟-2。 小明的拉玛他的神经元的参数是32-1。 然后接下来你要做的事情就是看看这个小明的模型跟原来模型的差异哦,原来是最左边这只街角的参数增加了2,把这个增加的量直接加到你自己的模型上,你自己的模型参数这个神经元就变成32-2就结束了。 你的模型就同时保有原来的能力,也拥有小明剑模的那一支剑呢,就是这么神奇。 那这个想法呢听起来非常的直观,尤其是假设你对于训练模型没有什么概念的话,没有什么经验的话,你可能觉得说嗯听起来这样应该会有效。 但我知道大家都是机器学习的专家,你一听会觉得说这怎么可能会沃呢? 这个参数是这样可以加加减减的东西吗? 把两个模型的参数相减以后,再接到另外一个模型上,就好像把一个人的手砍下来,再直接插到另外一个人的身上,你期待他可以work。 怎么可能呢? 之前也有一个人试过这件事情,就是街之王葛瑞克。 如果你有玩过艾尔登法环的话,就有一个王呢叫街之王葛瑞克。 他去砍了很多人的手接在他身上,他以为会让自己变得很强,但其实他是整个游戏里面最弱的boss,所以接很多人的手其实没什么用的。 但是我告诉你,这个test vtor神经网络的参数岂是如此不变之物,他就是可以加加减减,就是这么神奇。 这件事情早在22年的年底,早在史前时代人们就已经发现类神经网络的参数是可以加加减减的,这些test vtor是可以加加减减的。 好,那这种把test加加减减的这种事情要怎么运用呢? 我们接下来就举三种应用的方式。 好,第一种方式呢是你可以把test vector相加啊,有一个原来的foundation model叫做se那. 你拿某一些资料练出了一个的A有人拿另外一些资料练出了赛B那你可以计算赛达A跟的之间的参数差,我们叫做A计算赛达B跟赛达之间的参数差,我们叫做B你可以直接把掏B这个参数差,它就是一个向量,直接加到C达A上。 C达A也是一个向量,你把掏B直接加到C达A上,得到一个新的模型,这个新的模型就既有A的能力也有B的能力了。 或者是你可以想成说现在赛达A它的test vtor叫做A C达B它test vtor叫B你可以把两个test的直接合并,把原来的model直接加上A跟B你就拥有一个同时拥有A跟B这两个模型能力的新模型了。 好,但这边要注意的事情是,这一招能够使用它的前提是C达A跟C达B是从同一个foundation model fine出来的哦,所以C达A跟C达B他们不止内的架构要一样,内架构一样,你才能够直接把它加起来嘛。 不止内架构要一样,C达A跟C达B就是从某一个同一个foundation model出来的,这招才能够使用。 那在现在这个时代,有很多知名的大家都会使用的foundation model,比如说拉等等。 所以这个model mer是一个training时代的做法。 在过去大家没有共同的foundation model,这个时候你没有什么好mer的. 但在今天这个时代,大家有共同的foundation model,这个时候你就有机会从同个foundation model find training出来的不同的模型,他的能力直接加在一起。 那有时候啊我们把不同的test factor加在一起的时候,你可能可以在前面再乘三个wait会得到更好的结果。 你可以逃A前面乘上个阿尔法,逃B前面乘上个贝塔,调一下阿尔法跟贝塔可以得到更好的结果。 那通常阿尔法跟贝塔,你可以直接拿一个de来决定他们的数值。 但有有一些人在研究说怎么自动决定阿尔法跟贝塔,那我就放了一篇相关的论文在下面给大家参考。 那这边呢举一个实际的例子,那这个是呃那个黄世成同学跟李品哲同学做的一个研究成果。 他们做的事情是这样子的。 好,那过去呢他有试出拉马two的base模型,然后呢拉马two的chat模型,base跟chat中间的差异就是有没有做align那, 他们想要打造一个繁体中文的模型,然后他们就把中文的资料拿去fine to to,然后发现说fine完之后模型会大幅降低原来Ali的能力。 那么们在之前的课程中也已经跟大家分享过这种getting的现象。 那怎么解这个问题呢? 当我们今天知道说self replay可能是一个蛮有效的方式,不过呢他们采取了另外一个截然不同的想法。 他们的做法是这样的,我们希望有一个模型既能讲中文,又有原来拉妈two的alignment。 怎么做呢? 能不能直接使用test vector相加的概念,我们把拉ma two base的模型再去教它中文,那这个中文就相当于是这支箭拉额外获得的技能。 接下来呢你就有一个赛达A呃,它指的是它所示出来的有alignment的拉马two的模型。 每个赛达B是一个能讲中文的base模型,这两个模型都不是你要的,一个不会讲中文,虽然它有safety align一个会讲中文,但没有safety align但. 你只要把test tor计算出来,再直接加到同一个foundation model上,你就突然有一个既有safety align又能够用中文回答你问题的模型了,真的能这样做吗? 啊,有关这个实验的细节啊,你可以看一下右下角我引用的这篇论文。 那这张图呢是他们论文里面的一个例子。 就如果你问原版的拉玛,这个我带盔甲的是原版的拉玛to chat,还有safety aliment的能力。 所以你跟他说我要怎么获得一个新的密码呢? 这个拉玛to chat会用英文回答你说我不能帮你这么做。 但如果你用中文的资料去find you lama to chat,他就失去了防御的能力,他会教你怎么盗取银行系统的密码。 但如果你是用test vector相加的方式,把一个代表中文能力的test vtor跟代表align能力的test vtor直接加到同一个foundation model上,你就拥有一个模型,它回答你的时候是用中文回答你,而且它有safety align的能力。 你问他怎么取得一个银行密码系统的密码,他还告诉你说,我不能帮助你获取或变更银行的密码,因为这个是受到法律保护的,任何人都不能获取跟泄露。 而且这一招啊其实非常的泛用,不是只有在拉马two系列上可以work。 你把拉ma two base换成拉ma 3 base,拉ma two换成拉玛3 in这招也能发挥作用。 你这招也不是只有在拉玛上可以发挥作用,你把拉玛换成这招也可以发挥作用。 然后这招也不是只有在中文上可以发挥作用,我们实验成果发现在韩文上可以发挥作用。 好,有另外一个团队也验证说这招可以在日文上发挥作用,所以这是一个蛮通用的做法。 然这边再跟大家分享另外一个把模型mer起来的尝试啊。 这边是假设我们的C达A是一个reward model,你在做reinforcement learning的时候,常常会需要一个reward model。 他的工作就是看一个模型的答案,然后他回答说这个模型的答案是好的还是不好的。 那通常这种reward model呢你会需要额外的训练。 如果你只评一个本来的language model,它不一定能够好好的评价其他模型的输出是不是正确的。 那C达B呢是一个擅长写城市的模型,怎么现在有一个擅长评价的模型,但他不会写城市,有一个擅长写城市的模型不会评价,如果你今天需要一个reward model,去看其他模型的城市写的好不好,那怎么办呢? 直接把reward model跟一个会写城市的模型直接merge起来,你就有一个既能评价又能够写城市的模型,他就可以去评价其他模型的城市写的怎么样。 或者是另外一个例子,这这两篇论文呢是这个林子翰同学跟李承安同学做的啊。 另外一个例子,我们有一个reward model,这个reward model是一个文字的reward model,他只能够读文字,他只能评价文字回复的好坏,他没办法看图,那怎么办呢? 假设你有另外一个model set b它是一个可以看图的模型,它是有示例的。 所以这边帮他带一个眼镜,它可以输入一张图片,输出一个回应。 你直接把这两个模型做model,你就有一个可以看图,看其他model,根据图片的response在进行评价的reward model了。 帮你可以在完全没有训练的情况下,帮本来没有势力的reward model直接加上一双眼睛。 好,刚才举的是相加的例子,那你也可以做相减,什么意思呢? 假设我们现在知道说呢C达经过训练以后会变成C达B他们中间参数的差异是B假设你把C达加上B它会变成C达B让模型具备某种能力。 那如果反过来呢把打减掉B那C是不就失去了任务B的能力呢? 你可以指道或接下来你就可以把这个负的B呢加到的A上,那你就可以让一个模型失去失去B这个任务的能力。 那什么时候我们会希望模型失去某些能力呢? 比如说他看到不该看的东西,比如说某本书,某个小说是有版权的,你的模型照理说不应该看过那本书,但他就是不小心看到了,那怎么办? 也许你可以用这个方法把模型已经知道的东西从他脑中抹去。 那这个方法呢有一个专有名词叫做machine unlearning这门课程。 Machine learning嘛machine learning的相反就是unlearning,让模型忘记他学过的东西。 这边引用的呢是李品泽同学的实验结果,那以下的例子呢来自于他要自己写的block g他这边想要做的事情是这样子的,他先把拉玛two base给他一些肮脏的资料,那就我所知可能是来自于pp某些版的资料,那里面有很多的脏话啊。 他把这些资料呢拿去find lama to base,就得到一个很会说脏话的模型。 接下来呢你就你知道怎么样很会说脏话以后,你就可以反过来知道怎么样没办法说脏话。 所以您知道脏话的方向就是这个方向,你只要把这个模型呢往另外相反的方向移动,它就说不出脏话来了啊。 接下来呢他就把一个台德的模型,是一个会讲中文的模型,他也是从拉玛翻译过来的。 他把这个模型剪掉,这个会让模型不能说脏话的向量,他把这个模型往不能说脏话的方向移动,你就可以得到一个圣人模型。 他对于脏话任何敏感的不该讲的字眼都是一无所知的。 好,这边就举一个实际的例子。 原来这个台德的模型呢,你问他说什么是黑鬼,他知道黑鬼是什么意思,然后他告诉你说,但他本身其实也是有一定的防御能力,他就告诉你说黑鬼是一个种族歧视的词汇,我们不可以说这样子的词汇。 好,但是如果你问这个圣人模型什么是黑鬼,你就发现他根本不知道黑鬼是什么,他就开始乱说话。 他说黑鬼哦是日本动漫里面常见的一种角色形象,他举了几个例子,第一个例子是火影忍者中呢有黑鬼是一个神秘的组织。 不要这不是小吗? 然后圣剑传说二玛,我记得不是圣剑传说2,所以这个是一个啊黑鬼呢是一种神秘生物,还说鬼灭之刃里面呢黑鬼是鬼的变种啊,所以他就开始瞎掰黑鬼是什么,而且他根本不知道黑鬼是什么。 所以你可以用减去的方式让模型失去某种能力。 好,那第三个test vector的应用呢是你可以用类比的方式,在完全没有某项任务资料的情况下,让模型具备有新的能力。 什么意思呢? 假设test a之于test b等于test c之于test c你现在有test A C这三个任务的资料,你可以把你的model经过训练让它具备test a的能力,经过训练具备test b的能力,经过训练具备test c的能力。 但如果你知道A至于B就等于C至于D那你其实可以在没有D的资料的情况下直接创造出来,让模型具有test d的能力。 你可以在没有test d资料情况下无中生有,让模型具有test d的能力。 怎么做呢? 我们已经知道A至于B等于C至于D那我们就来看看C达A跟C达B的差是什么。 C达A跟C达B的差哦就是B减掉A然后接下来呢你再把它们的差直接加到C C上。 因为我们知道说A至于B就是C至于D所以把A跟B这差距直接加到C上,你就得到D的参数了,D这个任务的参数了。 所以你只要把掏C加上掏B减掉掏A你就可以得到一组参数,这组参数可以执行任务D老师以你就可以在没有任务第资料的情况下,让模型能做任务第。 好,这边如果你听的很抽象的话,我来举一个实际的例子。 现在设想一个情境是我们要打造语音辨识的系统。 那语音辨识大家都不陌生,输入语音输出文字。 那现在有很多很好的语辨识系统,比如说whisper。 但是这些现成的语音辨识系统往往在特定领域,比如说特定的语言或者是呃呃比很多有很多专有名词的情况下,它是没有办法正确辨识的。 所以很多时候我们需要为特定的任务去打造语音辨识系统。 举来说大家都有在用N N上面用的语音辨识系统,并不是一个现成的语音辨识系统。 是我们实验室同学参加了这个教花中心的计划,帮他们打造的客制化的语音辨识系统。 所以它是一个客制化的语音辨识系统,在台大的课程上是比你可以用到的商用系统都还要强的啊,所以很多时候你需要客制化系统。 那我们今天假设一个情境是我们有一个语音辨识的系统,那么拿它来辨识某一个非常专业领域的会议里面有很多的专有名词。 比如说法律金融的会议里面有很多一般人听不懂的专有名词,那怎么办呢? 我们并没有那个会议的语音资料,但是假设你有那个会议相关的文件,你有它的会议记录,你有相关的教科书等等。 那假设我们有文字资料的话,我们也许可以直接叫一个语音合成系统。 今天语音合成系统都可以做的蛮成功的,拿一个语音合成系统把这些文字念出来,产生声音讯号。 我们有文字,有声音讯号,你有成对的资料,你就可以对原来的语音辨识系统做post training,把它微调,产生一个新的语音辨识系统。 它是能够在这个专业领域的会议上得到好的结果的那这一招其实一点都不稀奇。 我在右上角呢引用了非常多的文献,就告诉你说这是一个非常常见的手法。 但这一招会有什么样的问题呢? 一个显而易见的问题是现在这些声音讯号它不是真正的声音讯号,它是语音合成系统产生出来的声音讯号。 所以它跟真正的讯号是有一定程度差异的那我们有没有办法在没有真正声音讯号的情况下,想办法让语音辨识系统就好像有看过真正的声音讯号呢? 所以这边实验的setting是这样子的,你有新的你的目标的那个抖面相关的文字,你可以用语音合成这系统,把这些特殊抖的文字把它念出来。 但这些声音讯号不是真正的讯号,你没有深正的声音讯号。 但是你可能有其他抖漫的资料,在这些其他抖漫他们可能是比较容易找到的比较通用的资料。 你有人类真正的声音讯号,你也有合成的讯号。 合成的讯号你永远可以呼叫一个语音合成的系号,把合成的讯号合出来。 所以你看我们现在就制造出了ABCD4个task,a之于B等于C之于D所以你就算没有在新的抖面上,在特定抖面上的真实的语音讯号,透过从这三个任务上训练出来的模型,你可以组合出一个新的模型,它可以用在特定抖面上,而且他的行为就好像是在真实语音上训练过一样。 或者是我们用图示化的方式,你有一个foundation model,那你拿general的domain加上sythesize的资料去训练出一个模型。 你拿general的domain加真实的资料去训练出一个模型。 你拿他新的目标的抖面,你拿你的这个呃特定的抖ain加上sythesize的资料去训练出一个模型。 接下来你把这两个模型的参数相减,把它们差加到这里,你就等于是得到了一个模型。 这个模型好像是训练在特定抖面真实语音的资料上。 那我们把这个红色的向量啊叫做think real的vector。 因为他把一个训练在这个合成资料上的模型做一些校正,做一些魔改,就变成好像训练在真实的资料上。 这招有没有办法发挥作用呢? 它还真的能发挥作用啊,这是我们实验室苏宣同学的研究成果啊,他尝试了各个不同的领域,这边每一个区域代表某一个特定的领域,那这边所秀的数值呢是whatever,所以这个数值呢是越低越好。 那么们的foundation model,就大家都很熟悉的OpenAI的whisper。 我们T的model是用一个叫做bark的T T model。 黄色的坝呢是直接训练在合成语料上的结果,橙色的坝呢是把训练在合成的声音讯号上的模型在做这个校正,在做一个微调。 那你会发现说微调过后,几乎在所有的抖面上微调过后,都有比较低的语音辨识的错误率。 而且这一招其实蛮通用的。 我们试了不同大小的whisper都有发挥作用。 我们也把whisper换成其他的foundation model,比如说换成web former也有发挥作用。 我们试了不同的tts model,把bug换成speech t five,这个tts model也有发挥作用,所以你确实可以组合一些任务的test vtor,让模型学会新的技能。 好,那其实啊model gin还有更多的应用,比如说它可以防止forgetting这件事情发生。 那这个部分比较复杂,也许我今天就先不细讲。 大家可以参考繁华同学写的论文,这是做在文字上的那后来林子泉同学把这个技术也用在语音的foundation model上,也能发挥作用。 呃,前面讲了很多model mergin的神奇例子,但我这边其实要提醒你,model mergin并不一定总是会成功的。 虽然前面有很多成功的例子,但是你其实可以找到更多失败的例子。 事实上在我们的作业里面会让大家尝试model mer那. 如果你没有做什么特别的事情,单纯把两个model的test直接加起来的话,其实你也不会得到特别好的结果的。 那为什么model mergin不一定总是会成功呢? 其实你应该想model mergin为什么会成功? 它不成功其实反而是比较合理的。 我们先来想一下什么叫做merging是成功的。 而假设呢我们有一个模型say达A哦,就原来的foundation model加上淘A它input X A output Y A啊,那我们呢有另外的model的B它就原来的foundation model加上b input X B还要output Y B我们现在所谓的成功指的是如果我们把掏A掏B同时加到foundation model参数Z上,那你输入X A的时候要输出ya就跟A模型的能力是一样的。 你输入X B的时候要输出yb就跟B模型的能力是一样的。 所以merge后的model保有原来模型的能力。 那我们今天讨论的是一个比较简单的case,我们还没有讨论说有没有可能组合出新的任务等等。 好,我们来看看在这个case有没有可能会不成功呢? 其实太容易了,你完全可以找出一个反例,emerging之后就是失败的。 假设我们有一个非常简单的类神经网络,它就只有一个神经元输入呢有三个数值,三个数值乘上类神经网路的权重,然后再通过就得到你最后的输出。 那foundation model它的三个参数分别都是0。 好,你把这个模型训练在test a上,它得到参数是110。 然后如果输入呢是21跟0的话,这时候输出是3。 那如果我们劝在任务B上,假设现在训练完之后得到参数是011,输入是023的话,输出是5。 好,那我们现在呢把这两个model merge在一起,你得到一个新的模型,它的参数是12跟1。 如果你输入给C达A的输入也就是210,这时候输出呢就变成4。 如果你输入给C达B的输入是023,这时候输出从五变成7,所以你可以轻易找到返例。 告诉大家说model mer不一定能够成功。 好,但是什么样的状况model merging会成功呢? 我们这边来举一个成功的例子。 假设现在在任务A上,我们只会动到最左边这个参数,它从0到1变成一,这时候你输入210啊,输出是2。 假设在任务B上你只会动到最右边这个参数,这时候输入023,输出是3。 这个时候你把两个model merge起来,它的参数是101,那你输入210,输入给C塔A的,输入210的时候输出仍然是2。 输入给赛塔B的,输入023的时候,输出仍然是3。 在这个例子里面,model merge就是成功的。 那也许这个例子可以给我们带来的一些启发是,如果今天两个任务改的参数非常的不一样,他们彼此之间没有互相干扰,那model mer有可能可以成功啊。 所以呢我们会希望不同任务尽量不要动到同的参数,每一个任务各自动到的参数也许越少越好。 那如果你开一些model mer的研究,那现在model mer比较advanced的技术确实都是往这个方向发展的。 你可以参考there跟ti这两篇论文,那这两篇都是model mer的新的技术。 那在there这边paper里面他就告诉你说啊,假设呢我们现在有一个模型是很擅长数学的,有另外一个模型是很擅长写程式的。 但是他们都跟原来的foundation model有比较大的差距,他们都改变了原来foundation model很多的参数。 所把他们mer在一起可能会彼此互相干扰,还用一个问号代表彼此互相干扰。 但他说他们有一个技术叫做dear,dear这个技术就是希望在每一个任务上都只动到一点点的参数哦,所以在数学上用了dear之后可以只动这两个参数。 然后在城市上用了dear之后可以只动到这三个参数,这两组参数,这两组被动到的参数没有交集,加起来以后也许merging是比较容易成功的哦。 所以现在研究的趋势是尽量让每一个任务可以动到参数比较少,这样可以让mer比较容易成功。 第一方面我们可能也会想说,那既然如果两个任务他们动到的参数比较没有重叠,mer就比较容易成功,那是不是比较大的模型merging就比较容易成功呢? 比较大的模型,每一个ne可以有非常专精的呃功能,可以各司其职,也许就比较不会互相干扰。 而实验上也确实是如此。 你可以看这篇去年10月的论文,他列举了几个影响model emer结果的因素。 那其中一个很重要的因素就是模型的大小啊,他们尝试了不同大小模型,1B8B24B到64B这边不同颜色就代表不同大小的模型,那纵轴的值越高就代表mer以后的效果越好。 他们试了merge两个模型,他们也甚至试了merge 8个模型。 那这边average there titen test arimetic的指的是不同version的方法。 那反发现说在多数情况下,不同mer的方法在不同的mer方法中,多数情况下都是越大的模型merge以后效果越好。 所以确实模型越大merge结果就越好。 好,那model mer呢其实还是一个很新的领域啊,那所以其实我们今天呢不会讲太多,那大家可以在作业里面体验一下model mer的结果。 那model mer是一个很新的领域,还有很多东西需要研究。 今天其实没有办法跟你百分之百保证merge以后一定会成功。 未来怎么样mer才够保证会成功,是一个可以研究的方向。 我想象中假设model mer这个技术发展成熟,merge一定会成功的话,那其实就开拓了新的视野。 你可以想象说未来在打造模型的时候,每子拉嘛要问的问题就是他要装备什么样的test vector。 你可能可以在一个test vtor的商店里面找到代表各式各样不同任务的test tor。 你可以把这些不同的test的装备到你的foundation model上,你就可以打造有不同能力的模型,就可以在网就跟你在玩一个网游一样,你可以在商店里面只要买到各式各样的防具,还有买到各式各样的攻击的武器,那就可以强化自己的模型。 呃,你不需要做任何的训练model mer是不需要做训练的,你只需要做参数的加减。 所以他需要的运算资源是非常少的。 而假设test vtor商店这个概念成功的话,那未来小团队呢就可以专注于打造单一任务的test factor。 今天要打造一个通用的模型太困难了,你可能很难收集到general的资料去打造一个general的模型。 但是大家可以专注打造出test,然后挂到商店上,让其他的模型来使用这些test。 未来大家还可以贩售跟交换这些。 也许A公司有个资料,B公司有个资料,那通常资料要互换是比较困难的。 因为资料的机敏性通常比较高,大家通常比较不喜欢把自己的用什么样的资料训练告诉别人。 你看现在的这些开源模型,他们都不告诉你他的训练资料是用什么。 因为往往一讲他们就会被告都会有版权问题。 所以大家通常愿意试出模型参数,但是不愿意告诉你他用什么样的资料。 那假设test的这种概念成功的话,未来你也不需要别人的资料,大家不需要互换资料,只需要互换test的,你就可以获得其他模型的能力。 所以假设test这样的技术未来发展成熟,他可以给我们带来新的想象。

最新摘要 (详细摘要)

生成于 2025-06-09 21:44

概览/核心摘要 (Executive Summary)

本次演讲详细介绍了一种名为模型合并 (Model Merging) 的前沿技术,该技术允许在不进行额外训练和无需访问原始训练数据的情况下,通过简单的向量加减法来组合、移除或迁移大型语言模型(特别是Foundation Model)的能力。其核心思想是计算一个模型相对于其基础模型(Foundation Model)的参数变化,这个变化量被称为“任务向量” (Task Vector),它代表了模型习得的特定技能。

讲座阐述了任务向量的三大主要应用:
1. 技能相加:将代表不同能力的任务向量(如语言能力与安全对齐能力)相加,创造出兼具多种特长的新模型。
2. 技能相减:通过减去某个任务向量,实现“机器忘却”(Machine Unlearning),让模型遗忘特定知识(如脏话或有版权内容)。
3. 技能类比:利用向量类比(A-B ≈ C-D)的逻辑,在没有特定任务数据的情况下,通过迁移其他任务的向量关系,无中生有地为模型赋予新能力,例如将“合成语音”模型校正为具有“真实语音”表现的模型。

尽管该技术展现了巨大潜力,但讲者强调其并非总是成功。合并的成败关键在于不同任务所修改的参数是否重叠。当任务修改的参数集重叠度低时,合并效果更好。因此,当前的研究趋势是发展稀疏微调技术(如DARE、TIES),使每个任务只改变少量参数。此外,实验证明模型规模越大,合并成功率越高。未来,该技术若发展成熟,可能催生“任务向量商店”的生态,开发者可以像装备游戏道具一样为模型添加或交换能力,从而改变AI模型的开发与协作模式。


模型合并 (Model Merging) 的核心概念

模型合并是一种在生成式AI时代极具潜力的技术,它允许用户直接通过参数运算来修改和组合模型的能力,而无需进行耗费算力的再训练。

  • 基本情景:假设用户A有一个基于某个Foundation Model(如Llama)微调出的模型(具备能力A),而用户B基于同一个Foundation Model微调出了另一个模型(具备能力B)。用户A希望自己的模型也能拥有能力B。
  • 传统方法的困境
    • 需要获取用户B的训练数据,但这通常因隐私或商业原因难以实现。
    • 需要将新旧数据混合后重新训练,消耗大量计算资源。
    • 容易发生灾难性遗忘 (Catastrophic Forgetting),导致模型丧失原有能力。
  • 模型合并的解决方案
    1. 定义参数
      • Foundation Model的参数:θ
      • 用户A模型的参数:θ_A
      • 用户B模型的参数:θ_B
    2. 计算任务向量 (Task Vector):任务向量代表了模型通过微调获得的特定能力。能力B对应的任务向量为:
      > τ_B = θ_B - θ
    3. 合并模型:将任务向量 τ_B 直接加到用户A的模型参数上:
      > θ_new = θ_A + τ_B
    4. 结果:新模型 θ_new 将同时具备能力A和能力B。
  • 核心前提:此技术能够成功应用的前提是,所有参与合并的模型(如θ_A和θ_B)都必须是从同一个Foundation Model微调而来。这使得模型合并成为Foundation Model时代的特色技术。

讲者强调:“这个想法呢听起来非常的直观...但...这怎么可能会work呢?...但是我告诉你,这个test vtor神经网络的参数岂是如此不变之物,他就是可以加加减减,就是这么神奇。”


任务向量 (Task Vector) 的三大应用

通过对任务向量进行不同的算术运算,可以实现多样化的模型能力定制。

1. 技能相加:组合不同能力

通过将多个任务向量叠加到一个基础模型上,可以创造出集多种能力于一身的“超级模型”。

  • 公式θ_new = θ + α·τ_A + β·τ_B (其中α和β为可调节的权重)。
  • 成功案例
    • 中文能力 + 安全对齐 (Alignment)
      • 问题:直接用中文数据微调Llama 2 Chat模型,会导致其原有的安全对齐能力大幅下降。
      • 解决方案:分别计算出“中文能力”和“安全对齐能力”的任务向量,然后将它们同时加到Llama 2 Base模型上。
      • 成果:得到一个既能流利使用中文回答,又保持了安全对齐能力的新模型。此方法具有高度通用性,已在Llama 3、Mistral模型以及韩语、日语等场景得到验证。
    • 评估能力 + 专业能力
      • 将一个擅长评估(Reward Model)但不擅长写代码的模型,与一个擅长写代码的模型合并,可以得到一个能够有效评估代码质量的新Reward Model。
      • 将一个只能处理文本的Reward Model,与一个具备视觉能力的多模态模型合并,可以创造出一个能够评估图像相关回复的“带眼睛”的Reward Model。

2. 技能相减:实现“机器忘却” (Machine Unlearning)

如果加上一个任务向量能赋予模型某项技能,那么减去它就能让模型忘掉该技能。

  • 应用场景:从模型中移除不当内容(如脏话、偏见)或受版权保护的知识。
  • 成功案例(圣人模型)
    • 目标:让一个中文模型(台德模型)忘掉“脏话”。
    • 流程
      1. 先用包含大量脏话的“肮脏资料”微调Llama 2 Base,得到一个“很会说脏话的模型”。
      2. 计算出代表“说脏话”能力的任务向量 τ_dirty
      3. 从台德模型的参数中减去该向量:θ_saint = θ_taide - τ_dirty
    • 成果:得到的“圣人模型”对脏话完全无知。当被问及“黑鬼”是什么时,它完全无法理解其含义,并开始胡乱编造,称其为“日本动漫里面常见的一种角色形象”,如《火影忍者》中的神秘组织。

3. 技能类比:无中生有创造新能力

利用向量空间中的类比关系 A:B :: C:D,可以在缺少D任务数据的情况下,通过其他三个任务推导出D模型。

  • 公式τ_D ≈ τ_C + (τ_B - τ_A)
  • 成功案例(语音识别系统优化)
    • 目标:提升语音识别系统在某个专业领域(如法律、金融)的准确率,但缺乏该领域的真实语音数据。
    • 设置
      • 任务A:通用领域的合成语音数据训练的模型。
      • 任务B:通用领域的真实语音数据训练的模型。
      • 任务C:目标专业领域的合成语音数据训练的模型(合成数据可通过TTS技术生成)。
      • 任务D(目标):在目标专业领域的真实语音数据上训练的模型(我们没有真实数据)。
    • 流程
      1. 计算“真实化”向量:τ_real = τ_B - τ_A。该向量代表了从“合成语音”到“真实语音”的校正方向。
      2. 将此校正向量应用到任务C的模型上,得到近似的任务D模型。
    • 成果:经过校正后的模型,其表现“就好像是在真实语音上训练过一样”,在多个领域的语音识别错误率显著降低。

模型合并的挑战与成功关键

讲者明确指出,模型合并并非万能钥匙,实践中存在许多失败案例。

  • 失败的核心原因:参数干扰
    • 当两个不同的任务修改了模型中相同或高度重叠的参数时,它们的向量简单相加会导致互相干扰,无法同时保留各自的能力。
  • 成功的关键因素
    1. 参数修改的非重叠性:如果两个任务在微调时改变的是模型中完全不同的参数子集,那么合并就极有可能成功。
    2. 稀疏化微调 (Sparse Fine-tuning):为了减少参数重叠,当前的研究趋势是让每个任务只修改尽可能少的参数。相关技术包括 DARETIES
    3. 模型规模:实验数据显示,模型越大,合并的效果越好
      • 数据:一篇论文对比了1B、8B、24B到64B参数规模的模型,发现在多种合并方法下,模型规模越大,合并后的性能(纵轴数值)越高。这可能是因为大模型有更多神经元,可以实现更精细的“功能分区”,减少任务间的干扰。

重要提醒“model merging 并不一定总是会成功的。虽然前面有很多成功的例子,但是你其实可以找到更多失败的例子...如果你没有做什么特别的事情,单纯把两个model的test直接加起来的话,其实你也不会得到特别好的结果的。”


未来展望:任务向量商店与模块化AI

如果模型合并技术发展成熟,将可能彻底改变AI生态。

  • “任务向量商店” (Task Vector Store)
    • 未来,用户可以像在应用商店下载App或在网游中购买装备一样,从一个商店中选择代表各种能力的“任务向量”。
    • 用户可以为自己的Foundation Model“装备”上这些向量,快速定制出具备特定功能的模型,而无需任何训练,仅需极少的计算资源进行参数加减。
  • 对开发模式的影响
    • 专业化分工:小型团队或个人开发者可以专注于打造高质量的单一任务向量,而不是追求开发一个全能模型。
    • 促进协作与交易:公司之间可以交换或贩售任务向量,从而共享模型能力,而无需交换敏感的训练数据,解决了数据隐私和版权问题。

核心结论

模型合并是一项革命性的技术,它通过对“任务向量”的算术操作,为AI模型的定制化提供了前所未有的灵活性和效率。其核心在于利用同一Foundation Model的共享结构,实现能力的模块化组合、移除和迁移。尽管目前该技术仍面临参数干扰等挑战,但通过稀疏化微调和利用更大规模的模型等方法,其成功率和稳定性正在不断提升。未来,一个围绕任务向量交易和组合的全新AI生态系统有望形成,极大地降低AI应用的开发门槛。