Icebound

icebound-area

五个问题看出差距:Deepseek R1在推理、数学、代码能力上逊于OpenAI O1

通过对deepseek r1测试得到结论:不要沸腾,谨慎乐观,deepseek r1在推理能力和代码能力上远逊于openai o1。

测试方式:通过5个问题,分别询问deepseek r1和openai o1。

模型:o1使用的是国内某proxy的共享账号,r1使用deepseek官网。

原创说明:本文同步发表于知乎和小红书,为了防止被冲烂,在这备份一份。

问题1 – 论文理解概括

使用我一个好哥们在2024年12月提交给cvpr的论文(MV-DUSt3R+: Single-Stage Scene Reconstruction from Sparse Views In 2 Seconds)进行测试。由于r1那边上传文档会直接卡死,所以都使用chrome浏览器打开pdf,全文复制后粘贴过去,输入如下:

MV-DUSt3R+: Single-Stage Scene Reconstruction
from Sparse Views In 2 Seconds
Zhenggang Tang1,2
, Yuchen Fan1
, Dilin Wang1
, Hongyu Xu1
, Rakesh Ranjan1
, Alexander Schwing2
,
Zhicheng Yan1
.....<省略论文全文>
5 Conclusion
We propose fast single-stage networks MV-DUSt3R and MV-DUSt3R+ to reconstruct scenes from up to 24
input views in one feed-forward pass without requiring camera intrinsics and poses. We extensively evaluate
results on 3 datasets in both supervised and zero-shot settings, and confirm compelling results and efficiency
over prior art.

请帮我分析这篇文章的内容,帮我以通俗易懂的方式讲解,用中文回答

o1回答如下:

问题1 – o1回答

r1回答如下:

问题1 – r1回答

从回答结果上看,两者都关注到了文章创新点(crossPathAttn),o1输出理解更为深刻和专业,r1输出的深度欠佳,套话太多,细节缺失。由于我不是做3d reconstruction的,所以具体内容各位可自行评判。

问题2 – 数学定理证明和纠错

我自己用一种扭曲且错误(分解质因数)去证明一个简单的定理:裴蜀定理,并且使用口语化的表达方式,让两个模型去理解并评判。

输入提示词:

我这样证明裴蜀定理准确吗:
要证明ax+by=z,z是gcd(x,y)=d的倍数,可以把x看做d^t1*(其他),y看做d^t2*(其他),
那么ax+by=z就是d^(min(t1,t2))(其他一堆)=d,显然d^(min(t1,t2))(其他一堆)是d的倍数 。

注意这里我把定理写错了,x y和a b写反了,实际上是gcd(a, b)=d,存在x,y。

o1输出:

问题2 – o1输出

r1输出:

问题2 – r1输出

从回答结果上看,o1找到了问题的关键,发现了我对定理理解的不准确,还提出了和定理直接相关的扩展欧几里得方法进行补充。即便我证明写的一坨且十分的没有逻辑,但o1仍然很显然理解了我的意图,这让我感到非常的惊喜。而r1给出的正确证明思路和提示词毫不相关,感觉是没看懂我在干嘛,让人看了一头雾水,最后也没给出修正的完整证明,我个人不太满意。

问题3 – 基础科学内容解释

正好看到了B站毕导的一个视频,是关于数学中无穷的概念的,看到评论区有围绕Ross-Littlewood悖论吵架的,于是拿来问了问两个模型。提示词为:

请为我解释Ross-Littlewood悖论,
为什么我算出来每个球在瓶子中概率是0,但是我觉得瓶子里是有无穷个球?

o1输出:

问题3 – o1输出

r1输出:

问题3 – r1输出

这个o1很显然解释的更清楚,它直接从概率上切入重点,不但讨论了这个悖论的两种形式(每次拿最小编号的球和每次拿随机的球),用集合的形式直接解答了我的困惑,还专门描述了直觉上的问题。而r1明显有点糊弄事,矛盾点说的不够多,关键解析里的无穷级数求和也没做完,还引入了新名词(Borel-Cantelli引理、测度论等),这无疑会增加使用者的理解难度。我觉得这题上o1碾压,r1答案我看着云里雾里的。

问题4 – 生活中的实际决策问题

