Training Large Language Models to Reason in a Continuous Latent Space

本文是LLM系列文章,针对《Training Large Language Models to Reason in a Continuous Latent Space》的翻译。

摘要

大型语言模型(LLM)仅限于“语言空间”中的推理,它们通常用思维链(CoT)来表达推理过程,以解决复杂的推理问题。然而,我们认为语言空间可能并不总是推理的最佳选择。例如,大多数单词token主要用于文本连贯性,而不是推理所必需的,而一些关键token需要复杂的规划,并对LLM构成巨大挑战。为了探索LLM推理在不受限制的潜在空间中而不是使用自然语言的潜力,我们引入了一种新的范式COCONUT(连续思维链)。我们利用LLM的最后一个隐藏状态作为推理状态的表示(称为“连续思维”)。我们没有将其解码为单词token,而是将其作为后续输入直接嵌入连续空间,反馈给LLM。实验表明,Coconut可以在多个推理任务上有效地增强LLM。这种新颖的潜在推理范式导致了新兴的高级推理模式:连续思维可以编码多个备选的下一步推理步骤,使模型能够执行广度优先搜索(BFS)来解决问题,而不是过早地采用像CoT这样的单一确定性路径。在某些逻辑推理任务中,Coconut的表现优于CoT,这些任务在规划过程中需要大量回溯,在推理过程中需要更少的思维token。这些发现展示了潜在推理的前景,并为未来的研究提供了宝贵的见解。

1 引言

2 相关工作

3 Coconut:连续思维链

4 实验

5 理解Coconut中的潜在推理

6 结论

在这篇论文中,我们提出了Co

CLAM(Continuous Latent Action Models)是一种用于机器人学习的深度学习框架,特别适用于从无标签演示中学习连续动作空间的潜在表示。它通过将高维感官输入(如图像)映射到低维潜在动作空间,并在该空间中进行策略学习,使机器人能够模仿专家演示而无需显式标签。CLAM 的核心思想是利用自监督学习构建一个潜在动作空间,然后在此空间中训练策略网络以模仿专家行为。 CLAM 的架构通常由以下几个关键组件构成: 1. **编码器-解码器结构**:使用编码器将观测数据(如图像)编码为潜在动作表示,再通过解码器重建观测数据,从而确保潜在动作空间能够捕捉与动作相关的结构信息[^1]。 2. **对比学习机制**:通过对比学习(Contrastive Learning)来构建潜在动作空间,使得同一时间步的观测数据在潜在空间中距离较近,而不同步的观测则被拉开[^1]。 3. **策略网络**:在学习到的潜在动作空间上训练策略网络,使其能够根据当前观测生成合适的潜在动作,并通过解码器将其转换为实际动作。 CLAM 的一大优势在于它能够处理无标签的演示数据,这意味着它可以在没有明确动作标签的情况下进行训练,从而降低了数据收集和标注的成本。此外,CLAM 的潜在动作空间具有良好的泛化能力,使机器人能够在新环境中执行类似任务。 在实际应用中,CLAM 已被用于多个机器人学习任务,例如机械臂控制、物体抓取和导航等。其自监督学习机制使其在处理高维输入(如RGB图像)时表现出色,并能够从少量演示中快速适应新任务。 以下是一个简化的 CLAM 编码器和解码器结构的 PyTorch 示例代码: ```python import torch import torch.nn as nn class Encoder(nn.Module): def __init__(self, latent_dim=32): super(Encoder, self).__init__() self.conv = nn.Sequential( nn.Conv2d(3, 32, kernel_size=4, stride=2), nn.ReLU(), nn.Conv2d(32, 64, kernel_size=4, stride=2), nn.ReLU(), nn.Conv2d(64, 128, kernel_size=4, stride=2), nn.ReLU() ) self.fc = nn.Linear(128 * 6 * 6, latent_dim) def forward(self, x): batch_size, channels, height, width = x.shape x = self.conv(x) x = x.view(batch_size, -1) latent_action = self.fc(x) return latent_action class Decoder(nn.Module): def __init__(self, latent_dim=32): super(Decoder, self).__init__() self.fc = nn.Linear(latent_dim, 128 * 6 * 6) self.deconv = nn.Sequential( nn.ConvTranspose2d(128, 64, kernel_size=4, stride=2), nn.ReLU(), nn.ConvTranspose2d(64, 32, kernel_size=4, stride=2), nn.ReLU(), nn.ConvTranspose2d(32, 3, kernel_size=4, stride=2), nn.Sigmoid() ) def forward(self, z): x = self.fc(z) x = x.view(z.shape[0], 128, 6, 6) reconstructed = self.deconv(x) return reconstructed ``` 在训练过程中,CLAM 通常使用重建损失(如均方误差)来优化编码器和解码器,同时结合对比损失(如三元组损失或NT-Xent损失)来确保潜在动作空间的结构[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值