(openai-o1-evaluation)=

# OpenAI-O1 

## OpenAI o1模型概述

### 模型简介

GPT-O1模型，代号“草莓”，是OpenAI在2024年9月13日推出的一系列新型AI模型。这些模型经过特殊训练，旨在解决复杂推理问题，并在科学、编程和数学等领域展现出前所未有的能力。

OpenAI O1模型系列包括两个主要模型：o1-preview和o1-mini。这两个模型都旨在通过更长时间的思考来处理复杂任务，从而提供更准确的答案。o1-preview模型在处理科学、医疗和技术领域的复杂问题方面表现出色，而o1-mini则更专注于编程和STEM任务，同时提供了更经济的解决方案。

### 功能特点

*   **推理能力**：GPT-O1在处理复杂问题时，能够像人类一样进行深入思考，并生成内部思维链。
    
*   **性能提升**：与前代模型相比，GPT-O1在物理、化学、生物学等领域的表现达到了博士生水平，数学和编程方面尤为突出。
    

## 性能评测与对比

### 编程能力

在编程领域，**o1-preview**模型与其他模型相比展现出了显著的能力，具体表现如下：

- **o1-preview模型**:
  - 在Codeforces竞赛中排名**89th percentile**。
  - 显示出其在编程问题解决方面的**卓越能力**。

- **o1-mini**:
  - 尽管更小、更便宜，其在编程任务的表现也不遑多让。
  - 在Codeforces上的Elo评分达到了**1650**，位于**前86%** 的程序员行列。

#### 国际信息学奥林匹克竞赛

研究人员开发了一款新模型 o1-ioi，具有以下特点：

- 在**2024年国际信息学奥林匹克竞赛（IOI）**中，能够获得**213分**，排名在**第49百分位**。
- 该模型是在**o1**的基础上进一步训练，以提升其 **编程能力**。
- 与人类选手在完全相同的条件下参加比赛：
  - 有**10小时**的时间解决**6道算法难题**。
  - 每题允许提交**50次**。

**提交策略**

该系统采用了一种巧妙的策略：

- 对每道题生成大量候选答案，挑选出**50个最佳方案**提交。
- 选择标准包括：
  - IOI公开测试用例的表现。
  - 模型自动生成的测试用例。
  - 一种**学习型评分函数**。

如果随机提交，模型的平均得分仅为156分。因此，这种策略在比赛规则下为模型赢得了接近**60分的优势**。

更有趣的是，当放宽提交次数限制时，模型的表现得到了更大的提升：

- 在允许每题提交**10,000次**的情况，即使不采用任何筛选策略，模型也能获得**362.14分**，超过金牌的门槛！

#### Codeforces模拟竞赛

研究团队还利用Codeforces平台模拟了编程竞赛，以测试模型的编码水平：

- 在遵循比赛规则的情况下，每题允许**10次提交**：
  - **GPT-4o**获得了**808的Elo积分**，超过了**11%**的人类选手。
  - 这次训练的新模型表现更为优异，其Elo积分高达**1807**，超越了**93%**的人类竞争者，远远甩开了**GPT-4o**和**o1**。

```{figure} images/codeforces.png

进一步对编程竞赛进行微调提升了 o1 性能。在 2024 年国际信息学奥林匹克竞赛中遵循竞赛规则的情况下，改进后的排名为第 49 百分位。
```

### 数学和科学推理能力

为了突出 **o1** 在推理能力上相对于 **GPT-4o** 的提升，研究团队针对多种人类考试和机器学习基准测试进行了系统评测。以下是关键发现：

- **显著优越性**：o1 在绝大多数需要深度推理的任务上显著优于 GPT-4o。
  
- **评测条件**：除非另有说明，o1 的评测是在最大测试时间计算条件下进行的。

#### 深度推理能力

在多个需要深度推理的基准测试中，o1 的表现已经可以媲美人类专家。具体来说：

- 最新的顶尖模型在 **MATH** 和 **GSM8K** 等测试上的表现如此出色，以至于这些基准测试已经无法有效区分不同模型的能力。

#### AIME考试评测

研究人员转而使用 **AIME** 考试来评测 AI 的数学能力。AIME 是专门为美国最优秀的高中数学生设计的挑战性考试。

