LLM-Blender:大语言模型也可以进行集成学习

最近在看arxiv的时候发现了一个有意思的框架:LLM-Blender,它可以使用Ensemble 的方法来对大语言模型进行集成。

官方介绍如下:LLM-Blender是一个集成框架,可以通过利用多个开源大型语言模型(llm)的不同优势来获得始终如一的卓越性能。

LLM集成

我们都知道集成学习是一种机器学习方法,旨在提高预测模型的性能和鲁棒性。它通过将多个不同的学习器(如决策树、神经网络等)结合成一个整体,来取得比单个学习器更好的预测效果。比如最常见的Kaggle比赛中就广泛的使用了这种方法。

那么大语言模型有必要进行集成吗

论文给出了以下观点:

由于数据、架构和超参数的变化,LLM表现出不同的优势和劣势,使它们互补。并且目前不存在一个开源LLM在所有例子中都占主导地位。可以集成LLM的输出(基于输入、任务和领域),以便在不同的示例中提供一致的卓越性能。结合他们独特的贡献;可以减轻个别LLM的偏差、误差和不确定性,从而使产出与人类偏好保持一致。

LLM-Blender

所以论文就给出了一个框架LLM-Blender

LLM-Blender有两个模块:PairRanker和GenFuser。PairRanker比较多个模型的输出,给出排名最高的输出。然后GenFuser将前几个排名靠前的输出融合在一起,生成最终输出。

1、PairRanker是如何工作的

PairRanker模块用于有效地识别候选模型输出之间的细微差异,并根据它们的质量对它们进行排名。收集N个模型的输出,并以总共N(N-1)/2种方式进行配对(从总共N个项目中选择2个项目的组合次数)。然后根据以下条件对结果进行评估:给定输入提示,哪个候选人的输出更好。

在推理过程中,计算一个包含表示两两比较结果的对数的矩阵。给定该矩阵确定并选择排名前k的输出用于GenFuser模块。

2、GenFuser是如何工作的

GenFuser模块使用PairRanker模块排名靠前的输出,为最终用户生成潜在的改进输出。该模块融合了排名前n位的结果中的前K位,并产生了改进的输出,利用他们的优势和减轻他们的弱点。

基准测试

论文介绍了一个名为mixdirective的新数据集,用于对llm在指令跟随任务中的集成模型进行基准测试。该数据集拥有来自Alpaca-GPT4、Dolly-15K、GPT4-ALL-LAION和ShareGPT的大规模指令示例集。有10万例用于训练,5万例用于验证,5万例用于测试。

使用N = 11个流行的开源LLM进行测试。候选的输出使用ChatGPT对所有候选对进行评估。对于每一对,ChatGPT被要求判断那个是更好的。

可以看到各个LLM有不同的优势和劣势。顶尖的LLM在测试中并不总是最优的。PairRanker优于其他LLM。LLM-Blender组合比其他任何单个模型更好。

限制

最主要的还是效率,因为对PairRanker中top-K输出进行排序的过程需要调用模型O(n²)次才能获得最佳性能。解决这个问题的一种方法是使用多轮气泡排序方法来减少所需的推断数量。另一种提高时间效率的方法是并行执行PairRanker的推理,因为它们是独立的,也就是多个模型同时推理。

目前论文使用的是在ChatGPT帮助下的自动评估。虽然自动评估是一个很好的选择,但人工评价可以提供更可靠、更全面的评价结果。

这时一个很有意思的项目,有兴趣的可以看看他的论文还有源代码:

https://avoid.overfit.cn/post/29adfb00f1b44adabe43f6a5cd47c53b

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

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

相关文章

TCP如何保证服务的可靠性

TCP如何保证服务的可靠性 确认应答超时重传流量控制滑动窗口机制概述发送窗口和接收窗口的工作原理几种滑动窗口协议1比特滑动窗口协议(停等协议)后退n协议选择重传协议 采用滑动窗口的问题(死锁可能,糊涂窗口综合征)死…

ESP32 官方AT固件编译(从零开始环境搭建到编译完成全过程)

1、下载VMware免费版 https://download3.vmware.com/software/WKST-PLAYER-1702/VMware-player-full-17.0.2-21581411.exe 2、下载Ubuntu (ubuntu-22.04.2-desktop-amd64.iso)** https://releases.ubuntu.com/jammy/ubuntu-22.04.2-desktop-amd64.iso…

IDE/mingw下动态库(.dll和.a文件)的生成和部署使用(对比MSVC下.dll和.lib)

文章目录 概述问题的产生基于mingw的DLL动态库基于mingw的EXE可执行程序Makefile文件中使用Qt库的\*.a文件mingw下的*.a 文件 和 *.dll 到底谁起作用小插曲 mingw 生成的 \*.a文件到底是什么为啥mingw的dll可用以编译链接过程转换为lib引导文件 概述 本文介绍了 QtCreator mi…

AI编程常用工具 Jupyter Notebook