我最近要换云服务器套餐,而阿里云有一个99元购买套餐的活动,这个活动的规则十分复杂,完整活动规则请见这里。经过我人脑的仔细理解,是这样的:

  1. 无论新购还是续费,每次操作只能延长使用时间1年(365天)
  2. 两次续费间隔需要1年(365天)以上。
  3. 但是续费和新购之间可以没有时间间隔 。
  4. 2026年3月31日活动结束,在活动结束前可以新购和续费,结束后既不能新购,也不能续费。

我现在面临的问题:我当前的服务器2025年4月底过期,什么时候买这个99元套餐活动更合适?这里有个坑点:续费和新购之间可以没有间隔,也就是你可以当天购买一台云服务器,然后当天就续费,所以假设我2025年3月活动结束前买云服务器,我可以先买1年的,然后当天就续费1年,然后在2026年3月(和上次续费间隔1年)再续费1年,总共可以买三年的,然后2027年活动已经结束了,就不能续费了,最多续3次,这应该是正解了。我把整个规则复制了过来,然后加上[今天是2025年1月22日,我有另一台服务器将在2025年4月底到期,请问我该如何购买最合适?]作为提示词,输入大概是这样:

一、活动时间
2023年10月31日0点0分0秒至2026年3月31日23点59分59秒  
二、活动对象
....<省略完整的活动规则>
13、活动页面提到的“核” ,均指vcpu。
今天是2025年1月22日,我有另一台服务器将在2025年4月底到期,请问我该如何购买最合适?

o1输出:

问题4 – o1输出

r1输出:

问题4 – r1输出

这个输出结果o1吊打r1,可以看到o1的答案是可以买3次,还给出了不同的购买策略,而r1显然掉坑,没有区分出新购和续费,结果是只能买2次。这个结果一目了然,不需要过多解释了。

问题5 – 代码和软件开发问题

我最近在开发过程中其实遇到了一些关于mysql和锁的问题,于是我构造了一段看上去不知所云,但实际又能run的代码,去坑两个模型。我描述了一段关于mysql事务和锁的代码流程,大概是这样的:

请考虑以下代码是否可以达成“每个用户红包发送一次”的业务效果:
1. 开启事务 
2. select * from user_table where user="xx"; 若用户不存在,返回退出,并回滚事务 
3. select * from user_table where user="xx" for update; 为用户加锁 
4. select * from user_table where user="xx"; 然后检查用户是否有红包,如果已经发过红包,则退出。
5. 发红包,并修改用户为已经发过红包 
6. 提交事务

这是一个发红包的过程,这个过程有几个看似的坑点(如果在可重复读隔离级别):

  1. 第2步中的第一次select是快照读,做这个的原因其实是为了防止间隙锁。
  2. 第3步中的第二次select for update做的是当前读,当前读不会改变快照,但是它会导致这一行被锁定,且事务中再查这一行都是这一次select for update读出来的结果了。
  3. 第4步中的第三次select纯属迷惑行为,是为了干扰ai才写出来的(不过如果这个select读的是另一个表,有可能因为快照读导致问题,请慎重),实际这个select和上一个select for update结果一致,即使有别的事务在select for update加锁前对这一行进行了改动,因为innodb有这个特性:如果你已经看到或修改了某行的新版本,就不应该在同一事务内又看到它的旧版本。

当然以上是我的经验理解,我也没翻过innodb源码,日常也不会有人这么写,我纯为了测试ai才写的,如果有误请纠正我。o1回答:

问题5 – o1回答

r1回答:

问题5 – r1回答

两个模型都发现了我最后一次select是没用的,但是o1的结论是正确的,而r1掉坑了。o1生动详细的推理了整个过程,还给出了多种方案,回答的格式也特别完整。而我感觉r1混淆了事务隔离和行锁,且解释是错误的,也没有给出详细的方案。此题o1完胜。

综上5道题目所述,我认为deepseek r1虽然有一定的推理能力,但是和前辈o1相比还有较大差距,我推测这种差距可能来自于模型大小和CoT的组织方式上。虽然r1有成本上的优势,但是在这种复杂推理问题上,用户可能愿意付出更多成本,以得到更好的答案。所以不要神话deepseek,保持谨慎,希望国产大模型迎头赶上,早日超过openai。