Salesforce AI研究: 从奖励建模到在线RLHF工作流

news2024/12/24 2:29:46

摘要

该研究在本技术报告中介绍了在线迭代基于人类反馈的强化学习(Online Iterative Reinforcement Learning from Human Feedback, RLHF)的工作流程,在最近的大语言模型(Large Language Model, LLM)文献中,这被广泛报道为大幅优于其离线对应方法。然而,现有的开源RLHF项目仍然主要局限于离线学习环境。在本技术报告中,该研究旨在填补这一空白,并提供一个易于复现的在线迭代RLHF的详细方案。特别是,由于在线人工反馈对于资源有限的开源社区通常是不可行的,该研究首先使用一组多样的开源数据集构建偏好模型,并使用构建的代理偏好模型来近似人工反馈。然后,该研究讨论了在线迭代RLHF背后的理论见解和算法原理,并给出了详细的实际实施方案。该研究训练的LLM SFR-Iterative-DPO-LLaMA-3-8B-R在LLM聊天机器人基准测试中取得了令人印象深刻的性能,包括AlpacaEval-2、Arena-Hard和MT-Bench,以及其他学术基准测试如HumanEval和TruthfulQA。该研究表明,有监督微调(Supervised Fine-Tuning, SFT)和迭代RLHF可以使用完全开源的数据集获得最先进的性能。此外,该研究已经公开了模型、精心整理的数据集以及全面的分步代码指南。请参考https://github.com/RLHFlow/RLHF-Reward-Modeling和https://github.com/RLHFlow/Online-RLHF以获取更详细的信息。

参考论文: https://arxiv.org/pdf/2405.07863

1 引言

基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)已成为将人类偏好信号整合到机器学习方法中的关键技术,特别是在使大语言模型(Large Language Models, LLMs)与人类价值观和偏好保持一致方面。著名的例子包括革命性的闭源ChatGPT、Claude和Gemini,以及强大的开源模型如Zephyr、Starling和LLaMA-3。特别是,自ChatGPT推出以来,RLHF在各种社区中引起了极大的兴趣。然而,与有监督微调相比,RLHF在开源社区中的研究相对较少,而有监督微调已经有了许多优秀的开源项目,如Open-Hermes和Vicuna。

为了便于讨论,该研究基于标准RLHF工作流。该研究将LLM表征为一个策略 π \pi π,它接受一个提示 x ∈ X x \in \mathcal{X} xX并从分布 π ( ⋅ ∣ x ) \pi(\cdot|x) π(x)中生成一个响应 a ∈ A a \in \mathcal{A} aA。该研究将RLHF的初始模型表示为 π 0 \pi_0 π0,它在预训练阶段之后在一些指令跟随数据上进行微调。该研究假设有一个提示集,从某个未知但固定的分布 x ∼ d 0 x \sim d_0 xd0中采样。RLHF的关键组成部分是偏好预言机(Preference Oracle),其数学定义如下。

定义1(偏好预言机)。存在一个偏好预言机 P : X × A × A → [ 0 , 1 ] P: \mathcal{X} \times \mathcal{A} \times \mathcal{A} \rightarrow [0,1] P:X×A×A[0,1],该研究可以查询它以接收偏好信号:

y ∼ Ber ( P ( a 1 ≻ a 2 ∣ x , a 1 , a 2 ) ) y \sim \text{Ber}(P(a_1 \succ a_2|x,a_1,a_2)) yBer(P(a1a2x,a1,a2)),

其中 Ber ( t ) \text{Ber}(t) Ber(t)是参数为 t t t的Bernoulli分布, y = 1 y=1 y=1表示 a 1 a_1 a1优于 a 2 a_2 a2, y = 0 y=0 y=0表示 a 2 a_2 a2优于 a 1 a_1 a1

为了进一步简化问题,通常假设偏好信号可以用基于奖励的Bradley-Terry模型来建模,这是偏好学习中一种著名的方法。

定义2(Bradley-Terry模型)。存在一个真实奖励函数 r ∗ r^* r,偏好模型满足:

P ( a 1 ≻ a 2 ∣ x , a 1 , a 2 ) = exp ⁡ ( r ∗ ( x , a 1 ) ) exp ⁡ ( r ∗ ( x , a 1 ) ) + exp ⁡ ( r ∗ ( x , a 2 ) ) = σ ( r ∗ ( x , a 1 ) − r ∗ ( x , a 2 ) ) P(a_1 \succ a_2|x,a_1,a_2) = \frac{\exp(r^*(x,a_1))}{\exp(r^*(x,a_1)) + \exp(r^*(x,a_2))} = \sigma(r^*(x,a_1) - r^*(x,a_2)) P(a1a2x,a1,a2)=exp(r(x,a1))+exp(r(x,a2))exp(r(x,a1))=σ(r(x,a1)r(x,a2)), (1)

其中 σ ( z ) = 1 / ( 1 + exp ⁡ ( − z ) ) \sigma(z) = 1/(1+\exp(-z)) σ(z)=1/(1+exp(z))是sigmoid函数。

这种建模是偏好预言机的一个代理,并将RLHF的学习目标与奖励最大化联系起来。实践中,由于BT模型可能无法完全捕捉复杂的人类偏好,该研究通常优化以下KL正则化目标:

J ( π ) = E x ∼ d 0 E a ∼ π ( ⋅ ∣ x ) [ r ∗ ( x , a ) + η log ⁡ π 0 ( a ∣ x ) π ( a ∣ x ) ] = E x ∼ d 0 [ E a ∼ π ( ⋅ ∣ x ) [ r ∗ ( x , a ) ] − η D KL ( π ( ⋅ ∣ x ) ∥ π 0 ( ⋅ ∣ x ) ) ] J(\pi) = \mathbb{E}_{x \sim d_0} \mathbb{E}_{a \sim \pi(\cdot|x)} [r^*(x,a) + \eta \log \frac{\pi_0(a|x)}{\pi(a|x)}] = \mathbb{E}_{x \sim d_0} [\mathbb{E}_{a \sim \pi(\cdot|x)} [r^*(x,a)] - \eta D_{\text{KL}}(\pi(\cdot|x) \| \pi_0(\cdot|x))] J(π)=Exd0Eaπ(x)[r(x,a)+ηlogπ(ax)π0(ax)]=Exd0[Eaπ(x)[r(x,a)]ηDKL(π(x)π0(x))], (2)

其中 η > 0 \eta > 0 η>0是KL惩罚系数。这种公式在实践中被广泛研究,并承认以下难以处理的封闭形式解

π ∗ ( a ∣ x ) = 1 Z ( x ) π 0 ( a ∣ x ) exp ⁡ ( 1 η r ∗ ( x , a ) ) \pi^*(a|x) = \frac{1}{Z(x)} \pi_0(a|x) \exp(\frac{1}{\eta} r^*(x,a)) π(ax)=Z(x)1π0(ax)exp(η1r(x,a)), (3)

