AdaReasoner: Adaptive Reasoning Enables More Flexible Thinking
AdaReasoner: Adaptive Reasoning Enables More Flexible Thinking这篇文章介绍了AdaReasoner,一个旨在提高大型语言模型(LLM)在复杂推理和问题解决任务中的灵活性和性能的自适应框架。AdaReasoner通过动态调整推理配置(如温度、推理步骤等)来优化模型的表现,这些配置由一个经过强化学习(RL)训练的代理动态调整。文章强调了现有方法(如Chain-of-Thought [CoT] 和 Tree-of-Thought [ToT])在处理不同类型任务时的局限性,并提出AdaReasoner能够通过自适应配置和自反思机制来克服这些局限。
这篇博客仅简要概括其方法上的创新点,不包含文章的理论分析部分。
3. AdaReasoner
3.1 动机
尽管链式思维(CoT)和其他类似的大型语言模型(LLM)推理方法已经被广泛研究并证明在许多任务中有效,但它们仍然无法在所有类型的问题上实现理想的表现。例如,像笑话生成或隐喻解释这样的任务通常需要发散性和创造性的推理,而现有的方法在这些任务上表现不佳。AdaReasoner 通过使用强化学习(RL)训练的代理动态调整推理配置(如温度、推理步骤和推理指令),结合自反思机制和强大的选择机制,提高了模型的灵活性和性能。
3.2 问题定义
AdaReasoner 的目标是自适应地找到给定问题 𝑞 𝑞 q 的最有效超参数配置 𝑎 𝑎 a,使得 LLM(记为 Φ Φ Φ)生成正确的推理答案 Φ ( 𝑞 ∣ 𝑎 ) Φ(𝑞|𝑎) Φ(q∣a)。更具体地,配置 𝑎 𝑎 a 是一个三维向量,每个元素对应一个超参数:
- 𝑎 𝑡 𝑎_𝑡 at:生成温度
- 𝑎 𝑝 𝑎_𝑝 ap:推理指令格式
- 𝑎 𝑠 𝑎_𝑠 as:推理步骤数
3.3 动作选择过程
AdaReasoner 的动作选择过程通过将策略分解为独立的组件来实现,每个组件负责一个特定的超参数设置(如温度、推理步骤和推理指令)。这种分解使得优化空间从乘法减少到加法,从而提高了优化效率。
3.3.1 动作空间定义
- 推理步骤 (Reasoning Steps) 𝒜𝑠: 动作空间定义为 {𝑥 | 𝑥 ∈ Z, 3 ≤ 𝑥 ≤ 10},即推理步骤数在3到10之间。
- 温度 (Temperature) 𝒜𝑡: 动作空间定义为 {0.0 + 0.1𝑘 | 𝑘 ∈ Z, 0 ≤ 𝑘 ≤ 10},即温度值在0.0到1.0之间,步长为0.1。
- 推理指令 (Reasoning Instructions) 𝒜𝑝: 动作空间定义为 {base + variation},即每个动作对应一个基础指令和一个变体的组合。
3.3.2 动作选择
AdaReasoner的神经架构如图2所示,输入查询问题在经过嵌入后,会经历三次动作选择,然后被发送到LLMs进行推理以生成答案。虽然嵌入是由预训练模型(如预训练的BERT模型 [Wolf et al., 2020])执行的,但AdaReason的可训练神经网络参数由三个并行通道组成,每个通道对应一个动作,以及一个共享的公共层。
- 输入问题的嵌入 Embed ( q ) \text{Embed}(q) Embed(q) 首先通过公共层,得到 h = f θ c ( Embed ( q ) ) h = f_{\theta_c}(\text{Embed}(q)) h=fθc(Embed(q)),其中 θ c \theta_c θc 是公共层的参数(例如,一个全连接的MLP), h h h 捕获了确定动作所需的特征。
- 然后 h h h 被发送到每个通道,动作选择如下:
a p ∼ π p ( ⋅ ∣ h ) = f θ p ( h ) , a t ∼ π t ( ⋅ ∣ h ) = f θ t ( h ) , a s ∼ π s ( ⋅ ∣ h ) = f θ s ( h ) a_p \sim \pi_p(\cdot | h) = f_{\theta_p}(h), \quad a_t \sim \pi_t(\cdot | h) = f_{\theta_t}(h), \quad a_s \sim \pi_s(\cdot | h) = f_{\theta_s}(h) ap∼πp(⋅∣h)=fθp(h),at∼πt(⋅∣h)=fθt(h),as∼πs(⋅∣h)=fθs(h)
3.4 探索策略
通过将每个问题的配置选择问题建模为多臂赌博机(Multi-Armed Bandit, MAB)问题,我们的目标是在少样本训练设置下设计一种有效的探索策略。然而,由于奖励是从LLM输出间接得出的,并且该过程不是在线学习场景,因此标准的MAB策略(如Upper Confidence Bound (UCB) [Sutton and Barto, 2018])变得不切实际。此外,对每个上下文𝑞评估所有配置在计算上是不可行的,特别是考虑到由LLM响应引起的噪声和隐式奖励景观。因此,广泛探索配置空间的同时优先选择高奖励动作变得至关重要,Boltzmann探索提供了一个有效的解决方案 [Pan et al., 2019],因为它允许代理根据估计的奖励概率选择动作。
具体来说,对于每个动作( a t a_t at, a s a_s as或 a p a_p ap),我们估计其所有可能值(在 A t A_t At, A s A_s As 或 A p A_p Ap中)的选择概率:
P ( a i ) = exp ( Q ( a i ) τ ) ∑ a j ∈ A exp ( Q ( a j ) τ ) (3) P(a_i) = \frac{\exp\left(\frac{Q(a_i)}{\tau}\right)}{\sum_{a_j \in \mathcal{A}} \exp\left(\frac{Q(a_j)}{\tau}\right)} \tag{3} P(ai)=∑aj∈Aexp(τQ(aj))exp(τQ(ai))(3)
其中, Q ( a i ) Q(a_i) Q(ai) 是策略网络 f θ f_\theta fθ 输出层中动作 a i a_i ai 的logit分数。Boltzmann探索中的温度参数 τ \tau τ 控制探索与利用之间的权衡:较高的 τ \tau τ 促进探索,较低的 τ \tau τ 有利于利用。文章以指数方式退火 τ \tau τ,即 τ t = τ 0 ⋅ α t \tau_t = \tau_0 \cdot \alpha^t τt=τ0⋅αt,其中 t ≤ T t \leq T t≤T,这使得策略能够逐渐从广泛的探索转向可靠的配置选择和精细优化。
3.5 强化学习训练
为了使AdaReasoner能够学习最有效的配置策略,文章采用了一个预训练的奖励模型来评估推理配置的有效性。该模型通过将生成的答案与训练数据中的参考答案进行比较,提供反馈以指导代理的学习,使其能够在有限的指导下(即少样本学习)高效地获取有效的配置。为了促进探索和提高泛化能力,文章采用了Boltzmann探索机制,使代理能够在训练过程中更有效地探索和优化配置。AdaReasoner 使用强化学习(RL)算法进行训练,具体使用的是REINFORCE算法。
3.5.1 训练算法
Algorithm 1: AdaReasoner Algorithm
3.5.2 目标函数
AdaReasoner 的目标函数 𝐽 ( Θ ) 𝐽(Θ) J(Θ) 定义为:
𝐽 ( Θ ) = E 𝑞 ∼ 𝐷 E 𝑎 ∼ Π Θ ( ⋅ ∣ 𝑞 ) [ 𝑟 ( Φ ( 𝑞 ∣ 𝑎 ) , 𝑅 ) ] 𝐽(Θ) = \mathbb{E}_{𝑞∼𝐷} \mathbb{E}_{𝑎∼ΠΘ(·|𝑞)} \left[ 𝑟(Φ(𝑞 | 𝑎), 𝑅) \right] J(Θ)=Eq∼DEa∼ΠΘ(⋅∣q)[r(Φ(q∣a),R)]
在AdaReasoner的RL设置中,奖励被归一化到 [0, 1] 范围,策略使用平滑参数化(如应用于线性logits的softmax函数)。这使得目标函数 𝐽 ( Θ ) 𝐽(Θ) J(Θ) 是 𝐿 𝐿 L-平滑的,即目标函数的梯度变化不会太剧烈,基于采样的梯度估计具有有界的方差。形式上,存在一个常数 𝐿 > 0 𝐿 > 0 L>0,使得对于所有 Θ Θ Θ 和 Θ ′ Θ' Θ′:
∥ ∇ 𝐽 ( Θ ) − ∇ 𝐽 ( Θ ′ ) ∥ ≤ 𝐿 ∥ Θ − Θ ′ ∥ \| \nabla 𝐽(Θ) - \nabla 𝐽(Θ') \| \leq 𝐿 \| Θ - Θ' \| ∥∇J(Θ)−∇J(Θ′)∥≤L∥Θ−Θ′∥
3.5.3 损失函数
每个头的损失函数定义为:
L 𝑗 = − 𝑟 log Π θ 𝑗 ( 𝑎 ∣ 𝑞 , Φ ) ℒ𝑗 = -𝑟 \log Π\theta_𝑗 (𝑎 | 𝑞,Φ) Lj=−rlogΠθj(a∣q,Φ)
总损失函数为:
L = ∑ 𝑗 ∈ { 𝑝 , 𝑡 , 𝑠 } L 𝑗 ℒ = \sum_{𝑗∈\{𝑝,𝑡,𝑠\}} ℒ𝑗 L=j∈{p,t,s}∑Lj
梯度通过链式法则计算,共享层的梯度聚合为:
∇ θ 𝑐 L = ∑ 𝑗 ∈ { 𝑝 , 𝑡 , 𝑠 } ∇ θ 𝑐 L 𝑗 \nabla_{\theta_𝑐} ℒ = \sum_{𝑗∈\{𝑝,𝑡,𝑠\}} \nabla_{\theta_𝑐} ℒ𝑗 ∇θcL=j∈{p,t,s}∑∇θcLj
更新参数:
θ 𝑐 ← θ 𝑐 − η ∇ θ 𝑐 L \theta_𝑐 ← \theta_𝑐 - \eta \nabla_{\theta_𝑐} ℒ θc←θc−η∇θcL
θ 𝑗 ← θ 𝑗 − η ∇ θ 𝑗 L 𝑗 ∀ 𝑗 ∈ { 𝑝 , 𝑡 , 𝑠 } \theta_𝑗 ← \theta_𝑗 - \eta \nabla_{\theta_𝑗} ℒ𝑗 \quad \forall 𝑗 ∈ \{𝑝, 𝑡, 𝑠\} θj←θj−η∇θjLj∀j∈{p,t,s}