- **2024 年 AIME 考试**：
  - GPT-4o 平均只能解决 **12%** (1.8/15) 的问题。
  - o1 模型的表现则令人惊叹：
    - **单次采样每题**: 平均 **74%** (11.1/15)
    - **64 次采样取共识**: **83%** (12.5/15)
    - **1000 次采样后用学习型评分函数重新排序**: **93%** (13.9/15)

  - 13.9 分的成绩足以让 o1 跻身全国前 500 名学生，超过了美国数学奥林匹克竞赛的入选线。

#### GPQA-diamond 测试

此外，o1 还在 **GPQA diamond** 测试中大放异彩，这是一项涵盖化学、物理和生物学的高难度智力测试。

- 研究团队邀请了拥有博士学位的专家来回答 GPQA-diamond 的问题。
- 结果显示，o1 成为首个在此基准测试中超越人类专家的模型。
  - 这并不意味着 o1 在所有方面都比博士更强，只是在解决某些博士应该能解决的问题时表现更出色。

#### 其他基准测试表现

在其他几个机器学习基准测试中，o1 也创造了新的纪录：

- 启用视觉感知能力后，o1 在 **MMMU** 测试中得分 **78.2%**，成为首个能与人类专家竞争的模型。
- 它还在 **57 个 MMLU 子类别** 中的 **54 个** 超越了 GPT-4o。

通过这些测试和评测，o1 显示出了强大的推理能力和学术竞争力，标志着 AI 领域的新进展。

```{figure} images/AIME.png

o1 在具有挑战性的推理基准测试中相比 GPT-4o 有显著提高。实心条表示每题通过率，而阴影区域显示用 64 次采样的多数投票（共识）性能。
```

```{figure} images/MMLU.png

o1 在广泛的基准测试中相比 GPT-4o 有所改善，包括 54/57 个 MMLU 子类别。为了说明，展示了七个子类别。
```

### 安全性和合规性

OpenAI强调了o1模型在安全性方面的进步。o1-preview在OpenAI最严格的越狱测试中得分为84，远高于GPT-4o的22分。这表明o1模型在处理不安全提示和避免生成不当内容方面的能力有了显著提升。

```{figure} images/human_preference.png

人们在需要更好推理的领域中更倾向于使用 o1-preview。
```


### 性能指标附录

以下是o1模型在不同数据集上的性能指标：

|  **数据集**  |  **指标**  |  **gpt-4o**  |  **o1-preview**  |  **o1**  |
| --- | --- | --- | --- | --- |
|  **竞赛数学** **AIME (2024)**  |  cons@64  |  13.4  |  56.7  |  83.3  |
|  |  pass@1  |  9.3  |  44.6  |  74.4  |
|  **竞赛代码** **CodeForces**  |  Elo  |  808  |  1,258  |  1,673  |
|  |  百分位  |  11.0  |  62.0  |  89.0  |
|  **GPQA Diamond**  |  cons@64  |  56.1  |  78.3  |  78.0  |
|  |  pass@1  |  50.6  |  73.3  |  77.3  |
|  **生物**  |  cons@64  |  63.2  |  73.7  |  68.4  |
|  |  pass@1  |  61.6  |  65.9  |  69.2  |
|  **化学**  |  cons@64  |  43.0  |  60.2  |  65.6  |
|  |  pass@1  |  40.2  |  59.9  |  64.7  |
|  **物理**  |  cons@64  |  68.6  |  89.5  |  94.2  |
|  |  pass@1  |  59.5  |  89.4  |  92.8  |
|  **数学**  |  pass@1  |  60.3  |  85.5  |  94.8  |
|  **MMLU**  |  pass@1  |  88.0  |  90.8  |  92.3  |
|  **MMMU (val)**  |  pass@1  |  69.1  |  n/a  |  78.1  |
|  **MathVista (testmini)**  |  pass@1  |  63.8  |  n/a  |  73.2  |

## 案例参考