其中 Z ( x ) = ∑ a ′ ∈ A π 0 ( a ′ ∣ x ) exp ⁡ ( 1 η r ∗ ( x , a ′ ) ) Z(x) = \sum_{a' \in \mathcal{A}} \pi_0(a'|x) \exp(\frac{1}{\eta} r^*(x,a')) Z(x)=aAπ0(ax)exp(η1r(x,a))是归一化常数。

在后续小节中,该研究首先描述现有方法,并讨论其挑战,这应作为该研究项目的动机。

1.1 先前的RLHF算法及其挑战

总的来说,先前的RLHF方法可以大致分为两类:(1)使用近端策略优化(Proximal Policy Optimization, PPO)的深度强化学习(Deep Reinforcement Learning, DRL)方法;(2)(离线)直接偏好学习方法(如DPO)。

DRL框架。DRL框架由两个阶段组成。在第一阶段,训练一个奖励模型。具体来说,给定一个偏好数据集 D off = { ( x , a w , a l ) } \mathcal{D}_{\text{off}} = \{(x,a_w,a_l)\} Doff={(x,aw,al)},其中 a w a_w aw是在给定指令或提示 x x x的情况下优于 a l a_l al的响应。BT模型的对数似然函数可以表示如下:

ℓ D off ( θ ) = ∑ ( x , a w , a l , y ) ∈ D off log ⁡ σ ( r θ ( x , a w ) − r θ ( x , a l ) ) \ell_{\mathcal{D}_{\text{off}}}(\theta) = \sum_{(x,a_w,a_l,y) \in \mathcal{D}_{\text{off}}} \log \sigma(r_\theta(x,a_w) - r_\theta(x,a_l)) Doff(θ)=(x,aw,al,y)Dofflogσ(rθ(x,aw)rθ(x,al)). (4)

该研究可以根据 D off \mathcal{D}_{\text{off}} Doff通过最大化 ℓ D off ( θ ) \ell_{\mathcal{D}_{\text{off}}}(\theta) Doff(θ)来计算最大似然估计(Maximum Likelihood Estimator, MLE) r MLE r_{\text{MLE}} rMLE。然后,在第二阶段,可以应用像PPO这样的DRL方法来优化以下正则化奖励:

r ^ ( x , a ) = r MLE ( x , a ) − η log ⁡ π ( a ∣ x ) π 0 ( a ∣ x ) \hat{r}(x,a) = r_{\text{MLE}}(x,a) - \eta \log \frac{\pi(a|x)}{\pi_0(a|x)} r^(x,a)=rMLE(x,a)ηlogπ0(ax)π(ax).

ChatGPT和Claude采用了这种方法,并为LLaMA-2/3的对齐做出了贡献。然而,众所周知,即使在最好的情况下,将DRL方法调整到最佳性能也需要在超参数选择和代码级优化方面付出大量努力。在LLMs的背景下,这变得更具挑战性,因为LLMs的微调在计算上是昂贵的。此外,PPO算法需要同时加载多个LLMs,包括actor(策略)、critic(值网络)、奖励模型和参考模型(用于KL估计),这对GPU内存造成了巨大压力,尤其是对资源受限的开源项目而言。

直接偏好学习。鉴于PPO的上述问题,有一条创新的工作直接从人类偏好数据集中学习,而无需显式构建奖励函数。在这些方法中,直接偏好优化(Direct Preference Optimization, DPO)算法特别受欢迎。它利用等式(3)将奖励表示为策略的函数,并直接使用偏好数据集 D off \mathcal{D}_{\text{off}} Doff优化以下损失函数:

L D off ( θ , π 0 ) = − ∑ ( x , a w , a l ) ∈ D off log ⁡ σ ( η log ⁡ π θ ( a w ∣ x ) π 0 ( a w ∣ x ) − η log ⁡ π θ ( a l ∣ x ) π 0 ( a l ∣ x ) ) L_{\mathcal{D}_{\text{off}}}(\theta,\pi_0) = -\sum_{(x,a_w,a_l) \in \mathcal{D}_{\text{off}}} \log \sigma(\eta \log \frac{\pi_\theta(a_w|x)}{\pi_0(a_w|x)} - \eta \log \frac{\pi_\theta(a_l|x)}{\pi_0(a_l|x)}) LDoff(θ,π0)=(x,aw,al)Dofflogσ(ηlogπ0(awx)πθ(awx)ηlogπ0(alx)πθ(alx)). (5)

与DRL方法相比,直接偏好学习算法通常更容易调整,并且需要更少的计算资源。值得注意的是,在许多LLM基准测试的排行榜上,强大的开源模型主要使用DPO进行对齐。考虑到这些因素,在该研究项目中,该研究专注于直接偏好学习算法,而将DRL框架的研究留待未来。

虽然普通的离线直接偏好学习算法在一些案例研究中很有用,但它们也面临某些挑战。具体来说,它们被认为是离线的,因为它们从通过以下过程收集的离线偏好数据集中学习:

x ∼ d 0 , a 1 ∼ π D 1 , a 2 ∼ π D 2 , y ∼ Ber ( P ( a 1 ≻ a 2 ∣ x , a 1 , a 2 ) ) x \sim d_0, a_1 \sim \pi_D^1, a_2 \sim \pi_D^2, y \sim \text{Ber}(P(a_1 \succ a_2|x,a_1,a_2)) xd0,a1πD1,a2πD2,yBer(P(a1a2x,a1,a2)). (6)

这里, ( π D 1 , π D 2 ) (\pi_D^1,\pi_D^2) (πD1,πD2)表示两个行为策略,通常取为 π 0 \pi_0 π0、其他开源模型或专有模型。术语"离线学习"意味着该研究无法在训练过程中进一步查询偏好预言机 P P P。然而,用于离线学习的有限数据集 D off \mathcal{D}_{\text{off}} Doff导致过度优化问题。这是因为有限的数据集无法覆盖整个提示-响应空间,所以当面对分布外数据时,生成的策略模型往往表现不佳(Burns et al., 2023)。事实上,Xiong et al. (2023)表明,该研究需要对空间进行均匀覆盖,以确保普通DPO(Rafailov et al., 2023)能够学习到最优策略。这种覆盖条件在实践中很难满足,因为空间是指数级的。以下是一些突出这一问题的统计数据。

在这里插入图片描述

  • 在RLHF训练过程中,平均密度比 π ( a ∣ x ) π 0 ( a ∣ x ) > exp ⁡ ( 25 ) \frac{\pi(a|x)}{\pi_0(a|x)} > \exp(25) π0(ax)π(ax)>exp(25),如Bai et al. (2022a)的图13所报告。类似的结果见拒绝采样微调(Dong et al., 2023)和DPO(Rafailov et al., 2023)。
  • 作为一个案例研究,考虑使用行为策略Gemma-7B-it从(Cui et al., 2023)的15k提示中收集数据,以使用DPO对齐Gemma-2B-it(Team et al., 2024)。计算得出Gemma-7B-it和Gemma-2B-it之间的平均KL散度为456.4。

因此,策略之间的分布偏移通常非常大,不太可能仅从预先收集的数据集中学习到最优策略。

1.2 在线迭代RLHF

相比之下,Claude项目和LLaMA-2项目已经证明,在线迭代RLHF可以显著提高模型性能。在线迭代RLHF的过程,如Xiong et al. 中正式表述的那样,可以总结如下。给定预先收集的偏好数据集 D = D off \mathcal{D} = \mathcal{D}_{\text{off}} D=Doff(如果适用,否则为空),对于每个迭代 t ∈ [ T ] t \in [T] t[T]:

• 该研究首先根据迄今收集的历史数据 D \mathcal{D} D更新策略对 ( π t 1 , π t 2 ) (\pi_t^1,\pi_t^2) (πt1,πt2);
• 该研究收集 m m m个元组作为 D t \mathcal{D}_t Dt:通过 x t , i ∼ d 0 x_{t,i} \sim d_0 xt,id0采样随机提示,通过 ( a t , i 1 , a t , i 2 ) ∼ ( π t 1 , π t 2 ) (a_{t,i}^1,a_{t,i}^2) \sim (\pi_t^1,\pi_t^2) (at,i1,at,i2)(πt1,πt2)收集两个响应,并查询偏好信号 y t , i ∼ P y_{t,i} \sim P yt,iP;
• 更新 D ← D ∪ D t \mathcal{D} \leftarrow \mathcal{D} \cup \mathcal{D}_t DDDt

在线数据的有效性可以在RLHF的背景下直观地解释如下。最初,来自策略 π 0 \pi_0 π0的大多数样本都处于低奖励区间,并用于奖励建模。因此,该研究的奖励模型在评估低奖励响应方面是准确的。然而,随着训练的进行,策略得到改进,开始生成具有更高奖励的响应。这些高奖励响应可能落入奖励函数的分布外(Out-of-Distribution, OOD)域,构建的奖励模型不再可靠。相比之下,使用中间策略对新响应进行采样,在这些样本上查询人工反馈,并将其添加回训练集,可以显著缓解OOD问题,传统的离线方法可能无法有效处理。这种方法提高了奖励模型在高奖励区间的可靠性,进而提高了策略的性能。这种直觉延伸到直接偏好学习算法,其中该研究本质上通过不断收集新的在线数据来扩大偏好数据集。

Huggingface(Tunstall et al., 2023)的出色工作提供了一个开源方案,从高质量的离线偏好数据集中进行直接偏好学习,这可以被视为一种有效的蒸馏方式。相比之下,在线RLHF在文献中仍然没有得到充分探索。Xiong et al. (2023)从理论角度迈出了理解在线探索在RLHF中优势的第一步,本技术报告旨在提供一个详细的方案来验证所提框架的有效性。

1.3 人工反馈近似

理想情况下,在线偏好信号是从一组有代表性的人类标注者中采样得到的。然而,在实践中人工反馈极其昂贵,开源社区通常无法承担。在文献中,有一系列工作表明,训练代理偏好模型,并以半监督方式使用偏好模型给出代理标签,可以提高模型性能。该研究推测,这是因为奖励模型(判别器)通常比策略(生成器)泛化得更好。

特别是,Hoang Tran表明,如果偏好模型(奖励模型)在一组多样化的偏好数据集上训练,只有0.4B参数的Pair-RM可以为迭代偏好学习提供有意义的信号,使得生成的模型1在AlpacaEval-2长度控制获胜率上达到令人印象深刻的26.4%。受此系列工作的启发,该研究首先在第2节基于多样化的开源偏好数据集训练一个代理偏好(奖励)模型,然后使用生成的模型为后续迭代RLHF提供偏好信号。

1.4 相关工作

RLHF和RLHF算法。用于LLM对齐的主导RLHF框架最早在Christiano et al. ); Ziegler et al. 中普及,并在Instruct-GPT、Claude和LLaMA-2中得到进一步发展。这些工作通常涉及基于Bradley-Terry模型的MLE构建奖励模型,然后使用PPO算法优化具有KL正则化的奖励信号。一个值得注意的例外是LLaMA-2在其RLHF流水线中使用了拒绝采样微调和PPO的混合。该研究建议感兴趣的读者参考Bai et al. ; Touvron et al. 以获得详细描述。然而,在RLHF中使用PPO有局限性。众所周知,它是不稳定的,对实现敏感,并且资源密集。尽管有一些努力在RLHF的背景下改进PPO,但由于这些局限性,对于开源社区来说,复现使用PPO取得的成功结果具有挑战性,因为它需要大量的努力和资源,而开源社区通常无法承担。认识到PPO的这些问题,一系列工作研究了(离线)直接偏好学习算法,包括Slic、DPO、IPO、KTO、ARM和GPO。这些算法跳过奖励建模步骤,直接优化离线偏好数据集上设计的损失目标(因此得名)。人们广泛观察到,直接偏好学习算法比PPO稳定得多,并且通过标准基准测试评估取得了令人印象深刻的性能。

在这里插入图片描述

RLHF受益于在线(迭代)学习。粗略地说,在线迭代学习意味着该研究将部署中间模型,并查询这些模型响应的人工反馈。直观地说,这种策略有助于缓解学习到的奖励模型的OOD问题,其优势已在基于PPO的框架中得到报告。即使额外的反馈来自从相同离线数据集构建的代理奖励(类似于半监督学习),迭代拒绝采样微调(RAFT)和基于目标分布估计器样本的DPO已被证明优于原始离线对应方法。此外,最近的工作表明,直接偏好学习算法的在线迭代变体显著优于其离线对应方法。特别是,该研究建议感兴趣的读者参考Guo et al. (2024)以获得使用不同离线基础算法的广泛实验结果。

2 作为人工反馈近似的奖励建模

该研究在本节中介绍偏好模型构建的细节,其中研究了作为BT模型MLE的奖励建模和一般偏好模型。训练脚本和完整方案在https://github.com/RLHFlow/RLHF-Reward-Modeling中提供。

2.1 偏好数据集

遵循Pair-RM和LLaMA-2,该研究使用开源数据集的混合作为训练集。以下是对数据集的简要介绍:

  • HH-RLHF是一个成对偏好数据集,其中每个样本都伴随着一个对话历史和两个由早期的52B参数Claude模型编写的替代响应。响应的偏好由人类标注。
  • SHP来自Reddit,包括来自18个子版块的样本,如askacademia、askbaking、askengineers和changemyview。每个样本是一个Reddit帖子,其中包含一个问题/指令和一对顶层评论。一个评论比另一个评论更受Reddit用户青睐。所有偏好和响应都由人类提供。只使用得分比>2的样本,每个提示最多取5对。
  • HelpSteer。这个开源数据集包含提示、响应和五个人工标注的属性(helpfulness、correctness、coherence、complexity和verbosity),范围从0到4。提示使用模板生成和人工生成的混合方法生成,而响应由内部LLM生成。作者为每个提示生成最多4个响应,该研究可以基于它们构建成对比较。
  • PKU-SafeRLHF。这个数据集包含30k+专家比较数据。每个样本包括对一个问题的两个响应,以及分别针对helpfulness和safety的两个偏好信号。响应由开源聊天机器人生成,偏好信号通过14个危害类别多类分类的结果合并。
  • UltraFeedback)包含来自多样化资源(包括UltraChat、ShareGPT、Evol-Instruct、TruthfulQA、FalseQA和FLAN)的64k提示,作者使用从一组多样化的最先进开源LLM中采样的4个不同LLM为每个提示生成4个响应。偏好来自GPT-4,基于细粒度的标注指令,其中包含4个不同方面,即instruction-following、truthfulness、honesty和helpfulness。UltraFeedback的数据集收集策略也影响了许多后续工作。
  • UltraInteract是一个针对复杂推理任务设计的偏好数据集。作者为每个指令收集一个偏好树,指令是根,每个动作是一个节点。一个轨迹是一个从根到叶的路径,由一系列动作组成。成对的正确和不正确节点或轨迹用于偏好学习。
  • Distilabel-Capybara2是一个多轮对话的偏好数据集,其提示取自Daniele and Suphavadeeprasit,响应由开源LLM生成,偏好由GPT-4生成。
  • Distilabel-Orca3的收集方式与Capybara类似,但提示来自Lian et al. 。

