【极速前进】20240415-20240421:TR-DPO、压缩与智能的线性关系、模拟伪代码改善算术能力、Many-shot、合成数据综述

本文主要是介绍【极速前进】20240415-20240421:TR-DPO、压缩与智能的线性关系、模拟伪代码改善算术能力、Many-shot、合成数据综述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、TR-DPO:更新reference模型能实现更好的对齐

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

​ 语言模型对齐的训练目标是:
max ⁡ π θ E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] − β D KL [ π θ ( x , y ) ∥ π ref ( x , y ) ] (1) \max_{\pi_\theta}\mathbb{E}_{x\sim\mathcal{D},y\sim\pi_{\theta}(y|x)}\Big[r_{\phi}(x,y)\Big]-\beta\mathbb{D}_{\text{KL}}\Big[\pi_{\theta}(x,y)\parallel\pi_{\text{ref}}(x,y)\Big] \tag{1}\\ πθmaxExD,yπθ(yx)[rϕ(x,y)]βDKL[πθ(x,y)πref(x,y)](1)
其中 D \mathcal{D} D是训练数据的集合, π θ \pi_{\theta} πθ是待优化的策略, π ref \pi_{\text{ref}} πref是reference模型。 r ϕ ( x , y ) r_{\phi}(x,y) rϕ(x,y)是基于人类偏好训练的奖励模型。

​ 最初求解该目标是通过强化学习方法,而目前的方法省去了奖励模型,直接训练。损失函数为:
L DPO ( π θ , π ref ) = − E ( x , y w , y l ) ∼ D [ log ⁡ σ ( β log ⁡ π θ ( y w ∣ x ) π ref ( y l ∣ x ) π ref ( y w ∣ x ) π θ ( y l ∣ x ) ) ] (2) \mathcal{L}_{\text{DPO}}(\pi_{\theta},\pi_{\text{ref}})=-\mathbb{E}_{(x,y_w,y_l)\sim\mathcal{D}}\Big[\log\sigma(\beta\log\frac{\pi_{\theta}(y_w|x)\pi_{\text{ref}}(y_l|x)}{\pi_{\text{ref}}(y_w|x)\pi_{\theta}(y_l|x)}) \Big]\tag{2} \\ LDPO(πθ,πref)=E(x,yw,yl)D[logσ(βlogπref(ywx)πθ(ylx)πθ(ywx)πref(ylx))](2)
其中 D \mathcal{D} D是由元组 ( x , y w , y l ) (x,y_w,y_l) (x,yw,yl)构成的, x x x表示文本提示, y w y_w yw y l y_l yl是人类的偏好。

​ 本文的优化目标主要是将训练过程中的reference模型从静态变为动态。具体来说,有两种更新的reference模型的方法。

​ 第一种是"软更新(soft update)",
π ref ← α π θ + ( 1 − α ) π ref prev \pi_{\text{ref}}\leftarrow\alpha\pi_{\theta}+(1-\alpha)\pi_{\text{ref}_{\text{prev}}} \\ πrefαπθ+(1α)πrefprev
其中 α ∈ [ 0 , 1 ] \alpha\in[0,1] α[0,1]是权重因子。

​ 第二种方法是硬更新,每 τ \tau τ个训练步会执行
π ref ← π θ \pi_{\text{ref}}\leftarrow\pi_{\theta} \\ πrefπθ
其表示经过若干次迭代后直接替换模型,能够对reference模型进行更明显且偶然的调整。

​ 提出的方法称为TR-DPO,整体来说效果均优于原始的DPO。

二、压缩与智能的线性关系

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

语言的无损压缩 p data p_{\text{data}} pdata是生成文本序列数据的潜在分布。给定一个文本序列 x 1 : n x_{1:n} x1:n,无损压缩的目标是将文本编码至 C ( x 1 : n ) C(x_{1:n}) C(x1:n)中,其要比原文小但是所有原始信息都得以保存。 C C C通常使用二进程bit来编码字符。根据编码理论,最优编码器的期望bit数为 E x ∼ p data [ − log ⁡ 2 p data ] \mathbb{E}_{x\sim p_{\text{data}}}[-\log_2 p_{\text{data}}] Expdata[log2pdata]