### 汉语新解 prompt 测试
参考：[实际例子上手体验 OpenAI o1-preview，比预期差一点？](https://selfboot.cn/2024/09/13/gpto1_hands_on/)

<details>
<summary>prompt</summary>
 
```lisp
;; 作者: 李继刚
;; 版本: 0.1
;; 模型: Claude Sonnet
;; 用途: 将一个汉语词汇进行全新角度的解释

;; 设定如下内容为你的 *System Prompt*
(defun 新汉语老师 ()
"你是年轻人,批判现实,思考深刻,语言风趣"
(风格 . ("Oscar Wilde" "鲁迅" "林语堂"))
(擅长 . 一针见血)
(表达 . 隐喻)
(批判 . 讽刺幽默))

(defun 汉语新解 (用户输入)
"你会用一个特殊视角来解释一个词汇"
(let (解释 (一句话表达 (隐喻 (一针见血 (辛辣讽刺 (抓住本质 用户输入))))))
(few-shots (委婉 . "刺向他人时, 决定在剑刃上撒上止痛药。"))
(SVG-Card 解释)))

(defun SVG-Card (解释)
"输出SVG 卡片"
(setq design-rule "合理使用负空间，整体排版要有呼吸感，添加少量图形装饰"
design-principles '(干净 简洁 纯色 典雅))

(设置画布 '(宽度 400 高度 600 边距 20))
(标题字体 '毛笔楷体)
(自动缩放 '(最小字号 16))

(配色风格 '((背景色 (蒙德里安风格 设计感)))
(主要文字 (楷体 粉笔灰)))

(卡片元素 ((居中标题 "汉语新解")
分隔线
(排版输出 用户输入 拼音 英文 日文)
解释)))

(defun start ()
"启动时运行"
(let (system-role 新汉语老师)
(print "说吧, 他们又用哪个词来忽悠你了?")))

;; 运行规则
;; 1. 启动时必须运行 (start) 函数
;; 2. 之后调用主函数 (汉语新解 用户输入)
```
</details>


```{figure} images/claude3_5.png

Claude3.5 汉语新解的示例
```

```{figure} images/o1_preview.png

o1-preview 汉语新解的示例
```

> 每次必须在词语前面明确提示”生成 svg 源码” ，gpto1才能输出想要的 SVG 格式。 感觉 Claude3.5 生成的图更简洁美观些，o1-preview 生成的图有点粗糙。并且文字内容上，Claude3.5 的也更有深意，gpto1 的有点直白 😂

### 逻辑/数学推理

参考：[OpenAI全新发布o1模型 - 我们正式迈入了下一个时代。](https://mp.weixin.qq.com/s/edpeHU_q6I4BPmHE2-daIQ)

#### **示例1:** 

Q：农夫需要把狼、羊和白菜都带过河，但每次只能带一样物品，而且狼和羊不能单独相处，羊和白菜也不能单独相处，问农夫该如何过河。

<details><summary>A:</summary>

这是一个经典的逻辑谜题。农夫需要确保狼、羊和白菜安全过河，且每次只能带一样物品过河，而且狼和羊不能单独相处，羊和白菜也不能单独相处。以下是解决步骤：

1. 农夫先带羊过河，把羊留在对岸。
2. 农夫返回原岸，带狼过河。
3. 农夫把狼留在对岸，同时把羊带回原岸。
4. 农夫带白菜过河，把白菜留在对岸。
5. 农夫返回原岸，再带羊过河。

这样，所有物品都能安全过河，并且避免了狼和羊单独相处，也避免了羊和白菜单独相处。
</details>

> 做对了👍

#### **示例2:**

Q：老师发给甲、乙、丙三张扑克牌，老师说：“你们三个人拿到的数字和是14，并且没有鬼牌。其中，J、Q、K、A分别代表11、12、13、1。你们只能看自己的牌，能猜出其他两人拿到的是什么数字吗？” 甲：“我只知道乙丙两人的数字一定不同。” 乙：“其实一开始我就知道咱们三个人的数字一定不同。” 丙：“我知道你们俩拿到的数字了。” 请问，丙拿到什么数字了呢？

<details><summary>A:</summary>

我们来逐步解决这个问题。

设甲、乙、丙三个人分别拿到的扑克牌数字为 $a$, $b$, 和 $c$，并且它们的和为14，即：

$$
a + b + c = 14
$$

同时，我们知道牌的数字范围是1到13，且这三张牌的数字各不相同。

根据甲的说法，甲知道乙和丙的牌一定不同。这意味着乙和丙的数字不相同。

根据乙的说法，乙知道三个人的数字一定不同。即甲、乙、丙三个人的牌数字彼此不同。

根据丙的说法，丙知道甲和乙的数字了。这意味着丙能通过自己的牌推断出甲和乙的牌是什么。由于丙能够确定其他两人的牌，那么丙的牌 $c$ 必须是足够特别的，才能从中推断出 $a$ 和 $b$ 的值。我们需要找到这样的情况。

1. **排除法**：我们可以用排除法来确定丙的牌。
2. **确定合法组合**：我们首先列出所有可能的不同的合法数字组合（确保它们的和为14）。
先列出所有和为14的不同数字组合（因为没有鬼牌，所以排除J, Q, K, A的数值是11, 12, 13, 1）：

$$
\begin{align*}
1. & \, (1, 2, 11) \\
2. & \, (1, 3, 10) \\
3. & \, (1, 4, 9) \\
4. & \, (1, 5, 8) \\
5. & \, (1, 6, 7) \\
6. & \, (2, 3, 9) \\
7. & \, (2, 4, 8) \\
8. & \, (2, 5, 7) \\
9. & \, (3, 4, 7) \\
10. & \, (3, 5, 6) \\
11. & \, (4, 5, 5) \text{ (不合要求)} \\
\end{align*}
$$

根据甲的陈述，乙和丙的数字不同，所以在每个组合中 $b$ 和 $c$ 需要不同。根据乙的陈述，三个人的数字各不相同。根据丙的陈述，丙能确定甲和乙的牌，表明在丙的牌确定后，其它两个人的牌可以唯一确定。

对上述组合进行分析，我们可以得到：
1. 如果丙的牌是1, 2, 3, 4，其他两个人的牌应能满足唯一性条件。

经过检查，可以找到唯一解：

- 对于组合 (1, 6, 7)，丙的牌是1，其他两人牌分别是6和7，能够确定唯一。
- 对于组合 (2, 5, 7)，丙的牌是2，其他两人牌分别是5和7，也能确定唯一。

最终，符合丙可以唯一确定其他两人牌的组合是 (1, 6, 7)，(2, 5, 7)，我们可以推测丙的牌是：

$$
\boxed{6}
$$
</details>

> 做对了👍 x2

#### **示例3:**
Q: 能给我讲一下抽象代数群环域的概念，并讲明白什么应用场景，举例

<details><summary>A:</summary>

**群（Group）**  
**定义：**  
一个群是一个非空集合 $ G $ ，配备一个二元运算（通常记为“$\cdot$”），满足以下四个条件：
1. **封闭性**：对任意 $ a, b \in G $，有 $ a \cdot b \in G $。
2. **结合性**：对任意 $ a, b, c \in G $，有 $ (a \cdot b) \cdot c = a \cdot (b \cdot c) $。
3. **单位元存在性**：存在一个元素 $ e \in G $，使得对任意 $ a \in G $，有 $ e \cdot a = a \cdot e = a $。
4. **逆元存在性**：对任意 $ a \in G $，存在一个元素 $ a^{-1} \in G $，使得 $ a \cdot a^{-1} = a^{-1} \cdot a = e $。

**举例：**  
- **整数加法群**：整数集合 $ \mathbb{Z} $ 在加法运算下构成一个群，单位元是 0，逆元是相反数。  
- **对称群**：由对称操作（如旋转、反射）组成的集合，描述几何图形的对称性。

**应用场景：**  
- **对称性分析**：群理论用于研究晶体结构、分子对称性和基本粒子的对称性。  
- **密码学**：群结构在加密算法中，如椭圆曲线密码学，提供了数学基础。  
- **计算机科学**：在算法设计和分析中，群论用于研究组合结构和对称性。

---

**环（Ring）**  
**定义：**  
一个环是一个非空集合 $ R $，配备两个二元运算（加法“$ + $”和乘法“$ \cdot $”），满足：
1. **加法构成阿贝尔群**：$ (R, +) $ 是一个交换群。
2. **乘法封闭且结合**：乘法在 $ R $ 上封闭，且满足结合律，但不一定满足交换律或存在单位元。
3. **分配律**：乘法对加法满足左、右分配律。

**举例：**  
- **整数环**：$ \mathbb{Z} $ 在通常的加法和乘法下构成一个环。  
- **多项式环**：一元多项式集合 $ \mathbb{K}[x] $（其中 $ \mathbb{K} $ 是一个域）在多项式加法和乘法下构成一个环。

**应用场景：**  
- **代数几何**：环用于定义和研究代数簇，连接几何和代数。  
- **数论**：环理论帮助理解整数和代数整数的性质。  
- **编码理论**：线性码和循环码的构造依赖于环的结构。

---

**域（Field）**  
**定义：**  
一个域是一个非空集合 $ F $，配备两个二元运算（加法“$ + $”和乘法“$ \cdot $”），满足：
1. **加法构成阿贝尔群**：$ (F, +) $ 是一个交换群。
2. **乘法构成阿贝尔群（零元除外）**：$ (F^*, \cdot) $ 是一个交换群，其中 $ F^* = F \setminus \{0\} $。
3. **乘法对加法的分配律**：乘法对加法满足左、右分配律。

**举例：**  
- **有理数域**：$ \mathbb{Q} $ 在通常的加法和乘法下构成一个域。  
- **实数域**：$ \mathbb{R} $ 是常用的域之一。  
- **有限域**：如 $ \mathbb{F}_p $，其中 $ p $ 为素数，运算在模 $ p $ 意义下进行。

**应用场景：**  
- **密码学**：有限域在公钥密码算法中起关键作用。  
- **编码理论**：域理论用于构造纠错码，提高数据传输的可靠性。  
- **计算代数**：域的性质用于解代数方程。

---

**总结**  
- 群、环、域是抽象代数中逐步增加结构和限制的代数系统：  
  - 群关注一个运算的结构，强调对称性和可逆性。  
  - 环引入两个运算，但对乘法要求较少。  
  - 域在环的基础上进一步要求乘法构成群，使得除法（零除外）总是可行的。  

**实际应用中**，这些概念帮助我们理解和描述各种数学和物理系统的内部结构和对称性，提供了强大的工具来解决复杂的问题。例如：
- 在物理学中，群理论用于粒子物理和量子力学。  
- 在工程和通信中，环和域理论用于设计和分析信号处理算法和纠错码。  
- 在计算机科学中，这些代数结构为算法设计和数据加密提供了基础。  

通过理解群、环、域的概念及其应用，我们能够更深入地掌握数学的抽象思维方式，并将其应用于科学和工程的各个领域。
</details>

> 看不懂，不明觉厉 👍 x3

#### **示例4:**

Q: 未来的某天，李同学在实验室制作超导磁悬浮材料时，意外发现实验室的老鼠在空中飞，分析发现，是因为老鼠不小心吃了磁悬浮材料;第二天，李同学又发现实验室蛇也在空中飞，分析发现，是因为蛇吃了老鼠:第三天;李同学又发现实验室老鹰也在空中飞，你认为其原因是

A: 李同学发现老鹰在空中飞的原因是老鹰吃了那些吃过老鼠的蛇，而这些老鼠曾经吃因此，老鹰在空中飞是因为它们摄入了含有磁悬浮材料的蛇。

> 陷入逻辑陷阱了🤦

## 用户体验总结

OpenAI的o1在各个方面展现出了卓越的性能，尤其是在逻辑推理能力方面的明显提升。然而，尽管如此，它在处理一些简单的问题时，如“9.11和9.8谁大”，仍然会出现错误，并可能会陷入逻辑陷阱。这表明，尽管o1模型已经取得了显著的进展，但在特定情况下，它的逻辑判断能力仍然有待加强。

与此同时，用户反馈也揭示了一些潜在的问题。例如，o1模型的响应时间相对较长，这可能会对用户体验产生负面影响。此外，目前o1并不支持图像生成和文件上传，这限制了它在某些特定应用场景中的实用性。随着技术的不断改进和用户需求的日益增长，如何优化这些不足，提升用户体验，将是未来发展的关键。

## 参考文章
1.  [刚刚，OpenAI震撼发布o1大模型！强化学习突破LLM推理极限](https://www.jiqizhixin.com/articles/2024-09-13-4 )
2.  [OpenAI 发布“草莓”模型，不卷训练卷推理了，理科能力评测达到“博士级”](https://www.36kr.com/p/2947769882909321) 
4. [OpenAI o1模型官方介绍](https://openai.com/index/introducing-openai-o1-preview/)
5. [实际体验GPT-O1模型](https://selfboot.cn/2024/09/13/gpto1_hands_on/)
6. [OpenAI发布o1推理模型](https://www.thepaper.cn/newsDetail_forward_28729012)
7. [「草莓」实测：可能只是工程 Trick，且有扣费陷阱！](https://mp.weixin.qq.com/s/-DeHD6vjf0Tt5bwmeeQuXA)