LLM的训练高度依赖于数据。为了确保高质量的训练数据,该研究对使用的开源数据集进行过滤。这个过程移除了低质量和无意义的样本。此外,具有空回合或不正确标签(由数据集的其他特征暗示)的对话被删除。此外,在具有绝对分数的数据集中,边际较小的成对比较被排除,因为这些偏好信号往往是嘈杂的。这个过程大致删除了10%的数据。该研究总结了用于训练的开源数据集的统计数据,见表1,并在huggingface上准备了它们以及数据过滤脚本,可在https://huggingface.co/collections/RLHFlow/standard-format-preference-dataset-662eec0252e194d5d40c252a获得。
在这里插入图片描述
在这里插入图片描述

2.2 Bradley-Terry奖励模型和偏好模型

Bradley-Terry模型构建。该研究遵循先前的工作,使用SFT模型4初始化奖励模型。该研究将最后一层替换为线性头,以预测适合偏好学习的标量分数。奖励模型使用负对数似然损失函数进行训练,实现最大似然估计(MLE)。这个损失函数定义为:

L RM ( θ ) = − E x , a w , a l ∼ D log ⁡ σ ( r θ ( x , a w ) − r θ ( x , a l ) ) L_{\text{RM}}(\theta) = -\mathbb{E}_{x,a_w,a_l \sim \mathcal{D}} \log \sigma(r_\theta(x,a_w) - r_\theta(x,a_l)) LRM(θ)=Ex,aw,alDlogσ(rθ(x,aw)rθ(x,al)),

