OpenAI-o1 是一个革命性的版本,它支持LLMs对数学或物理问题等复杂任务进行详细推理,而不仅限于通用文本生成。
Marco-o1 YouTube视频介绍:https://youtu.be/R1w145jU9f8
一、什么是阿里巴巴的 Marco-o1?
Marco-o1 旨在通过采用蒙特卡洛树搜索 (MCTS) 和思维链 (CoT) 微调等先进技术来处理复杂的推理任务。它的主要重点是为开放式问题生成多个解决方案,而不是满足于单一答案,这与类似人类的推理过程更紧密地保持一致。
Marco-o1 不仅适用于具有明确答案的学科,例如数学、物理或编码,在这些学科中,使用强化学习 (RL) 很容易衡量成功。它还侧重于解决没有固定规则或明显方法来判断成功的开放式问题
例如:
想象一下 Marco-o1 是一个超级聪明的问题解决者。大多数模型(如数学、物理或编码)都擅长具有固定答案的问题,例如“什么是 2+2”或“如何修复此代码?这些都很简单,因为我们知道它们什么时候是对的,什么时候是错的。
但 Marco-o1 不止于此。它还试图解决混乱的、开放式的问题,例如“我们如何让世界更快乐”或“讲述这个故事的最佳方式是什么?这里没有单一的 “正确” 答案,也很难确切地说出答案的好坏。
主要特点:
- 开放式推理:与旨在明确答案的传统模型不同,Marco-o1 探索了各种潜在的解决方案,使其对模棱两可或复杂的查询特别有效。
- 蒙特卡洛树搜索 (MCTS):这种技术允许模型评估通往解决方案的众多可能路径,类似于国际象棋玩家在做出决定之前考虑不同步骤的方式。MCTS 有助于平衡对新可能性的探索与对已知成功策略的利用。
- 思维链微调:通过利用现有数据集和自行生成的合成数据的组合,Marco-o1 提高了通过结构化推理步骤处理复杂任务的能力。
- 反射机制:该模型包含一个自我反思组件,促使它在生成答案后重新评估其推理,从而增强其解决问题的能力
二、Marco-o1 是如何工作的?
2.1 Dataset(数据集)
该模型在三个数据集上进行训练:
- Open-o1 CoT 数据集(过滤):具有思维链 (CoT) 注释的优化数据集。
- Marco-o1 CoT 数据集(合成):创建合成数据以增强学习。
- Marco-o1 指令数据集:一个专注于教学提示的数据集。
这些数据集被组合起来并用于监督微调,以提高模型的推理和响应能力。它基本上使用 Qwen2-7B 模型作为上述数据集微调的基础。
2.2 Inference(推理过程)
2.2.1 MCTS(蒙特卡洛树搜索):
- 树结构用于逐步探索可能的答案。
- 节点代表不同的推理路径。
- 选择黄色节点进行进一步探索。
- 绿色节点显示最终答案。
- “Select” 和 “Backup” 等箭头显示系统如何评估和优化选择。
2.2.2 Action Strategy(行动策略):该模型可以在两个级别上运行:
Step Level:高级推理(大局)。
Mini-Step Level:详细、较小的推理步骤。
2.2.3 Confidence Score(置信度分数):
- 生成答案后,模型使用概率计算其对结果的置信度(如公式所示)。
- 置信度值有助于优化最终输出。
三、如何使用Marco-o1?
可以直接使用HuggingFace来加载Marco-o1即可。
# Load model directly
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("AIDC-AI/Marco-o1")
model = AutoModelForCausalLM.from_pretrained("AIDC-AI/Marco-o1")