不用从头训练,通过知识融合创建强大的统一模型

news2024/11/18 19:34:43

在自然语言处理(NLP)领域,大型语言模型(LLMs)的开发和训练是一个复杂且成本高昂的过程。数据需求是一个主要问题,因为训练这些模型需要大量的标注数据来保证其准确性和泛化能力;计算资源也是一个挑战,因为需要巨大的算力来处理和训练这些数据。最重要的是经济成本,这包括了硬件投资、电力消耗以及维护费用等。

除了成本问题,模型能力的局限性也是一个关键问题。不同的LLMs可能在特定的任务或领域上表现出色,但可能在其他任务上表现不佳。这种局限性意味着,尽管单个模型可能非常强大,但它们可能无法覆盖所有类型的语言理解和生成任务。另外,模型间的冗余能力也是一个问题,因为不同的模型可能在某些功能上存在重叠,这导致资源和努力的浪费。

为了克服这些挑战,研究者们开始探索知识融合这一概念。知识融合的目标是将多个预训练的LLMs的能力结合起来,形成一个统一的模型,这个模型能够继承所有源模型的优势,并在广泛的任务上表现出色。这种方法不仅可以减少重新训练模型的需求,还可以通过结合不同模型的专长来提高整体性能。

传统模型融合技术通常包括两种方式:

  1. 集成(Ensemble):这种方法通过直接聚合不同模型的输出来增强预测性能和鲁棒性。这可能涉及到加权平均或多数投票等技术,但它要求在推理时同时维护多个训练好的模型。
  2. 权重合并(Weight Merging):此方法通过参数级的算术操作直接合并几个神经网络,通常假设网络架构是统一的,并尝试在不同神经网络的权重之间建立映射。

FUSELLM方法则采用了一种新颖的视角:

  • 知识外化:FUSELLM通过使用源LLMs生成的概率分布来外化它们的集体知识和独特优势。
  • 轻量级持续训练:目标LLM通过这种训练,最小化其概率分布与源LLMs生成的概率分布之间的差异,从而获得提升。

与传统的训练方法相比,知识融合不寻求从头开始训练一个全新的模型,而是通过合并现有的预训练模型来创建一个功能更强大的统一模型。

在传统的训练方法中,每个LLM都是独立训练的,这意味着每个模型都是从零开始学习,需要大量的数据和计算资源。此外,由于每个模型的架构和训练数据可能不同,它们在不同任务上的表现也会有差异。例如,一个模型可能在文本分类任务上表现出色,而在机器翻译任务上则不尽如人意。这种独立训练的方法不仅效率低下,而且无法充分利用已有模型的知识。

知识融合的核心思想是将多个源LLMs的知识进行外化和转移,通过这种方式,目标模型可以继承并整合所有源模型的优势。这一过程的第一步是生成概率分布矩阵,这是通过使用源LLMs对输入文本进行预测来实现的。每个模型都会生成一个表示其对文本理解的概率分布矩阵,这些矩阵随后被用来指导目标模型的训练。

为了解决不同模型间词汇表不一致的问题,研究者们采用了一种新颖的令牌对齐策略,即最小编辑距离(MinED)方法。这种方法通过计算不同模型生成的令牌之间的编辑距离来实现对齐,从而允许不同模型的概率分布矩阵之间进行有效的映射。

接下来是概率分布的融合阶段,这是知识融合方法的关键创新之一。研究者们提出了两种融合函数:最小交叉熵(MinCE)和平均交叉熵(AvgCE)。MinCE方法选择交叉熵损失最小的分布矩阵作为融合结果,而AvgCE方法则根据每个模型的交叉熵损失对所有分布矩阵进行加权平均。这些融合函数的目的是在保留源模型独特优势的同时,整合它们的集体知识。

目标模型通过持续训练进行更新,这个过程涉及到最小化目标模型的概率分布与融合后的概率分布之间的差异。与传统的从头开始训练相比,这种轻量级的持续训练大大减少了所需的资源和时间。

以上是FUSELLM方法的完整过程在算法。FUSELLM算法可以应用于任何需要融合多个预训练LLMs的场景,特别是在资源有限或需要快速提升模型性能的情况下。通过这种方法,研究者和开发者可以有效地利用现有的模型资源,创造出更强大的语言处理能力。

研究者们精心挑选了适合的源LLMs,并对它们进行了融合。实验使用了MiniPile数据集,这是一个经过精简但内容丰富的语料库,它来源于The Pile,包含了约100万文档和1.8亿个token,覆盖了22个不同的领域。

在训练过程中,采用了Llama-2 7B模型作为目标模型,并使用AdamW优化器进行参数更新,同时采用了余弦学习率调度策略,以提高训练效率。

