陶哲轩盛赞ChatGPT编写Python代码效率高,显著提升数学研究效率
刚才,陶哲轩称赞:用ChatGPT写Python代码,这么有效。直接节省了我半个小时的数学研究工作!

作为实验,他要求 ChatGPT 编写一段 Python 代码,计算每个自然数 n 的 1,...,n 的最长子序列的长度 (),其中欧拉通用函数 phi 不减少。
例如,(6)=5,因为 phi 在 1,2,3,4,5(或 1,2,3,4,6)上不减,但在 1,2,3,4,5 上不减, 6 没有。
有趣的是,它生成了一段极其聪明的代码来计算通用函数。这段代码实在是太巧妙了,陶哲轩看了好几分钟才明白这段代码的原理是什么。
当然,这段代码也是有偏差的——它只考虑连续整数的子序列,而不考虑任意子序列。
不过,已经足够接近了,以 ChatGPT 生成的初始代码为起点,Tao 最终手动生成了他想要的代码,这为他节省了大约半个小时的工作。
现在,他已经得到了M的前10000个值。
由于ChatGPT给出的结果非常好,陶哲轩表示以后会经常使用它,为类似的计算提供初始代码。
ChatGPT 的惊人性能
可以看到,陶哲轩向ChatGPT提问时,先重复了问题,然后清晰地描述了自己的要求——
“理想情况下,我想要一个能够快速计算 n 的中间值(比如最多 100)的程序。我建议采用动态编程方法,但如果它只是一个适用于较小 n 值的程序蛮力法对我来说应该足够了。”
ChatGPT立即给出了以下答案——
欧拉函数(通常表示为φ(n))是指小于n的正整数中与n互质的数的个数。对于暴力法,您可以按照以下步骤操作: 1. 对于从 1 到 n 的每个 i,计算 φ(i) 2. 对于 {1,...,n} 的每个子序列,检查子序列 φ 是否在是非递减的 3. 求满足 φ 非递减的最长子序列
然后,ChatGPT给出了一段Python代码。
import math
def phi(n):
"""Compute the Euler totient function for n."""
result = n
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
while n % i == 0:
n //= i
result -= result // i
if n > 1:
result -= result // n
return result
def is_non_decreasing(seq):
"""Check if a sequence is non-decreasing."""
for i in range(1, len(seq)):
if seq[i] < seq[i-1]:
return False
return True
def longest_non_decreasing_phi_subsequence(n):
"""Find the length of the longest subsequence of {1,...,n} on which phi is non-decreasing."""
phi_values = [phi(i) for i in range(1, n+1)]
max_length = 0
for i in range(n):
for j in range(i, n):
if is_non_decreasing(phi_values[i:j+1]):
max_length = max(max_length, j-i+1)
return max_length
n = 6
print(longest_non_decreasing_phi_subsequence(n)) # Output: 5
并在最后给出一个总结:这段代码对于较小的n值来说工作得很好,但是由于其时间复杂度,对于较大的值来说会很慢。
对于较大的n值,需要更高效的算法或动态规划方法。
陶哲轩与网友讨论
有网友对GPT-4的惊人性能表示怀疑——
“这段代码绝对不是GPT-4自己写的。它应该是从某个程序员在网上发布的代码中窃取的。也许我们永远找不到它。”
对此,陶哲轩表示,他向GPT-4询问了这段代码是如何得出的,它能够对这段代码给出清晰、正确的解释。
因此,他得出结论,这段代码并不是简单地从 GPT-4 的来源复制而来。
而且,他也在网上搜索过,但并没有找到类似的代码。
在下图中,我们可以看到 GPT-4 对于如何提出这个算法的解释是流畅且完美的。
很快,有网友表示挖出了这个算法最早的例子,是在2008年的俄罗斯个人网页上。
陶哲轩表示,有趣的是,GPT 生成的 Python 代码与网友挖掘的 C/C++ 算法非常相似(例如使用相同的变量名“result”),但与现有的完全不同Python 欧拉函数代码。 ,后者可以通过 Google 搜索找到。
就好像GPT已经锁定了这段C代码(也许是因为它似乎出现在网络上的多个地方,并且其背后原理的解释非常出色),并且更愿意将其转换为Python而不是使用表面上的Python更相关的“点击”,这与搜索引擎的运作方式相反。
另外,还有网友留言说,一个有趣的现象是,你感觉修补一段代码比从头开始编写要快。但对我来说却完全相反。也许每个人的感受都会不同。
陶哲轩回复:我不经常使用Python,所以没有可以直接调用的基本语法(比如for循环)。
通过引用传递和通过值传递之间存在一些微妙之处,每次我都会出错,当我错误地初始化 2D 数组时,我最终不得不通过手动检查动态更新来进行调试。
获得语法正确且功能基本正确的代码有很大帮助,否则我将不得不谷歌每一行代码来弄清楚如何准确地表达它。
至于写数学证明,我同意你的观点。 GPT提供的错误结论对我来说不会有太大帮助。在这种情况下,从头开始会更有效率。
有网友向他建议:GitHub Copilot + VSCode 可能对你很有用。我很少需要查找标准的表面级语法结构。
陶哲轩表达了感谢。如果他需要定期编写大量代码,他肯定会使用它。
然而,目前此类计算仅每月偶尔需要一次,以便为特定任务找到最快的解决方案。
2026 年,GPT 将能够帮助我共同撰写数学论文。
事实上,陶哲轩一直非常欣赏ChatGPT的数学能力。
今年3月GPT-4正式发布时,他就被邀请提前试用。
试用后,他的感觉是——到2026年,GPT应该能够帮助数学家共同撰写数学论文!
过去几十年来,人类受到信息技术的规训,逐渐习惯了某些情境。例如:
- 硬件和软件将按照摩尔定律的步伐继续改进(例如性能、用户体验和可靠性),然后过渡到更多渐进式改进。
- 单个软件工具可以可靠地产生高质量的输出,但输入数据必须具有最高质量,并以特定方式仔细格式化以满足工具的要求。
- 工具越先进,规范和特殊情况就越复杂。除非有设计良好的标准,否则工具之间(尤其是不同供应商之间)的互操作性将成为巨大的技术挑战。
- 人类将做出所有关键的执行决策;软件工具通过执行人类指令的成功或失败来影响人类的决策过程。
随着 GPT-4 等生成式人工智能工具的出现,所有这些习惯即使不能完全放弃,也需要重新调整。
这些工具非常适合处理措辞模糊(且略有错误)的自然语言提示,或者处理从网页或 PDF 中抓取的嘈杂数据。
例如,如果您向 GPT-4 提供数学论文前几页的 PDF,它可以生成几个高质量的学术问题。使用提示词等变体,您可以为将来的演讲做准备或阅读技术上更复杂的论文。
起初,陶哲轩根据自己在编程或脚本语言方面的经验,试图让自己写的提示词尽可能准确。然而,当他放弃这种谨慎并简单地将大量原始文本扔给人工智能时,最好的结果就出现了。
如此高的容错能力使得人工智能工具可以与传统软件工具一起工作,或者将人工智能工具相互集成在一起工作,或者与未经处理的个人数据和个人偏好结合起来工作。
而这种方法将彻底改变人们的工作流程,而不是像现在那样仅仅孤立地为人类行为提供一些建议。
如今,Tao 经常使用 GPT-4 来回答随意且措辞模糊的问题。甚至,让它帮助起草一些复杂文件的初稿。
对于这些问题,以前需要花费很大的精力在搜索引擎中寻找答案。
目前的大型语言模型(LLM)往往可以令人信服地模仿某个知识领域专家的答案,但无法避免幻觉的问题。
在这方面,人类和人工智能都需要培养分析这种“新型文本”的技能。
陶哲轩还表示,他用来“检测”一些离谱和错误的数学论证的文体信号对于LLM生成的数学文本没有多大用处。只有仔细逐行阅读才能看出其中是否有实质内容。
然而,即使是LLM产生的无意义的数学内容也常常引用相关概念。只需一点点努力,人类专家就可以将一个不可行的想法修改为正确且原创的想法。
2023年的人工智能已经可以为数学家产生有用的提示和线索,从而在数学家的决策和思维过程中发挥作用。
陶预测,当与形式证明验证器、互联网搜索和符号数学包等工具集成时,如果使用得当,人工智能将在 2026 年成为数学研究以及许多其他领域值得信赖的合作者。应该是这样。
如今,在AI的指导下,研究生已经可以在不到一天的时间内生成一篇入门级的数学论文,未来AI工具的准确率显然会高得多。
我们甚至不必等到那时。
今年6月,陶哲轩在解决数学问题时,GPT-4提出了一个可行的解决方案。
随后,陶哲轩也完整分享了自己与GPT-4的聊天记录。
GPT-4 不能解决数学问题,但对工作有帮助
作为ChatGPT的“经验丰富的用户”,陶哲轩早在今年3月就表示,他正在尝试以不同的方式将AI工具融入到他的工作流程中。其中包括 ChatGPT 和 DeepL 等工具。
接下来的一段时间,他经常分享一些使用ChatGPT等工具的经验。
他发现了ChatGPT的许多隐藏功能,比如查找公式、解析代码格式的文档、重写论文陈述等。
例如,陶哲轩要求 ChatGPT 从描述中识别库默定理。它未能给出正确答案,而是基于它给出的近似答案(勒让德公式)。
对此,陶哲轩表示,AI在数学中的作用就是提供一个初步的近似答案,然后可以与传统搜索引擎结合,轻松找到正确答案。
陶哲轩还发现了ChatGPT在处理数学问题时的亮点,能够识别不同语言的数学概念的音译版本。
或者,可以要求 ChatGPT 转换从 MathSciNet 获得的一堆参考文献,并将它们在 LaTeX 书目环境中格式化为 \bibitems。
尽管ChatGPT等人工智能工具无法帮助陶哲轩攻克未解决的数学问题,但它们对于其他与工作相关的问题很有用,尽管事后经常需要进行一些手动调整。
一方面,它非常擅长解析代码格式的文档(在本例中是#arXiv搜索API),然后返回格式正确的代码查询(后来它还提供了一些工作的Python代码,按照我要求的方式调用这个API,尽管我必须手动安装一个包才能使其运行)。
另一方面,可以要求它提出一些聪明的学生可能在本科线性代数课程中提出的问题(我为此提供了一些示例问题),并且它为他提供了一些很好的例子来说明他会发生什么从课程中。可能的方向,以及潜在的作业问题。
总的来说,陶哲轩对生成式人工智能工具的看法分为四类。
首先,陶哲轩已经开发了足够的技术来优化他每天执行的任务的工作流程,人工智能工具并没有给他增加太多价值。最明显的是学习数学。
其次,对于那些我们有一定专业知识但很少实践的任务,人工智能工具很有帮助:它们通常可以用来创建输出的初稿,然后可以进行验证和修改,或者至少用作输出的来源。灵感。此类别的示例包括数据处理、翻译成外语或以您很少使用的格式编写文本(例如公开演讲、规则文档等)。
同样,对于您缺乏专业知识并且不需要极高质量和可靠输出的任务,您可以简单地询问人工智能工具并或多或少地遵循它的建议。在这里,人工智能的功能相当于传统搜索引擎的稍微方便一些的版本。
最后,对于那些不需要专业知识但要求质量和可靠性的任务,人工智能和道本身都无法解决,必须咨询人类专家。例如修理复杂、昂贵、精密的设备。
关于第二类任务,陶哲轩表示,当他意识到可以要求GPT以LaTeX格式输出流程图时,他得到了下面第一张图,这显然是不完美的。
当然,由于他对LaTeX非常熟悉,所以手动校正到第二张图像并不困难。
参考:
@tao/110991566012143311