文献阅读:The Unreasonable Effectiveness of Easy Training Data for Hard Tasks

  • 文献阅读:The Unreasonable Effectiveness of Easy Training Data for Hard Tasks
    • 1. 文章简介
    • 2. 方法介绍
      • 1. 数据集难易度分析
      • 2. 模型训练前后变化
    • 3. 实验考察 & 结论
      • 1. 实验设计
        • 1. 使用数据集
        • 2. 使用模型
      • 2. 实验结果
        • 1. 数据集难度分析
        • 2. 在Easy数据集下训练模型在Hard数据集下的表现
        • 3. hard data与easy data之间的trade-off
        • 4. EasyToHard方法的稳定性
    • 4. 总结 & 思考
  • 文献链接:https://arxiv.org/abs/2401.06751
  • GitHub链接:https://github.com/allenai/easy-to-hard-generalization

1. 文章简介

这篇文章是今年一月的一个工作,讲的是LLM的finetune方面的内容,具体来说是finetune时候的数据来源问题。

众所周知,模型训练的时候,优质数据非常重要,但是好的优质数据非常难以获得,当前的预训练大模型的路子虽然通过自监督的方法一定程度上缓解了上述问题,但是现在的Instruction Tuning以及RLHF等方法其实还是走回了SFT的路子,还是需要一定的标注数据进行训练。

因此,我们又回到了数据的获取问题上,而且,随着LLM效果变得越来越好,我们令LLM处理的问题难度也越来越高,对应的标注难度也越来越高,不但标注成本更高,标注质量也会有所下降,因为很多问题即使是专业人员也往往无法每次都给出准确的回答。

而文中则是另辟蹊径,选择了另外一条路,即放弃这些高难度的数据,直接使用相对容易获得的简单数据集来对模型进行finetune,然后在实际的hard数据集上进行考察,发现在这种情况下,模型效果也能够获得提升,且效果和真正在hard数据集上进行finetune的模型效果也相差不远。

在这里插入图片描述

下面,我们就来看一下文中的具体方法和考察内容。

2. 方法介绍

首先,我们来看一下文中的Easy To Hard Generalization方法。

这个其实并不需要太多的进行展开,因为顾名思义,这个方法的核心就是让模型在同类型任务的简单数据集下进行finetune即可。

文中给出了一个简单的case,即让模型分别在不同年级的数据下进行训练,然后统一在大学测试集下进行考察。

在这里插入图片描述

因此,这里与其说要对文中的方法进行说明,其实反而更需要说明以下两个问题:

  1. 如何来评估数据集的难易度
  2. 如何来评估训练前后模型的变化

1. 数据集难易度分析

首先,关于数据集的难易度评估,文中主要给出了以下几个判断维度:

  1. 教育程度/年纪水平
  2. 专家的评定
  3. 专业技术要求
  4. 问题的复杂程度(单词数目)
  5. 回答的复杂程度(单词数目)
  6. 回答问题需要的步骤数目
  7. 对于问题描述的最短长度

2. 模型训练前后变化

而关于模型在训练前后的效果变化程度,文中给出了一个名为Supervision Gap Recovered (SGR)的指标来进行定义,具体来说,就是模型在简单和复杂数据集上训练前后的效果提升差异度。

具体公式如下:

S G R = E a s y − U n s u p e r v i s e d H a r d − U n s u p e r v i s e d \mathop{SGR} = \frac{\mathop{Easy} - \mathop{Unsupervised}}{\mathop{Hard} - \mathop{Unsupervised}} SGR=HardUnsupervisedEasyUnsupervised

3. 实验考察 & 结论

下面,我们来看一下文中给出的具体实验考察和对应的结果。

1. 实验设计

首先,我们来看一下文中的实验设计,主要包括:

  1. 文中使用的数据集
  2. 文中使用的模型
1. 使用数据集

文中使用的数据集主要包括以下一些:

  1. ARC
  2. MMLU
  3. StrategyQA
  4. GSM8K

而关于每一个数据集,文中使用的难易度评判标准则主要为下表所示的内容:

在这里插入图片描述

2. 使用模型

然后,关于文中实验所使用的模型,主要是Llama-2 7B, 13B和70B的版本,不过文中提到在Qwen-72B,Mixtral-7x8B等模型上也有实验,结果是一致的,因此文中正文只给出了LLama-2上的实验结果。

而关于模型的训练方法,文中则是使用了以下几种方法:

  1. ICL
    • 数据构造上使用In Context Learning
  2. Linear Probing
    • 训练方法上使用Linear Probing
  3. QLoRA
    • Finetune方式使用QLoRA

2. 实验结果

下面,我们来看一下文中具体的实验结果。

1. 数据集难度分析

首先,关于数据集当中的难易度分析,具体来说的话,就是考察一下不同维度之间得到的难易度结果之间的相关关系。

文中给出的结果如下:

在这里插入图片描述

在这里插入图片描述

然后发现,结果就比较搞笑,因为发现各个评判标准得到的难易度分类之间相关度很低,也就是说在某些标准下认为的比较难的数据在其他标准下可能就会认为比较简单……