实验结果令人鼓舞,FUSELLM在多个基准测试中展现了其优越性。在Big-Bench Hard (BBH)、Common Sense (CS)和MultiPL-E (ME)等基准测试中,FUSELLM的性能在大多数任务上都超过了单独的源LLMs和基线模型。例如,在BBH任务中,FUSELLM的平均性能提升为5.16%,在CS任务中为1.25%,在ME任务中为6.36%。这些结果表明,FUSELLM能够有效地整合不同源LLMs的知识,并在广泛的任务上提升性能。

研究者们还深入分析了融合概率分布对训练过程的影响。通过比较FUSELLM和单独的Llama-2 CLM(持续语言模型)在不同规模训练数据上的表现,发现FUSELLM在训练过程中能够更快地达到更高的准确率,并且需要的训练token数量显著减少。这一发现证实了融合概率分布包含了比原始文本序列更易于学习的知识,从而加速了优化过程。

实验还包括了对FUSELLM实现过程中关键元素的分析。这包括了对源LLMs数量的影响、不同令牌对齐标准的效果以及不同融合函数的选择。研究者们发现,随着融合的源LLMs数量增加,FUSELLM的性能也随之提升。此外,最小编辑距离(MinED)方法在令牌对齐上优于精确匹配(EM)方法,而最小交叉熵(MinCE)作为融合函数在所有基准测试中均优于平均交叉熵(AvgCE)。

知识蒸馏是一种常见的技术,通过训练一个学生模型来模仿教师模型的行为。实验结果表明,尽管知识蒸馏能够提升模型性能,但FUSELLM通过结合三个7B模型的持续训练,相比于从单一13B模型中提取知识的蒸馏方法,取得了更显著的性能提升。

最后,研究者们还将FUSELLM与其他模型融合技术,如模型集成和权重合并,进行了比较。在模拟了多个具有相同基础模型结构但训练数据不同的LLMs的场景中,FUSELLM在所有测试域中都实现了最低的平均困惑度(perplexity),这表明其在整合多样化模型知识方面的有效性超过了传统的集成和合并方法。

FUSELLM方法成功地展示了如何通过知识融合提升LLMs的性能。该方法不仅减少了初始训练的成本,还允许目标模型继承并超越所有源模型的能力。这一发现为未来LLMs的研究和应用提供了新的方向。

论文地址:https://arxiv.org/pdf/2401.10491.pdf

git: https://github.com/fanqiwan/FuseLLM

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1683698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于基础的流量分析(1)

1.对于流量分析基本认识 1)简介:网络流量分析是指捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 2)在我们平时的考核和CTF比赛中,基本每次都有…

【Linux取经路】进程通信——共享内存

文章目录 一、直接原理1.1 共享内存的的申请1.2 共享内存的释放 二、代码演示2.1 shmget2.1.1 详谈key——ftok 2.2 创建共享内存样例代码2.3 获取共享内存——进一步封装2.4 共享内存挂接——shmat2.5 共享内存去关联——shmdt2.6 释放共享内存——shmctl2.7 开始通信2.7.1 pr…

安全攻防基础

一、安全是什么?就是三个基础原则 安全就是保护数据 1. 机密性 对未授权的主体不可见 开发人员不能拥有敏感数据的访问权限 密钥要复杂 显示器伤的数据被别有用心的人窥探 2. 完整性 没授权的人不可修改数据 3. 可用性 被授权的主体可读 二、如何解决安全问题…

Rust面试宝典第14题:旋转数组

题目 给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。要求如下: (1)尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 (2)使用时间复杂度为O(n)和空间…

微服务远程调用 RestTemplate

Spring给我们提供了一个RestTemplate的API,可以方便的实现Http请求的发送。 同步客户端执行HTTP请求,在底层HTTP客户端库(如JDK HttpURLConnection、Apache HttpComponents等)上公开一个简单的模板方法API。RestTemplate通过HTTP方法为常见场景提供了模…

VisualStudio2022的使用

