陶哲轩:用ChatGPT写代码太省时间了
自从开始使用 ChatGPT,数学家陶哲轩便时不时地给予这项技术以赞扬。
陶哲轩对 ChatGPT 的喜爱可见一斑!几个月前,我们曾报道过他如何利用 ChatGPT 辅助解决数学问题。虽然当时的测试结果并不令人满意,但这并没有让他对 ChatGPT 产生完全否定的态度。他认为,像 ChatGPT 这样的高级语言模型在数学研究中可用于进行半成品的语义搜索工作,即运用它来生成提示。
陶哲轩还表示:“我预计如果使用得当,到 2026 年 AI 将成为数学研究及多个其他领域中值得信赖的合著者。”今天,他又分享了一个新的体验:使用 ChatGPT 编写 Python 代码以计算 Phi 非递减序列的数学问题,结果让他觉得极有价值。
从之前讨论的“未来”到现在对 ChatGPT 在数学领域的积极评价,可以看出他没有放弃,依旧在探索如何运用 AI 大模型来提升工作效率。
在这次体验中,他所使用的 Prompt 是:“我希望写一个标准编程语言(例如 Python 或 C++)的程序,当给定一个自然数 n 时,计算 {1,..,n} 中最长的子序列的长度 M(n),使得欧拉函数 varphi 是非递减的。例如,如果 n=6,则 M(n)=5,因为 varphi 在 {1,2,3,4,5} 或 {1,2,3,4,6} 上是非递减的,而在 {1,2,3,4,5,6} 上则不是。如何编程实现呢?理想情况下,我希望这个程序在中等值 n(比如最大到 100)时能够快速运行,或许动态规划方法是可行的,但最初的暴力搜索方法对于小 n 可能足够。”
在对话中,ChatGPT 先是进行了解释,然后给出了以下的 Python 代码:
“`python
import math
def phi(n):
“””计算 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):
“””检查序列是否为非递减。”””
for i in range(1, len(seq)):
if seq[i] < seq[i-1]:
return False
return True
def longest_non_decreasing_phi_subsequence(n):
“””找到 {1,…,n} 中 phi 为非递减的最长子序列的长度。”””
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)) # 输出: 5
“`
陶哲轩认为,这个生成的结果非常有趣:它能够得出计算 totient 函数的聪明程序,但在某些地方仍存在计算误差。
在使用结束后,他认为结果已经相当不错。“我可以使用 GPT 最初生成的代码作为起点,手动生成我所需的代码,这可能为我节省了大约半小时的工作。”他补充道,在未来类似的计算中,他还会再次向 GPT 寻求初始代码的帮助。
与读者互动中,我们发现大家对 ChatGPT 的代码生成持积极态度。有些人表示:“我对代码不是很懂,但有了 ChatGPT,从零开始写程序不再是问题。”
有人对此产生疑问:如果你对代码不太熟悉,那你是如何判断 ChatGPT 生成的代码是否正确的呢?
陶哲轩坦言:“我不常用 Python 编写代码,所以没有掌握一些基本的语法(例如 for 循环),而且在引用传递与值传递之间也存在一些微妙之处,让我感到困惑。几乎每次都要通过手动检查动态更新来调试,包括最终错误地初始化二维数组。因此,能够获得几乎正确的代码,且语法也正确,对我帮助很大,否则我就得为每一行代码都查资料,搞清楚如何精确表达。”
他补充道,相较于编写数学证明(这是我的专业领域),我同意你的观点,即 GPT 提供的不完全正确的论证对我并没有特别大的帮助。AI 生成的内容不如我自己从头写来得更有效。
看来,利用大型模型应对不熟悉的专业知识,这或许是未来人们使用 ChatGPT 提升生产力的一种方式。
此外,也有人关注生成代码的来源及其版权问题,但似乎很难追溯到具体来源。
在你的工作中,你会使用 ChatGPT 来生成代码做辅助吗?
### 见解
陶哲轩对 ChatGPT 的积极评价展现了当代科技在专业领域的应用潜力,尤其在数学和编程方面。通过使用 AI,他能够节省时间并提升效率,促进了创新与知识的传播。然而,AI 生成的代码虽能满足部分需求,但仍需人类进行审查和调整,这提醒我们在享受便利的同时,也要保持警惕,确保最终结果的正确性和有效性。这种人机合作的方式,或许将成为未来工作的新常态。