这就很尴尬,也导致文中在后续的时间很尴尬的就只能每次基于某一个维度的分类都做一次实验,使得结果就变得有点繁杂了。

2. 在Easy数据集下训练模型在Hard数据集下的表现

尽管如此,我们还是至少可以单一地根据几个维度确定问题的难易度,然后基于此进行一下实验考察,文中得到的实验结果如下:

在这里插入图片描述

可以看到:

  • 万幸的是,基于各类难易度分类标准,文中都获得了相近的实验结果,即Easy To Hard方法都是有效的,都可以有效地提升模型的效果表达,且相互之间的差别不大。
3. hard data与easy data之间的trade-off

但是,考虑到hard data和easy data获取成本的不同,这里还考察了一下hard data与easy data之间的trade off,具体来说,包含两个方面:

  1. 获取成本上面
  2. 数据的噪声方面

文中得到的结果如下:

  1. 获取成本上面

    假设hard data的获取成本是easy data的两倍,此时有:

    在这里插入图片描述

  2. 数据的噪声方面

    假设hard data的标注噪声是easy data的两倍,此时有:

    在这里插入图片描述

可以看到:

  • 从成本角度,easy data显然可以更快速地获得一个较好的效果,但是对于大多数的任务而言,随着成本的增加而导致的标注数据总量的增加,hard data训练的模型最终总是会追平并超越easy data训练得到的模型的;
  • 但是,从噪声方面,如果标注难度很大,hard data当中的标注准确性并不高的情况下,盲目地增加hard data的量反而会影响模型最终的效果。
4. EasyToHard方法的稳定性

最后,文中还考察了一下Easy To Hard Generalization方法的泛化性,具体包括以下两个角度:

  1. 不同size下的模型上的效果
  2. easy和hard数据的gap对结果的影响

得到结果如下:

  1. 不同size下的模型上的效果

    在这里插入图片描述

  2. easy和hard数据的gap对结果的影响

    在这里插入图片描述

可以看到:

  • 对于不同规模的模型,Easy To Hard Generalization总是成立的;
  • 随着easy data和hard data之间的gap的不断增大,其对于模型效果的增益是不断会减弱的,即数据分布差异越大,训练效果越差。

4. 总结 & 思考

综上,我们可以看到,本质上来说,这篇文章算是一个另类的数据增强的方法,本质上想要处理的问题还是如何获得足量监督数据的问题。

不同于其他比如说反向翻译等数据增强的方法,这里算是直接给出一个平替的思路:

  • 高成本的标注我们搞不起,那么我们就在一些不那么难的数据上做一些更加便宜的标注,也能够使得模型获得足够的效果提升。

倒也算是一个非常实用的方法了,如果真的做SFT的话感觉不妨可以一试,不过对于我们,可能更大的问题在于说,SFT本身搞不动啊……

我差的是那点标注吗?嗯,也差,但我更差的跑模型需要的卡啊!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Excel MATCH函数 两张顺序不同表格,统一排序

目录 一. 背景二. 添加辅助列,使用MATCH函数生成排序条件三. 效果 一. 背景 有如下图所示的两张表格,分别记录着同一批人的1月份和2月份的工资。表格A和表格B中的姓名列相同,工资列数据不同现在要求参考表格A中的姓名列对表格B中的数据进行排序&#xf…

2024.3.1

1.TCP机械臂测试 代码&#xff1a; #include <myhead.h>#define SER_IP "192.168.43.185" //服务器ip #define SER_PORT 8888 //服务器端口号#define CLI_IP "192.168.153.128" //客户端IP #define CLI_PORT 9999 //客户端端口号…

使用AC自动机实现敏感词过滤(java)

主要分成2部分 trie树的构建&#xff08;前缀树&#xff0c;字典树&#xff09;fail指针的构建 1. trie 树 同一层级不会有重复的字符敏感词的最后一个字符会标记&#xff0c;并携带敏感词的长度 2. fail 指针的构建 fail 指针是指在某个分支匹配失败后&#xff0c;重新…

碰撞的小球(Colliding balls)

效果如下&#xff1a; 代码: #include <bits/stdc.h> #include <graphics.h>//必须库 #include <time.h> using namespace std; int main() {initgraph(650,400);//背景图大小circle(100,100,40);fillcircle(200,200,10);//球的数据srand(time(NULL));int …

Leetcoder Day37| 动态规划part04 背包问题

01背包理论基础 面试掌握01背包&#xff0c;完全背包和重背包就够用了。 背包问题的理论基础重中之重是01背包&#xff0c;一定要理解透&#xff01; 01 背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品…

[Redis]——Redis命令手册set、list、sortedset

&#x1f333;List类型常见命令 LPUSH / RPUSH [KEY] [element] …… 向列表左侧或者右侧插入一个或多个元素 LPOP / RPOP [key] 删除左边或者右边第一个元素 LRANGE [key] start end 返回索引start到end的元素&#xff08;索引从0开始&#xff09; BLPOP / BRPOP [key] [等…