其中 a w a_w aw是优于 a l a_l al的偏好响应。该研究训练基于LLaMA-3-8B的奖励模型一个epoch,全局批量大小为512。学习率设置为 l r = 2 × 1 0 − 6 lr = 2 \times 10^{-6} lr=2×106,采用余弦学习率调度,预热比例为0.03。对于Gemma-2B-it,使用更大的学习率 1 0 − 5 10^{-5} 105

在这里插入图片描述

偏好模型构建。(成对)偏好模型接受一个提示 x x x和两个响应 a 1 , a 2 a_1,a_2 a1,a2作为输入,并预测 P ^ ( a 1 ≻ a 2 ∣ x , a 1 , a 2 ) \hat{P}(a_1 \succ a_2|x,a_1,a_2) P^(a1a2x,a1,a2)的概率。该研究遵循Zhao et al. ; Liu et al. ,利用LLM作为下一个token预测器的能力进行偏好建模。具体来说,对于给定的偏好对 ( x , a 1 , a 2 , A ) (x,a_1,a_2,A) (x,a1,a2,A),其中 A A A表示第一个响应是优选的,该对被格式化为一个指令跟随任务:

instruction = [CONTEXT] {x} [RESPONSE A] {a1} [RESPONSE B] {a2}, and label = A.

如果第二个响应是优选的,该研究将标签 A A A替换为 B B B。然后,该研究简单地将偏好建模视为一个指令跟随任务,在这些指令-标签对上微调模型。为了缓解位置偏差(偏好模型可能偏好给出在RESPONSE A位置的响应),响应的顺序在数据格式化期间是随机的。在推理过程中,该研究简单地使用解码 A A A的概率作为 P ^ ( a 1 ≻ a 2 ∣ x , a 1 , a 2 ) \hat{P}(a_1 \succ a_2|x,a_1,a_2) P^(a1a2x,a1,a2)

该研究训练基于LLaMA-3-8B的偏好模型一个epoch。样本被打包成长度为3072的块,使用全局批量大小128。学习率设置为 l r = 5 × 1 0 − 6 lr = 5 \times 10^{-6} lr=5×106,采用余弦学习率调度,预热比例为0.03。对于Gemma-2B-it,使用更大的学习率 1 0 − 5 10^{-5} 105。该研究顺便提到,可以在数据格式中包含详细的评分规则,以进一步改进偏好数据集,这将留待未来工作(Qin et al., 2023)。

2.3 评估结果

该研究考虑训练集的两个版本:

  • Mix1: HH-RLHF + SHP + UltraFeedback + Summarization(Stiennon et al., 2020)。
  • Mix2:表1中的所有数据集。

Mix1数据集类似于UltraFeedback的构建,带有一个额外的摘要数据集。相比之下,Mix2由更多的推理偏好对(数学和代码)和安全数据组成。该研究还考虑三种不同的方法来建模偏好信号,包括以LLM-as-a-judge方式提示、作为BT奖励模型MLE的奖励建模以及偏好模型。

该研究使用RewardBench评估模型,这是一个旨在评估奖励模型在四个类别中的能力的基准:聊天、聊天-困难、安全和推理。主要评估结果在表2中。很明显,没有明确训练,提示方法在所有指标上都不如BT模型和偏好模型。同时,偏好模型在与编码和数学相关的推理任务中优于BT模型。该研究还注意到,随着更多的数据,特别是在编码、数学和安全方面指定的数据,由mix2训练的奖励模型在安全和推理方面取得了比早期尝试版本更高的准确率。特别是,该研究在表2中使用Ultra-RM-13B作为参考模型,可以观察到,与安全和推理相关的额外数据(以及更强大的基础模型)在很大程度上促成了该研究奖励模型的优异性能。

在这里插入图片描述
在这里插入图片描述

奖励建模中的长度偏差。众所周知,由RLHF对齐的LLM通常给出更长的响应,奖励模型中也存在长度偏差,可能受到使用的偏好数据的影响。为了更好地理解这种偏差,该研究从提示集中随机抽取2K个提示,并使用SFT模型为每个提示生成8个响应(见第3节的详细信息)。然后,该研究计算响应的长度和奖励,并在图5中绘制它们之间的Pearson相关系数的热图。显然,两个奖励模型在某种程度上都偏向于更长的响应。相比之下,UltraRM-13B表现出更强的偏差,因为该研究观察到UltraRM-13B(左图)的平均Pearson相关系数为0.19,而基于mix2训练的BT奖励为0.06(右图)。这可能部分是由于使用了额外的Capybara、OpenOrca和UltraInteract,其优选响应比被拒绝的响应更短。该研究将在第4节回到奖励模型影响的消融研究。

