|
昨晚参加了复旦大学彭鑫教授临时召集的一个线上讨论,话题非常有意思,是关于最近以ChatGPT为代表的大语言模型(Large Language Model, LLM)对于软件开发的颠覆。今早起来,仍有些思考,故而干脆写下来,也暂停一下大脑里的胡思乱想 :-)
我不是专门做大语言模型的,但对于ChatGPT的学习能力很好奇,故而问了ChatGPT如下几个问题(以下记录来自于 ChatGPT Mar 14 Version 在2023年3月26日上午8点多的回答):
(接上图)
那么,我一些看法也是由这几个问题而来。
ChatGPT是否代表了强人工智能时代的到来?
如果是,那么我想软件开发工作被人工智能代替只是时间问题。就好比一个初生的婴儿,经过多年的教育培训,最后成长为一位软件开发专家一样,何况这位“婴儿”具有超强的学习能力。
如果不是,现阶段还不具备自我学习能力,我们还处于弱人工智能时代,那么还可以继续讨论下面的问题。
ChatGPT依赖什么学习?
从ChatGPT的回答来看,主要依赖深度学习大模型和各种不同来源的训练数据。不妨简单称为,基于模型的学习和基于数据的学习。以一个HelloWorld的程序开发为例,如果给ChatGPT提供大量的程序开发案例,大模型会尽量模拟人类开发工程师的行为,最后生成相应的程序。
如果缺失数据,还能学习吗?
目前来看,显然缺失数据会影响ChatGPT的学习能力。虽然如ChatGPT所说,它可以通过数据插补和迁移学习来处理缺失数据,但我想这还不够。数据插补对于数值计算类任务有效,但适用领域有限;迁移学习对于跨领域学习有效,但也不是每个领域都可以完全迁移,取决于不同领域之间共性知识的范畴。
对于软件开发来说,有些数据是不公开的,比如一些商业软件的关键技术数据,还有芯片等硬件上的专利技术数据等,这些数据本身具有商业价值,创造者本身不会分享给大模型,而大模型本身还不具备自我学习能力,因而也无法生成高质量的结果。
从这个角度看,数据的价值和重要性再次被突显,数据隐私保护将更加重要。同时,通过立法等手段保护数据的措施将更加严格。
如果领域问题本身缺少解法,ChatGPT可以做什么?
如之前所说,ChatGPT主要具备基于模型和基于数据的学习能力。所谓基于模型,其实是大模型在尽量模拟人类的行为,这里如果把这种行为抽象为“现实模型”,把深度学习模型称为“虚拟模型”,那么深度学习过程就是训练“虚拟模型”来拟合“现实模型”的过程。
对于软件开发领域来说,一个关键问题是是否存在这样的领域“现实模型”?如果存在,那么ChatGPT应该可以最终学习一个“虚拟模型”来拟合这个“现实模型”,从而最终取代人类的软件开发工程师。
目前来看,这种场景在相对简单的软件开发场景是存在的,即软件开发从需求、设计、编码、测试到部署、维护都可以描述清楚,并且拥有正确串联软件开发过程所有任务的know-how知识,像某些外包场景。但我想对于复杂软件开发场景,可能这样的know-how知识本身还不够完备,所谓的“现实模型”人类自己还没搞清楚,那么自然不能依赖ChatGPT拟合出一个完美的“虚拟模型”。
从这个角度来看,可能会催生一类专业化研究,即把复杂软件开发“模型化”,从而构建完备的软件开发“现实模型”以供大模型学习。同时,这个过程中ChatGPT也可以生成各种不同的“虚拟模型”,帮助人类思考如何更好地构建软件开发“现实模型”。这类研究的未来目标自然是替代软件开发工程师,这也许是目前留给我们的一个机会。
总结来说,我目前对ChatGPT的认知还很有限,感觉上还处于弱人工智能的学习能力。如果有足够的数据并且有完备的“现实模型”可以学习,ChatGPT应该可以替代人类相关工作。就软件开发而言,目前还存在一些数据缺失和领域“现实模型”不完备的场景,因而还无法完全替代人类软件开发工程师,但可能会引发一轮社会分工,使得人类更加偏向专业化和创造性的工作。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-1 17:10
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社