点击上方蓝色字体,选择“设为星标” 回复”云原生“获取基础架构实践 深度学习编程常用工具 我们先来看 4 个常用的编程工具:Sublime Text、Vim、Jupyter。虽然我介绍的是 Jupyter,但并不是要求你必须使用它,你也可以根据自己的喜…

PostgreSQL PG16 逻辑复制在STANDBY 上工作 (译)

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

Mybatis-plus从入门到精通

1、什么是MyBatis-Plus MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,在MyBatis的基础上对其进行扩展,用于简化MyBatis操作,提高开发效率。它继承了MyBatis原生的所有特性,并且添加了一些额外的功能&…

前端随笔:HTML/CSS/JavaScript和Vue

前端随笔 1:HTML、JavaScript和Vue 最近因为工作需要,需要接触一些前端的东西。之前虽然大体上了解过HTML、CSS和JavaScript,也知道HTML定义了内容、CSS定义了样式、JavaScript定义了行为,但是却没有详细的学习过前端三件套的细节…

微服务入门---SpringCloud(一)

微服务入门---SpringCloud(一) 1.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结 2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.导入Sql语句2.2.2.导入demo工程 2.3.实现远程调用案例2.3.1.案例需求…

CoTracker跟踪器 - CoTracker: It is Better to Track Together

论文地址:https://arxiv.org/pdf/2307.07635v1.pdf 官方地址:https://co-tracker.github.io/ github地址:https://github.com/facebookresearch/co-tracker/tree/main 引言 在计算机视觉领域,光流估计是历史最久远的问题之一&a…

利用VBA制作一个转盘游戏之五:最终的游戏过程

【分享成果,随喜正能量】真正厉害的人,从来不说难听的话,因为人心不需要听真话,只需要听好听的话,所以学着做一个有温度且睿智的人。不相为谋,但我照样能心平气和,冷眼相待,我依旧可…

BGP的介绍

目录 BGP基础 BGP的发展历史 BGP在企业中的应用 距离矢量型协议和路径矢量型协议的区别 BGP的特征 1.可控性 2.可靠性 3.AS-BY-AS BGP的对等关系 BGP的数据包 1.open报文 2.Keepalive报文 3.Update报文 4.Notification 报文 5.Route-refresh报文 BGP的状态机 …

【暑期每日一练】 day7

目录 选择题 (1) 解析: (2) 解析: (3) 解析: (4) 解析: (5) 解析: 编程题 题一…

【深度学习中常见的优化器总结】SGD+Adagrad+RMSprop+Adam优化算法总结及代码实现

文章目录 一、SGD,随机梯度下降1.1、算法详解1)MBSGD(Mini-batch Stochastic Gradient Descent)2)动量法:momentum3)NAG(Nesterov accelerated gradient)4)权重衰减项(we…

使用 ChatGPT 进行研究的先进技术

在这篇文章中,您将探索改进您研究的先进技术。尤其, 分析和解释研究数据进行文献综述并找出研究差距废话不多说直接开始吧!!! 分析和解释研究数据 一家小企业主希望分析客户满意度数据以改善客户服务。他们使用包含 10…

【Lua学习笔记】Lua入门

文章目录 Lua变量数据类型变量声明其他表示 Lua语法判断逻辑判断(Lua很特殊,这个比较重要)短路判断 ifif else 循环whileforrepeat 迭代器泛型for迭代器无状态迭代器多状态的迭代器 Lua函数select方法 数组字符索引_G (不是教程&a…

opencv对相机进行畸变矫正,及矫正前后的坐标对应

文章目录 1.背景2.需求分析3.解决方案3.1.镜头畸变矫正3.2.知道矫正后的画面坐标(x, y),求其在原画面的坐标(x, y)3.2.知道原画面坐标(x1, y1),求其在矫正后的画面坐标(x2, y2) 4.效果5.代码 1.背景 目前有个项目,需要用到热成像相机。但是这…

k8s deployment(k8s经典版)|PetaExpress

Deployment是什么? Deployment是指在软件开发中将应用程序或系统部署到目标环境中的过程。它包括将代码编译、配置、打包并安装到目标服务器或设备上的步骤。k8s deployment是(k8s经典版)中用来管理发布的控制器,在开发的过程中使…

selenium等待的三种方式(详细)

1.强制等待 time.sleep(3) 这种方式会是操作强行等待3s才会进行下一步操作,但是这种放法,可能会延长测试的时间,如果元素在1s中出现,就会浪费2s的时间,并且这种放法单次有效,每次需要等待元素的操作都需要…

Python Geoplotlib 可视化地理数据的综合指南

Geoplotlib: Exploring the World with Python Python Geoplotlib 可视化地理数据的综合指南 Geoplotlib是一个强大的Python库,用于可视化地理数据。它提供了一种简单直观的方法来创建地图并在其上绘制地理数据。 Geoplotlib 建立在 matplotlib 和 numpy…

BUG分析以及BUG定位

一般来说bug大多数存在于3个模块: 1、前台界面,包括界面的显示,兼容性,数据提交的判断,页面的跳转等等,这些bug基本都是一眼可见的,不太需要定位,当然也不排除一些特殊情况&#xf…