该研究顺便提到,在文献中,对不同类型的信号进行单独建模,并在随后的策略优化阶段战略性地合并它们也是常见的,这将留待未来工作。

3 迭代策略优化

该研究在本节中开发在线迭代RLHF的主要算法,包括理论见解和实施细节。特别地,算法将以直接偏好学习的风格设计,以实现稳定和高效的训练。

3.1 有监督微调

该项目使用的基础模型是LLaMA-3-8B。为了确保项目的可复现性和开放性,该研究自行执行SFT以获得初始策略 π 0 \pi_0 π0。该研究收集了一组高质量的指令数据集用于SFT,例如ShareGPT、SlimOrca、MathInstruct和Evol-Instruct(完整列表见附录)。训练以 2 × 1 0 − 5 2 \times 10^{-5} 2×105的学习率进行一个epoch。采用余弦调度器,全局批量大小设置为32,预热比例为0.03。为了加速训练,该研究遵循Diao et al. (2023); Tunstall et al. (2023)打包样本并使用块大小8192。该研究使用来自TRL的SFT-Trainer,详细方案可在https://github.com/RLHFlow/Online-RLHF获得。

3.2 迭代直接偏好学习:理论见解和算法原理

该研究在算法1中为在线迭代RLHF提供主要算法框架,并总结关键原则和算法思想如下。

混合批量学习。该研究制定了一个稍微更一般的框架,将初始离线数据集与训练期间收集的在线数据结合起来,因此得名混合学习,类似于Claude(Bai et al., 2022a)和LLaMA-2(Touvron et al., 2023)的方案。此外,为了缓解训练和部署大型LLM的计算成本,该研究使用大批量大小 m m m进行稀疏更新。