压缩同语言模型的关系。通常 p data p_{\text{data}} pdata是未知的,使用 p model ( x ) p_{\text{model}}(x) pmodel(x)来高效的压缩 x x x。通过 p model p_{\text{model}} pmodel能够实现的最优期望编码长度为
E x ∼ p data [ ∑ i = 1 n − log ⁡ 2 p model ( x i ∣ x 1 : i − 1 ) ] \mathbb{E}_{x\sim p_{\text{data}}}\Big[\sum_{i=1}^n-\log_2 p_{\text{model}}(x_i|x_{1:i-1})\Big] \\ Expdata[i=1nlog2pmodel(xix1:i1)]
这样就能建立起 p model p_{\text{model}} pmodel和压缩器之间的关系。为了能够实现高效的压缩,就需要优化 p model p_{\text{model}} pmodel来实现最小化平均编码长度。上式也是自回归语言模型训练的损失函数。

评估压缩和智能的关系

  • 评估智能:评估下游任务的效果,主要评估能力包括知识和常识、代码、数学推理。

  • 评估压缩:
    BPC = − log ⁡ 2 p model ( X ) T = ∑ i = 1 N − log ⁡ 2 p model ( x i ∣ x 1 : i − 1 ) T \text{BPC}=\frac{-\log_2 p_{\text{model}}(X)}{T}=\frac{\sum_{i=1}^N-\log_2 p_{\text{model}}(x_i|x_{1:i-1})}{T} \\ BPC=Tlog2pmodel(X)=Ti=1Nlog2pmodel(xix1:i1)
    X X X是待压缩的语料, N N N X X X中的总token数, T T T X X X中的总字符数。该评估指标等价于 X X X中每个字符的平均损失值。

​ **结论:**压缩程度与智能程度呈现线性关系。

三、模拟伪代码执行改善LM算术推理

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

核心思想。先前有一些研究通过使用编程语言来表达算术推理中的必要逻辑,但是构造可执行且无错误的代码是否存在必要性。本文通过构造伪代码的方式来改进算术推理的效果。

执行步骤。

  • 使用两个语言模型,分别是指令语言模型 I \mathcal{I} I和推理语言模型 R \mathcal{R} R
  • 先让 I \mathcal{I} I分析具体的任务,然后基于分析生成解决任务的伪代码。
  • R \mathcal{R} R基于任务解决方案的伪代码进行推理并给出最终结果。

四、Many-Shot In-Context Learning

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

​ 先前都是few-shot in-context learning。最近,LLM能够处理更长的上下文,本文尝试评测many-shot in-context learning。由于可以放入更多的样本,这使得某些任务可以不进行微调或者仅进行少量微调。此外,添加更多的样本能够带来更好的泛化性,并且能够处理更复杂的任务。

1. 特定任务的Many-shot

​ 在机器翻译、摘要、计划生成和代码验证等任务上,many-shot都能够改善整体的准确率。但是,准确率的改善和示例样本的增长并不是线性关系,改善很难说是巨大的。

2. 使用非人类撰写的rationales进行Many-shot

​ 提出两种不需要人类参与构造示例的方式:a. Reinforced ICL:使用模型自己生成的rationales;b. Unsupervised ICL:完全去掉rationales,prompt中仅保留输入。

​ (1) 在MATH和GSM8K任务上,Reinforced ICL和Unsupervised ICL都优于人类撰写样本的ICL,并且具有泛化能力。

​ (2) 在GPQA任务上,在少于125-shot的情况下,Reinforced ICL和Unsupervised ICL优于标准ICL。125-shot情况下,Reinforced ICL和标准ICL相当。

​ (3) Big-Bench Hard任务上,Reinforced ICL在所有任务上都几乎优于标准ICL。

3. Many-shot ICL分析

​ (1) 随着示例样本的增加,模型可以克服预训练中的偏差。

​ (2) 测试模型通过数值输入学习抽象数学函数能力,结果表明其能够改善非语言领域任务的效果。

​ (3) 在Many-shot场景下,示例样本的顺序仍然是有显著影响的。

五、语言模型合成数据的最佳实践和经验教训

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

1. 训练中的合成数据

(1) 推理

数学。数学方面的合成数据主要包括预训练数据合成和微调数据合成。预训练数据合成的代表为Minerva、DeepSeekMath等。微调数据合成的话,WizardMath利用GPT-3.5增加问题的复杂度;MetaMath通过不同的方式重写问题;GAIR-Abel发现答案的格式至关重要;Xwin-Math将合成数据增加至1百万,发现LLaMA-2-7B仍然可以收益;AlphaGeometry通过将合成数据和严格的验证过程相结合,实现了与人类奥赛金牌得主相当的能力。