Flink 定义 Temporal Table 的两种方式:Temporal Table DDL 和 Temporal Table Function

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

小程序环形进度条爬坑

在做微信小程序的时候&#xff0c;发现用canvas做的环形进度条&#xff0c;在带滚动条的view里面显示有闪动、显示不全的问题&#xff0c;后面改成echart-weixin的pie图实现了&#xff0c;option配置如下 // 表示进度的百分比 var progressValue 70;option {series: [{type: …

GC机制以及Golang的GC机制详解

要了解Golang的GC机制,就需要了解什么事GC,以及GC有哪几种实现方式 一.什么是GC 当一个电脑上的动态内存不再需要时&#xff0c;就应该予以释放&#xff0c;以让出内存&#xff0c;这种内存资源管理&#xff0c;称为垃圾回收&#xff08;Garbage Collection&#xff09;&#x…

黑马点评-短信登录业务

原理 模型如下 nginx nginx基于七层模型走的事HTTP协议&#xff0c;可以实现基于Lua直接绕开tomcat访问redis&#xff0c;也可以作为静态资源服务器&#xff0c;轻松扛下上万并发&#xff0c; 负载均衡到下游tomcat服务器&#xff0c;打散流量。 我们都知道一台4核8G的tomca…

RH850P1X芯片学习笔记-Generic Timer Module -ATOM

文章目录 ARU-connected Timer Output Module (ATOM)OverviewGLOBAL CHANNEL CONTROL BLOCK ATOM Channel architectureATOM Channel modesSOMP-Signal Output Mode PWMSOMP - ARUSOMC-Signal Output Mode CompareSOMC - ARUSOMC – COMPARE COMMANDSOMC – OUTPUT ACTIONATOM …

智慧城市中的公共服务创新:让城市生活更便捷

目录 一、引言 二、智慧城市公共服务创新的实践 1、智慧交通系统 2、智慧医疗服务 3、智慧教育系统 4、智慧能源管理 三、智慧城市公共服务创新的挑战 四、智慧城市公共服务创新的前景 五、结论 一、引言 随着信息技术的迅猛发展&#xff0c;智慧城市已成为现代城市发…

failed to connect to ‘127.0.0.1:58526‘: Connection refused

WSA使用体验 链接&#xff1a; 知乎-穿越时间一步到位&#xff0c;教你完美安装Windows 11 Android 安卓子系统 CPU不满足要求 明明是12700H&#xff0c;满足要求&#xff0c;但是应用商店说不满足&#xff0c;在设置&#xff08;注意不是控制面板的区域&#xff09;把地区改…

第二天 Kubernetes落地实践之旅

第二天 Kubernetes落地实践之旅 本章学习kubernetes的架构及工作流程&#xff0c;重点介绍如何使用Workload管理业务应用的生命周期&#xff0c;实现服务不中断的滚动更新&#xff0c;通过服务发现和集群内负载均衡来实现集群内部的服务间访问&#xff0c;并通过ingress实现外…

RabbitMQ队列

RabbitMQ队列 1、死信的概念 ​ 先从概念解释上搞清楚这个定义&#xff0c;死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;字面意思可以这样理解&#xff0c;一般来说,producer将消息投递到broker或者直接到queue里了&#xff0c;consumer 从 queue取出消息进行消…

浅析虚函数的vptr和虚函数表

浅析虚函数的vptr和虚函数表 文章目录 浅析虚函数的vptr和虚函数表前言1. 基础理论2. 实现与内部结构 前言 ​ 为了实现虚函数&#xff0c;C使用一种称为虚拟表的特殊形式的后期绑定。该虚拟表是用于解决在动态/后期绑定方式的函数调用函数的查找表。虚拟表有时会使用其他名称…

【STM32+HAL】七针OLED(SSD1306)配置(SPI版)

一、前言 关于四针OLED的I2C版配置方式&#xff0c;请转至【STM32HAL】OLED显示初始化配置 二、实现功能&#xff1a; 用SPI通信方式初始化OLED显示&#xff08;相较于I2C速度更快&#xff09; 三、方法一&#xff1a;硬件SPI通信 1、打开SPI通信&#xff08;仅传输&#xf…

互联网加竞赛 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …

苍穹外卖Day05——总结5

前期文章 文章标题地址苍穹外卖Day01——总结1https://lushimeng.blog.csdn.net/article/details/135466359苍穹外卖Day01——解决总结1中存在的问题https://lushimeng.blog.csdn.net/article/details/135473412苍穹外卖Day02——总结2https://lushimeng.blog.csdn.net/articl…

STM32-SPI通信协议

串行外设接口SPI&#xff08;Serial Peripheral Interface&#xff09;是由Motorola公司开发的一种通用数据总线。 在某些芯片上&#xff0c;SPI接口可以配置为支持SPI协议或者支持I2S音频协议。 SPI接口默认工作在SPI方式&#xff0c;可以通过软件把功能从SPI模式切换…