非对称结构以平衡开发和探索。该框架还具有非对称结构,因为该研究将两个代理分为主代理和增强器。

  • 主代理旨在学习 π ∗ \pi^* π。具体来说,对于每次迭代,第一个代理,称为主代理,始终在历史数据的MLE r MLE r_{\text{MLE}} rMLE下采用最优策略,这可以看作是对迄今为止收集的信息的充分利用;
  • 增强器旨在协助主代理的学习。由于主代理仅利用历史数据,因此只有在该研究能够从新收集的在线数据或离线数据 D off \mathcal{D}_{\text{off}} Doff提供足够覆盖(在实践中不太可能成立,如第1.1节所讨论)时,它才有效。因此,增强器在相对于主代理策略 π t 1 \pi_t^1 πt1存在更多不确定性的方向上探索(由 Γ t m ( λ , π t 1 , π ′ ) \Gamma_t^m(\lambda,\pi_t^1,\pi') Γtm(λ,πt1,π)衡量),同时与 π t 1 \pi_t^1 πt1保持适度的KL散度。

当应用战略探索方法时,该研究有以下理论保证。

在这里插入图片描述

定理1。对于任何精度参数 ϵ > 0 \epsilon > 0 ϵ>0,当批量大小 m = O ~ ( d e ϵ 2 ) m = \tilde{O}(\frac{d_e}{\epsilon^2}) m=O~(ϵ2de)并适当选择其他超参数时,那么,以高概率,在最多 T = O ~ ( d e ) T = \tilde{O}(d_e) T=O~(de)次迭代后,该研究可以找到一个 t 0 ∈ [ T ] t_0 \in [T] t0[T],使得

J ( π ∗ ) − J ( π t 0 ) + η E x t 0 ∼ d 0 [ D KL ( π ∗ ( ⋅ ∣ x t 0 ) ∥ π t 0 ( ⋅ ∣ x t 0 ) ) ] ≲ ϵ J(\pi^*) - J(\pi_{t_0}) + \eta \mathbb{E}_{x_{t_0} \sim d_0}[D_{\text{KL}}(\pi^*(\cdot|x_{t_0}) \| \pi_{t_0}(\cdot|x_{t_0}))] \lesssim \epsilon J(π)J(πt0)+ηExt0d0[DKL(π(xt0)πt0(xt0))]ϵ,

其中 J ( π ) = E x ∼ d 0 [ E a ∼ π ( ⋅ ∣ x ) [ r ∗ ( x , a ) ] − η D KL ( π ( ⋅ ∣ x ) ∥ π 0 ( ⋅ ∣ x ) ) ] J(\pi) = \mathbb{E}_{x \sim d_0} [\mathbb{E}_{a \sim \pi(\cdot|x)} [r^*(x,a)] - \eta D_{\text{KL}}(\pi(\cdot|x) \| \pi_0(\cdot|x))] J(π)=Exd0[Eaπ(x)[r(x,a)]ηDKL(π(x)π0(x))]是KL正则化值。这里 O ~ \tilde{O} O~隐藏了一些对数因子, d e d_e de是RLHF问题的复杂度度量。特别地,如果奖励函数可以嵌入到特征映射 ϕ : X × A → R d \phi: \mathcal{X} \times \mathcal{A} \rightarrow \mathbb{R}^d ϕ:X×ARd中线性的 d d d维空间,那么 d e = d d_e = d de=d

3.3 实践实施细节

现在该研究将重点从理论见解转移到实践实施。该研究在图6中提供了实现的说明。

MLE策略。由于主代理只利用数据,该研究可以在历史数据上运行DPO来近似 r MLE r_{\text{MLE}} rMLE下的最优策略: π t MLE \pi_t^{\text{MLE}} πtMLE。该研究注意到,虽然由于其简单性,该研究在这里使用DPO,但算法1可以通过将其与任何预言机算法(例如PPO和InfoNCA(Chen et al., 2024a))相结合来实现,这些算法是KL正则化优化问题的合理近似。

探索策略。主要挑战在于选择增强器策略进行探索。回想一下,该研究的目标是找到一个增强器策略,从以下策略子集中最大化相对于主代理的不确定性:

π ~ ∈ Π t = { π ′ ∈ Π : η ⋅ E x ∼ d 0 D KL ( π ( ⋅ ∣ x ) , π t 1 ( ⋅ ∣ x ) ) ≤ Γ t m ( λ , π t 1 , π ′ ) } \tilde{\pi} \in \Pi_t = \left\{\pi' \in \Pi: \eta \cdot \mathbb{E}_{x \sim d_0} D_{\text{KL}}(\pi(\cdot|x),\pi_t^1(\cdot|x)) \leq \Gamma_t^m(\lambda,\pi_t^1,\pi') \right\} π~Πt={πΠ:ηExd0DKL(π(x),πt1(x))Γtm(λ,πt1,π)}.

不幸的是,除了线性情况,不确定性估计器没有解析形式。但该研究可以得出的主要见解是最大化与 π t 1 \pi_t^1 πt1的策略差异,同时保持适度的KL散度。这激励该研究使用 π t 1 \pi_t^1 πt1的模型变体。该研究讨论了一些流行的启发式实现。

  • 调整温度和训练步骤。在Claude项目中,作者选择使用具有不同训练步骤的模型作为 ( π t 1 , π t 2 ) (\pi_t^1,\pi_t^2) (πt1,πt2)。例如,如果该研究总共运行PPO 2个epoch,该研究可以将 π t 1 \pi_t^1 πt1作为在第一个epoch结束时保存的模型,将 π t 2 \pi_t^2 πt2作为在第二个epoch结束时保存的模型。此外,LLaMA-2项目调整 π t 1 \pi_t^1 πt1的采样温度以诱导 π t 2 \pi_t^2 πt2。这些修改在模型中引入了多样性,并促进了探索。

  • 拒绝采样是另一种流行的基于集成的探索方法。在LLM的背景下,它通常限于 n n n个最佳的采样。具体来说,该研究通过 π t 1 \pi_t^1 πt1为每个提示独立采样 n n n个响应,然后使用偏好/奖励函数对响应进行排序,并将奖励最高的响应作为最终输出。换句话说,该研究将 π t 2 \pi_t^2 πt2作为 π t 1 \pi_t^1 πt1 n n n个最佳变体。通过这种方式, π t 2 \pi_t^2 πt2扩大了 π t 1 \pi_t^1 πt1之间的边界,并提供了探索。同时,在这种情况下,两个策略之间的KL散度以 log ⁡ n − n − 1 n \log n - \frac{n-1}{n} lognnn1为上界,通常远优于这个保守估计。

在该研究的实验中,该研究使用DPO来近似计算预言机,并使用开源包TRL5实现DPO。该研究在历史数据上用参考模型 π 0 \pi_0 π0(SFT模型)运行DPO 2个epoch,以获得MLE策略 π t MLE \pi_t^{\text{MLE}} πtMLE。该研究使用余弦学习率调度器,峰值学习率为5e-7,预热比例为0.03。该研究使用全局批量大小128,使用KL系数 η = 0.1 \eta=0.1 η=0.1。为了加速训练,该研究不像Bai; Xiong那样在每次迭代时从 π 0 \pi_0 π0重新开始,而是使用上一次迭代的模型作为初始检查点,并使用 π 0 \pi_0 π0作为参考模型。通过这种选择,该研究没有看到性能退化,而且节省了一半的训练时间。

为了促进探索,该研究将温度调整与拒绝采样策略相结合,其中 n = 8 n=8 n=8。该研究没有固定 π t 1 = π t MLE \pi_t^1 = \pi_t^{\text{MLE}} πt1=πtMLE(如置信集的中心)并单独优化 π t 2 \pi_t^2 πt2成为 π t MLE \pi_t^{\text{MLE}} πtMLE的8个最佳变体,而是将 π t 1 \pi_t^1 πt1 π t 2 \pi_t^2 πt2分别作为由 π t MLE \pi_t^{\text{MLE}} πtMLE诱导的8个最佳策略和8个最差策略。换句话说,该研究将由奖励模型排序的最佳响应和最差响应作为偏好对。在这种情况下,该研究联合优化两个策略以最大化它们的差异(由不确定性衡量),这在实践中往往更有效,并享有定理1中所述的相同理论保证。这种选择类似于Hoang Tran; Pace et al. ; Yuan et al. ; Xu et al. 。该研究还删除了 π t 1 \pi_t^1 πt1 π t 2 \pi_t^2 πt2给出相同响应的对,这意味着这个方向上的不确定性已经很小。对于这一轮实验,该研究仍然使用作为BT奖励模型MLE训练的奖励函数来对响应进行排序,原因如下。首先,为了对 n n n个响应进行排序,使用奖励模型的复杂度在 n n n中是线性的,而使用成对偏好模型则复杂得多。其次,在早期实验中,该研究在迭代RLHF中观察到显著的长度偏差。因此,该研究想探索缓解长度偏差的策略,用响应的长度惩罚奖励值相对更容易。最后,除了推理任务,BT奖励模型与偏好模型相当,对于该研究的目标可能已经令人满意。该研究将BT奖励模型和偏好模型之间更全面的比较留待未来研究。

提示集和数据生成。该研究从UltraFeedback、HelpSteer、OpenOrca、UltraInteract、Capybara和DIBT-10K6收集提示,并在此处准备完整的提示集7。在该研究的实验中,该研究使用60K提示的子集,迭代三次,因此每次迭代使用20K提示生成20K x 8个响应。为了加速数据生成,该研究使用VLLM进行推理。该研究将最大生成长度设置为2048,使用采样温度1.0/0.7,没有任何top-k/top-p策略。为了更直观地理解该研究的提示集合,该研究在Nomic Atlas8上提供了可视化图,使用nomic-embed-text-v1.5文本嵌入模型生成。

在这里插入图片描述

4 模型评估

4.1 基准测试

该研究通过标准基准测试评估模型,包括AlpacaEval-2、MT-Bench和Chat-Arena-Hard。

  • AlpacaEval-2:这个基准测试专注于单轮对话,包括805个涵盖各种主题的测试提示。模型与GPT-4-Preview(11/06)进行头对头比较以计算获胜率。使用相同的GPT-4模型作为评判。为了缓解GPT-4的长度偏差,还提出了一个长度控制变体。
  • MT-Bench:这个基准测试是一个多轮基准测试,包括来自8个不同领域的160个测试提示。模型应首先回答初始问题,然后回答预定义的后续问题。然后由GPT-4模型以1-10的量表对模型的响应进行评分,最终得分计算为两轮的平均分。
  • Chat-Arena-Hard:该基准测试包括来自聊天机器人竞技场(一个用于LLM评估的众包平台)实时数据的500个测试提示。这些提示评估模型在特异性、领域知识、复杂性、解决问题、创造力、技术准确性和实际应用方面的能力。除了与人类偏好的一致性外,与AlpacaEval-2和MT-Bench相比,Chat-Arena-Hard进一步具有不同模型之间明显的可分离性。

在这里插入图片描述
在这里插入图片描述

该研究还使用学术基准测试度量生成模型的能力,包括GSM-8K、MMLU、HumanEval、TruthfulQA、ARC和MBPP。这些基准测试评估模型在编码、推理和一般知识方面的能力。特别是,众所周知,RLHF对齐可能会在推理、校准(提供准确的置信度估计)和真实性能力(生成准确和真实的响应)方面引入性能退化,这在文献中也被称为对齐税。因此,在这些基准测试上评估该研究的模型对于理解迭代RLHF对这些特定方面的影响至关重要。

该研究在表3中总结了该研究在该项目中使用的基准测试。

4.2 主要结果

在线迭代RLHF显著提高对话质量。该研究使用AlpacaEval-2、MT-Bench和Chat-Arena-Hard评估模型的对话能力(结果见表4)。与其他参数少于10B的开源模型相比,该研究的模型SFR-Iterative-DPO-LLaMA-3-8B-R在对话和指令跟随基准测试中以显著优势超过了它们。值得注意的是,该研究使用迭代DPO训练的模型始终优于普通离线DPO(DPO基线)。这证明了在线迭代RLHF的优势。此外,该研究的模型优于由DPO或PPO对齐且比该研究的基础模型大得多的Tulu-2-DPO-70B和GPT-3.5-turbo-1106。这些结果表明,在线迭代RLHF可以有效调整模型响应的风格,从而提高对话质量。

在这里插入图片描述

学术任务。由于RLHF通常会以负面方式影响模型的推理和校准能力,该研究将模型在学术基准测试上的性能(表5)与SFT检查点和其他基线进行比较。与SFT基线相比,该研究没有观察到显著的性能退化。有趣的是,该研究迭代DPO对齐的模型甚至在GSM-8K、MMLU、TruthfulQA和ARC基准测试中优于SFT模型。该研究认为,模型的这些增强能力是在预训练阶段和SFT阶段注入的,迭代DPO帮助它更有效地利用它们。这是因为在迭代RLHF中使用的60K对齐数据比在前两个阶段使用的数据量级要小得多。

备注1。基于一些初始检查点和更多epoch的RLHF对齐模型可以接近甚至超过GPT-4和Claude等最先进的闭源模型在基准测试上的表现。然而,该研究注意到,该研究在解释这些结果时应该更加谨慎,因为基准测试的测试集是有限的,可能不足以捕捉复杂的现实场景。此外,小模型过拟合基准测试的可能性增加可能导致基准测试仿冒,这意味着得分高的模型的实际能力仍然有限。特别是,虽然可以在基准测试上获得更高的结果(例如,在LC AlpacaEval-2中为44.84,在Chat-Arena-hard中为35.7,但学术基准测试的性能显著下降),该研究通过人工评估在一些随机选择的测试提示上展示了当前模型。

在这里插入图片描述

通过长度惩罚过滤数据的消融研究。该研究观察到,对齐模型的响应长度明显长于SFT基线(可能是由于图5所示的奖励模型偏差)。为了解决这个问题,该研究通过在奖励函数中引入长度惩罚进行了一项消融研究:

r ~ ( x , a ) = r ^ ( x , a ) − λ ∣ a ∣ \tilde{r}(x,a) = \hat{r}(x,a) - \lambda|a| r~(x,a)=r^(x,a)λa, (8)

其中 ∣ a ∣ |a| a是响应的字符数。该研究将使用这种惩罚训练的模型与普通版本进行比较,结果如表6所示。正如预期的那样,长度惩罚有效地缓解了长度偏差,导致响应更短。特别是,使用长度惩罚训练的模型在长度控制AlpacaEval-2获胜率方面取得了更优异的成绩,并在一些学术基准测试中取得了更好的结果。这证明了缓解长度偏差的优势,并激励该研究进一步研究奖励建模中的冗长问题。最后,该研究注意到,使用长度惩罚训练的模型在Chat-Arena-Hard基准测试中表现更差。这可能表明,该研究还需要一个长度控制版本的基准测试,以提供更合理的评估。

表6: 在线迭代RLHF中奖励模型和长度惩罚影响的消融研究。响应长度是在Chat-Arena-Hard基准测试的响应上平均的。
在这里插入图片描述

奖励模型的影响。该研究调查了在线迭代RLHF中使用的奖励(偏好)模型的影响。该研究的模型性能与使用UltraRM-13B训练的模型进行比较,消融研究结果总结在表6中。该研究观察到,使用UltraRM-13B训练的模型比该研究的模型具有更长的响应,这与图5所示的更强偏差一致。考虑到对齐税,学术基准测试的准确性下降幅度大于该研究的模型。一个重要原因是UltraRM-13B没有很好的推理能力(见表2),因此它可能无法为与推理相关的对话提供适当的偏好信号。例如,在编码任务中,模型可能偏向于一些带有许多注释的响应,这些响应往往非常有帮助,但在人类评估时确实无用。值得注意的是,使用UltraRM-13B训练的模型在Chat-Arena-Hard获胜率上高于该研究的简洁版本,这也支持了Arena-Hard基准测试的冗长偏差。在训练过程中,该研究还观察到,使用UltraRM-13B训练的模型实现了更低的训练损失,这可能表明UltraRM-13B的信号更加一致,易于学习。相比之下,由于复杂的偏好信号,该研究奖励模型下的收敛速度较慢。

5 结语与未来方向

在本技术报告中,该研究研究了在线迭代RLHF的工作流程,该工作流程利用策略采样和来自代理偏好模型的外部偏好信号,该模型在一组多样化的开源偏好数据集上训练。生成的模型(称为SFR-Iterative-DPO-LLaMA-3-8B-R)在标准基准测试中表现出色,该报告提供了详细的说明以复现结果,包括数据、代码、模型和超参数选择。

仍有许多潜在的方向值得探索。首先,正如该研究在表6中所看到的,迭代RLHF严重依赖偏好信号的质量。在该项目中,该研究使用在一组多样化的开源数据集上训练的代理标量奖励模型来近似人工反馈。如果该研究可以设计一个更有效的策略来建模不同类型的偏好信号,如多头奖励和基于分类的激活策略,这将是有趣的。其次,虽然拒绝采样似乎是一个很好的启发式探索策略,但如果该研究可以设计更有效的探索方法,这仍然是有趣的。最后,大多数RLHF模型倾向于用更长的响应来回答提示。这种长度偏差在迭代RLHF框架中进一步放大。该研究通过在奖励数据过滤中利用额外的长度惩罚,对该问题进行了初步研究。如果该研究可以通过额外的算法设计或后训练技术进一步缓解这一问题,这将是有趣的。

该研究希望该项目的结果能够推进在线迭代RLHF的方向,并有助于训练更强大、更大的开源LLMs。

B 附加实验细节

SFT数据列表。该研究收集开源指令微调数据用于SFT模型训练。包括以下数据:ShareGPT、Evol-Instruct、SlimOrca、MathInstruct、Magicoder-Evol-Instruct、GPT4-LLM、OrcaMath、GPTeacher、UltraInteract。

离线普通DPO。该研究使用Nectar数据集进行离线DPO。运行1个epoch,批量大小128,学习率5e-7,余弦衰减调度器。

附加图。该研究还将性能可视化为图8。

在这里插入图片描述

(图8:该研究模型和LLaMA-3-8B-inst的评估。)

该研究详细描述了从人类反馈中进行强化学习(RLHF)的整个过程,包括算法设计、数据收集和模型评估等多个方面。

以下是我的一些观感:

  1. 详细而系统的阐述:
    • 该研究对RLHF的基础理论、偏好模型的构建以及迭代策略优化等内容进行了深入的讲解,展示了扎实的理论基础和实践经验。
    • 对关键概念和定义如偏好Oracle和Bradley-Terry模型进行了详细说明,使读者能够清晰理解相关理论背景。
  2. 数据集和实验设计:
    • 该研究使用了多个开源数据集进行训练和评估,确保了实验的广泛性和可靠性。
    • 具体列出了训练参数和方法(如批次大小、学习率、调度器等),使得实验结果具有可重复性。
  3. 在线迭代RLHF的优势:
    • 该研究展示了在线迭代RLHF在提升对话质量方面的显著效果,并通过多个基准测试数据验证了其优越性。
    • 特别是在对比其他少于10B参数的开源模型时,显示了该方法在对话和指令跟随基准上的显著优势。
  4. 未来研究方向:
    提出了未来的研究方向,包括更广泛的数据集、更高效的训练方法、改进的奖励模型以及跨领域应用,为后续研究提供了明确的路线图。
  5. 全面的致谢和开源精神:
    该研究对参与项目的团队和支持组织表示了感谢,展现了团队合作和开源精神的重要性。

该研究提供了一个全面、详细且具有指导意义的RLHF实施框架,对从事相关研究和开发的人员具有很高的参考价值。通过对理论和实践的结合,展示了如何在大型语言模型中有效地整合人类反馈,从而提升模型的性能和用户体验。

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

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

相关文章

【微信小程序开发(从零到一)【婚礼邀请函】制作】——任务分析和效果实现的前期准备(1)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

第188题|幂级数的展开的常规方法(一)|武忠祥老师每日一题

解题思路:求幂级数有两种方法,一种是直接法,这里显然不太好求,还有一种是利用现有展开式展开,我们看到分母 可以分解因式成(x6)(x-1),进而拆解成一次式。拆解成一次式的目的是为了使用一下两个展开式。 第一步&#xf…

51单片机小车制造过程记录

首先感谢B站up主好家伙vcc的资料。 这次小车做出来虽然资料挺全的,但中间还是犯了很多不该犯的错误。 第一个,物料这次我们搞错了挺多,最离谱的应该是最小系统板都错了。 资料里用的stm32f103c8t6,我们开始买成了stm32f103c8t6。…

深度学习:光流估计新范式

0.概述 在这篇文章中,我们将讨论两种基于深度学习的光流运动估计方法。FlowNet是第一个用于计算光流的CNN方法,RAFT是当前最先进的估计光流的方法。我们还将看到如何使用作者提供的经过训练的模型来使用PyTorch对新数据进行推断。 1. FlowNet FlowNet…

银行核心业务详解

银行的核心业务是其运营和盈利的基础,下面我将详细介绍这些核心业务: 存款业务:存款业务是银行最基本的资金来源之一。银行通过吸收公众的存款,为贷款和投资活动提供资金。存款业务分为活期存款、定期存款、储蓄存款等多种形式。…

DDoS攻击揭秘与网站防护策略

DDoS攻击(分布式拒绝服务攻击)是一种利用大量被控制的计算机或智能设备(如僵尸网络)对目标网站或服务器发起大量无效请求或数据流量,从而导致目标系统资源耗尽、服务崩溃或无法处理正常请求的攻击方式。这种攻击通常是…

深入解析Linux逻辑卷管理器(LVM)

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、Linux的起源与发展 2、什么是逻辑卷管理器&…

考研数学|李林《880》PK李永乐《660》,你用对了吗?

建议先在强化之前做660,然后在强化的时候再做880。 660整体难度属于基础阶段到强化阶段。而且是选填部分的题目,所以还是要做一些其他题 然后说一下推荐的习题册:基础不好先做1800、强化之前660,强化可选880/1000题。但是传统习题…

ABAP ALSM_EXCEL_TO_INTERNAL_TABLE 导入Excel的几个问题

1、没有办法多页签 2、单元格50个字符限制,每个单元格仅读取50个字符 3、Excel单元格总不能有不可见字符换 eg 回车,换行 # 等否则读取的结果会加上引号

【HarmonyOS】Stage 模型 - 应用配置文件

如图所示: Stage 模型应用配置文件主要有两类: 全局配置文件。放在 AppScope 目录下,app.json5。用来配置应用全局的信息。模块配置文件,放在每个模块里,module.json5。用来配置模块的信息。 一、全局配置文件 示…

1709 ssm互联网消费信贷系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java ssm互联网消费信贷系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源 代码和数据库,系统主要…

AI图书推荐:ChatGPT等生成式AI在高等教育中的应用

自2022年11月以来,ChatGPT及其在高等教育各个层面的影响已成为所有教育对话的核心内容。Chan和Colloton所著的书籍是首批全面探讨ChatGPT与生成式人工智能(GenAI)在高等教育中应用及影响的作品之一。 该书深入研究了针对专业环境定制的AI素养…

单片机开发板上外设资源讲解

单片机开发电路板上简单外设 开发板上各基础外设LED灯按键:数码管介绍液晶屏矩阵键盘扫描的概念LED点阵屏实时时钟蜂鸣器存储器 温度传感器&单总线 开发板上各基础外设 LED灯 中文名:发光二极管 外文名:Light Emitting Diode 简称&…

21、G1分代回收究竟如何让传统方法黯然失色?

21.1、前文回顾 在上一篇文章中,我们详细解析了G1垃圾回收器的设计思想。其核心理念在于将内存分割为众多小的Region,并针对新生代和老年代各自分配一部分Region。在垃圾回收过程中,G1会优先挑选那些能实现最短停顿时间以及最多回收对象的Region,以尽可能确保达到预设的垃…

vsCode 设置上下级文件夹目录分离展示?

默认情况下,vsCode目录文件夹会使用/合并展示在一行,这样视觉上看着并不直观,设置目录文件分离展示方法如下: 1、点击左下角设置图标,点击setting; 2、搜索栏输入compact; 3、取消勾选第一个选…

每日5题Day1 - LeetCode 1-5

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:1. 两数之和 - 力扣(LeetCode) class Solution {public int[] twoSum(int[] nums, int target) {//返回值为Int[]数组,所以先初…

pytorch 2.0 多线程并行,导致GPU利用100%,卡住

背景: 程序中有pytorch模型两个,yolov5,crnn。 之前无论是pth格式,还是TRT格式,并行的都没有问题。 最近发现,多线程ThreadPoolExecutor(max_workers2)调用的时候,即单个进程内处理一张图像&a…

Electron+Vue+pyinstaller服务打包

electron环境安装略 1. electron的入口文件配置test.js, 需要在package.json 配置文件中指定main: src/test.js const { app, BrowserWindow } require(electron)const createWindow () > {const win new BrowserWindow({width: 800,height: 600})// win.loadFile(inde…

【现代C++】三路比较运算符

C20引入了三路比较运算符&#xff08;也称为太空船运算符&#xff0c;<>&#xff09;&#xff0c;它允许同时比较两个值&#xff0c;并返回它们的相对顺序。这个运算符简化了需要定义多个比较运算符&#xff08;如、!、<、<、>、>&#xff09;的类的代码&…

如何在 Windows 11/10 中恢复已删除的分区

在将重要数据存储在计算机上之前&#xff0c;许多用户会创建分区以更好地组织和管理他们的文件。此分区可以在内部硬盘驱动器或外部存储设备上创建。但是&#xff0c;有时可能会意外删除分区。如果发生这种情况&#xff0c;您可能想知道是否可以在不丢失任何信息的情况下恢复已…