代码。CodeRL提出的actor-critic使用合成代码的反馈信号来改善模型;Haluptzok等人提出的自改善方法,让模型生成合成数据然后在验证过滤;Shypula等人提出利用模拟环境和自适应策略进行代码优化;InterCode提出框架来增强代码生成和强化学习环境的交互,其中代码作为动作,执行反馈作为观察;Reflexion利用外部或者内部模拟的语言反馈信号提高代码推理能力。WizardCoder通过Code Evol-Instruct来指导ChatGPT来增强合成数据的复杂度和多样性。

(2) 工具使用和计划

通过合成轨迹来学习工具使用。LaMDA的训练数据中包含了众包的交互数据和合成数据,从而使其能够调用合适的工具;Toolformer通过模板生成数据上进行训练来决定使用何种API;ToolAlpaca通过构建多智能体模拟环境来自动生成多样的工具使用语料;

在合成环境中学习规划。Inner Monologue利用由模拟环境生成的自然语言反馈来教基于LLM的机器人进行规划,能够显著提高模拟环境和现实环境的指令完成率;VIMA创建了多模态模拟环境VIMA-Bench,支持对象和纹理扩展;在《我的世界》游戏中,Voyager部署了一些基于GPT-4的Agent与环境交互,发现这些Agent在合成反馈的帮助下更快解锁新技能并完成规划。

(3) 多模态

从视觉到文本的反向渲染。网络收集的图文对中通常包含噪音且语言描述粒度太粗,在文档、屏幕、图形和图表等领域,可以很方便从图像渲染引擎的合成管道中获得细粒度的对齐。PixStruct使用web server将HTML代码渲染为屏幕截图;MatCha和DePlot使用Python绘图库来渲染表格数据,然后通过图像和数据来预训练基础模型;

多模态指令遵循。LLaVA通过使用现有的图像字幕来提出GPT-4撰写多样且长格式的问答对。

(4) 多语言(略)

(5) 对齐

指令遵循。Self-instruct和Alpaca均使用LLM来生成指令遵循数据,其通过提供"种子指令"并要求LLM模拟格式来生成更多的样本;合成数据的复杂度和多样性至关重要,Evol-Instruct通过prompt方式为指令增加复杂度;Mukherjee等人利用LLM修改指令和应答,可以提高许多NLP的任务;UltraChat利用ChatGPT生成多轮对话数据集。

缓解幻觉。合成数据虽然能够改善LLM各项能力,但是其包含的错误数据会导致模型产生幻觉。此外,也可以使用合成数据来缓解幻觉,例如使用合成幻觉数据进行强化学习。Jone等人设计了一种可以轻易评估幻觉的合成任务,利用这个任务来微调LLM。由于缺乏对幻觉进行分级评估的合成任务,通过合成数据缓解幻觉的研究仍然受到一些限制。

对齐人类共同偏好和价值观。在RLHF中,近期研究提出将合成数据和人类数据结合的方法来训练更稳健的奖励模型。Constitutional AI提出使用一小套原则来引导AI生成评判和反馈,然后使用这种合成数据来代替RLHF中的人类数据。RLAIF训练的模型展现出与RLHF相似的性能。合成数据为人类价值观和偏好对齐提供了大规模、多样化且可控的生成方面。

2. 评估中的合成数据

​ 合成数据广泛用于不同方面的评估:

事实。Feng等人在知识图谱合并LLM生成和随机游走来生成合成评估数据,用于评估事实性。Wei等人创建LongFact来评估长格式事实。

安全。略

辅助人类评估。在许多情况下,LLM的评估可以看做是人类评估的合格、快速且低成本的替代方案。

3. 合成数据的挑战和局限性

合成数据导致错误信息泛滥。(略)

合成数据导致AI对齐的模糊。AI对齐的目标是确保AI系统符合人类的价值观和意图。合成数据不是从真实世界收集,可能无法准确地代表人的价值观和偏好。导致AI系统学习有偏见的数据等问题。

使用合成数据训练导致评估困难

这篇关于【极速前进】20240415-20240421:TR-DPO、压缩与智能的线性关系、模拟伪代码改善算术能力、Many-shot、合成数据综述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/926628

相关文章

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库