Visual Studio 2022 的安装、卸载和使用方法详解 一、安装Visual Studio 2022 1. 下载Visual Studio 2022 要安装Visual Studio 2022,需要先下载安装程序。可以从微软的官方网站(Visual Studio下载页面)下载免费的社区版(Commun…

非平稳信号的傅里叶变换与短时傅里叶变换

一、仿真一个非平稳的时间序列。 N 10000; t 0:N-1; z1 4.2*sin(2*pi/20.*t5); z2 2.2*sin(2*pi/100.*(10.001*t).*t8); w1 randn(length(t),1); yz1z2w1; figure;plot(y,LineWidth,1.5);grid on; ylabel(Signal); xlabel(Time); 二、傅里叶变换(FFT&#xff…

网创教程:WordPress插件网创自动采集并发布

网创教程:WordPress插件网创自动采集并发布 使用插件注意事项: 如果遇到404错误,请先检查并调整网站的伪静态设置,这是最常见的问题。需要定制化服务,请随时联系我。 本次更新内容 我们进行了多项更新和优化&#x…

保护共享资源的方法(互斥锁)

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

一个基于vue、nuxt.js的网盘搜索项目,且持续开源和维护;目的实现人人都可以拥有自己的网盘搜索网站;

一个基于vue、nuxt.js的网盘搜索项目,且持续开源和维护;目的实现人人都可以拥有自己的网盘搜索网站; 🌐Github地址 https://github.com/unilei/aipan-netdisk-search 🌐在线体验 https://so.aicompasspro.com/

我在去哪儿薅到了5块钱火车票代金券,速薅

哈哈,亲爱的薅羊毛小伙伴们! 刚刚在去哪儿大佬那儿发现了一个超级薅羊毛福利!我只花了短短两分钟,就搞到了一张5块钱火车票代金券,简直是天上掉馅饼的节奏啊! 话不多说,薅羊毛的姿势给你们摆好…

202473读书笔记|《但愿呼我的名为旅人:松尾芭蕉俳句300》——围炉夜话,身顿心安,愿每个人都能在爱里自由驰骋

202473读书笔记|《但愿呼我的名为旅人:松尾芭蕉俳句300》——围炉夜话,身顿心安,愿每个人都能在爱里自由驰骋 😍😍🤩🤩 译者序正文二正文三正文四正文五正文六正文七 《但愿呼我的名为旅人&…

【动手学强化学习】第 6 章 Dyna-Q 算法知识点总结

【动手学强化学习】第 6 章 Dyna-Q 算法知识点总结 本章知识点基于模型的强化学习与无模型的强化学习方法简介无模型的强化学习方法基于模型的强化学习方法 强化学习算法的评价指标Dyna-Q算法Dyna-Q 算法的具体流程Dyna-Q 代码实践 本章知识点 基于模型的强化学习与无模型的强…

前端 CSS 经典:好看的标题动画

前言&#xff1a;好看的标题动画实现。 效果&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><…

syncthing文件夹同步与版本管理

1 前言 syncthing可以用来同步文件夹里的所有文件&#xff0c;并且有不错的版本管理&#xff0c;基本每次更改文件&#xff0c;20-40秒就被扫描到了&#xff0c;非常丝滑&#xff1b;这次以此来同步obsidian的插件和文件&#xff0c;达到多端同步&#xff1b; 我家里有一台台…

自定义横向思维导图,横向组织架构图,横向树图。可以自定义节点颜色,样式,还可以导出为图片

最近公司设计要求根据目录结构&#xff0c;横向展示。所以做了一个横向的思维导图&#xff0c;横向的树结构&#xff0c;横向的组织架构图&#xff0c;可以自定义节点颜色&#xff0c;样式&#xff0c;还可以导出为图片 话不多说&#xff0c;直接上图片&#xff0c;这个就是一…

Django自定义命令

Django自定义命令 我们知道&#xff0c;Django内部内置了很多命令&#xff0c;例如 python manage.py runserver python manage.py makemigrations python manage.py migrate我们可以在python控制台中查看所有命令 我们也可以自定义命令&#xff0c;让python manage.py执行…

如何使用甘特图来做任务管理?zz-plan甘特图的实践指南

在项目管理和任务调度中&#xff0c;甘特图是一种非常实用的工具&#xff0c;它可以帮助团队成员清晰地规划、执行和跟踪项目进度。然而&#xff0c;如何有效利用甘特图进行任务管理&#xff0c;对于许多团队来说仍然是一个挑战。本文将结合 zz-plan https://zz-plan.com/ 甘特…

彻底搞懂JavaScript原型和原型链

基于原型编程 在面向对象的编程语言中&#xff0c;类和对象的关系是铸模和铸件的关系&#xff0c;对象总是从类创建而来&#xff0c;比如Java中&#xff0c;必须先创建类再基于类实例化对象。 而在基于原型编程的思想中&#xff0c;类并不是必须的&#xff0c;对象都是通过克隆…

Unity数据持久化2——XML

简介&#xff1a; 基础知识 XML文件格式 XML基本语法 XML属性 练习&#xff1a; C#读取存储XML XML文件存放位置 读取XML文件 练习&#xff1a; 存储修改XML文件 练习&#xff1a; 总结 实践小项目 必备知识点 必备知识点——C#中XML序列化 必备知识点——C#中XML反序列化 必备…