人工智能如何改变我们编写代码的方式

人工智能改变编码方式

ChatGPT和Stack Overflow的证据

来自Pexels的Pavel Danilyuk的照片

简而言之:在本文中,您将找到我对人工智能和工作的最新研究的概述(探索人工智能对生产力的影响,并开启对长期影响的讨论),使用ChatGPT和Stack Overflow示例说明了一种准实验方法(差异性差分),以及如何通过简单的SQL查询从Stack Overflow提取数据。

完整科学文章的链接(请引用):https://arxiv.org/abs/2308.11302

与大多数技术革命一样,ChatGPT的发布引起了人们的着迷和恐惧。一方面,仅仅两个月时间,该应用成为有史以来增长最快的消费者应用程序,拥有1亿月活跃用户。另一方面,高盛的一份报告声称,这种技术可能在全球范围内取代超过3亿个工作岗位[1]。此外,埃隆·马斯克和其他1000多名技术领导者和研究人员签署了一封公开信,敦促暂停最先进的人工智能发展[2]。

“我们只能看到前方的短距离,但我们可以看到需要做的很多。” 阿兰·图灵

与阿兰·图灵的引言一致,本文并不试图英勇地预测人工智能及其影响的遥远未来。然而,我关注的是影响我们的主要可观察结果之一:人工智能如何改变我们的编码方式。

ChatGPT的诞生改变了世界。至少对我这样每天都在编码的人来说,我的世界在一夜之间发生了变化。我不再需要花费几个小时在谷歌上寻找正确的解决方案,或者深入研究Stack Overflow上的答案,并将解决方案翻译成适用于我的具体问题的正确变量名和矩阵维度。我只需要问ChatGPT。这个聊天机器人不仅会在眨眼之间给我一个答案,而且答案会完全适合我的情况(例如正确的名称、数据框维度、变量类型等)。我感到非常惊讶,我的效率突然提高了。

因此,我决定探索ChatGPT发布的大规模影响及其对生产力和我们工作方式的潜在影响。我提出了三个假设(Hs),并使用Stack Overflow数据进行了测试。

H1:ChatGPT减少了在Stack Overflow上提出的问题的数量。如果ChatGPT可以在几秒钟内解决编码问题,我们可以预期在编码社区平台上提问问题并获得答案需要花费的时间会减少。

H2:ChatGPT提高了提出的问题的质量。如果广泛使用ChatGPT,那么在Stack Overflow上剩下的问题必须有更好的文档记录,因为ChatGPT可能已经在一定程度上提供了帮助。

H3:剩下的问题更加复杂。我们可以预期剩下的问题更具挑战性,因为它们可能无法被ChatGPT回答。因此,为了测试这一点,我们正在测试未回答的问题的比例是否增加。此外,我还测试每个问题的浏览次数是否发生变化。如果每个问题的浏览次数保持稳定,这将是剩下的问题复杂性增加的另一个迹象,而不仅仅是由于平台上活动减少引起的。

为了测试这些假设,我将利用ChatGPT在Stack Overflow上突然发布的情况。在2022年11月,当OpenAI公开发布他们的聊天机器人时,没有其他可行的替代方案(例如Google Bard),而且访问是免费的(不像OpenAI ChatGPT 4或Code Interpreter那样限制为付费订阅)。因此,我们可以观察到这次冲击之前和之后在线编码社区的活动如何发生变化。然而,尽管这次冲击是“干净的”,但可能存在其他不明显的影响,因此可能会引起因果关系的质疑。特别是季节性因素(例如发布后的年底假期)以及问题越新,浏览次数越低,找到答案的可能性越低。

理想情况下,为了减少季节性等潜在混淆变量的影响并测量因果效应,我们希望观察没有ChatGPT发布的世界,但这是不可能的(例如因果推断的根本问题)。然而,我将通过利用ChatGPT对与编码相关的问题的答案质量在不同语言间的差异,并使用准实验方法(差异性差分)来限制其他因素干扰效应的风险,从而应对这一挑战。

为了做到这一点,我将比较Python和R在Stack Overflow上的活动。Python是一个显而易见的选择,因为它可以说是最流行的编程语言之一(例如,在TIOBE编程社区指数中排名第一)。Python在网上有大量的资源,为ChatGPT等聊天机器人提供了丰富的训练集。现在,为了与Python进行比较,我选择了R。Python经常被认为是R的最佳替代品,两者都是免费的。然而,R的受欢迎程度较低(例如,在TIOBE编程社区指数中排名第16),因此训练数据可能较少,这意味着ChatGPT的性能较差。经验证据证实了这种差异(更多详细信息请参见“方法”部分)。因此,R代表了Python的一个有效对照(它受季节性影响,但我们可以预期ChatGPT的影响微乎其微)。

图1:ChatGPT对StackOverflow每周问题数量的影响(作者绘制的图表)

上图展示了原始的每周数据。我们可以看到ChatGPT 3.5发布后,关于Python的每周问题数量出现了突然而重要的下降(21.2%),而对R的影响则稍小一些(下降了15.8%)。

这些“定性”观察结果得到了统计模型的验证。后面描述的计量经济学模型发现,每周在Stack Overflow上关于Python的问题数量平均下降了937.7(95% CI:[-1232.8,-642.55];p值= 0.000)。随后的分析利用了Diff-in-Diff方法,进一步揭示了问题质量的改善(通过得分在平台上进行衡量),同时还增加了未解答问题的比例(而每个问题的平均浏览次数似乎没有变化)。因此,本研究为之前定义的三个假设提供了证据。

这些发现强调了人工智能在我们工作方式中的重要作用。通过处理常规查询,生成式人工智能使个人能够将精力投入到更复杂的任务中,同时提高生产力。然而,讨论部分也提到了重要的长期潜在不利影响。

本文的其余部分将介绍数据和方法,然后是结果,并以讨论结束。

数据

数据是通过在Stack Overflow数据探索器门户网站上使用SQL查询提取的(许可证:CC BY-SA)。以下是使用的SQL命令:

SELECT Id, CreationDate, Score, ViewCount, AnswerCountFROM PostsWHERE Tags LIKE '%<python>%'AND CreationDate BETWEEN '2022–10–01' AND '2023–04–30'AND PostTypeId = 1;

然后,我按周聚合数据以减少噪音,从2022年10月17日星期一到2023年3月19日得到了一个数据集,其中包含每周发帖数量、浏览量、每个问题的浏览量、每个问题的平均得分和未解答问题的比例的信息。得分由平台的用户定义,他们可以投票赞成或反对以表示问题是否“有研究成果;它有用且清晰”。

方法

为了测量因果效应,我使用了Diff-in-Diff模型,这是一种计量经济学方法,通常利用时间变化来比较一个受治疗的单位(或多个单位)与一个未接受治疗的组之间的差异。为了了解更多关于这种方法的信息,我可以推荐您阅读两本免费电子书中涉及该方法的章节:《Causal Inference for the Brave and True》和《Causal Inference: The Mixtape》。

简单来说,Diff-in-Diff模型计算双重差异以识别因果效应。这里是一个简化的解释。首先,我们的想法是计算两个简单的差异:受治疗组(ChatGPT发布前)和未受治疗组(分别是Python和R问题)在前期和后期之间的“平均”差异。我们关心的是治疗对受治疗单位(这里是ChatGPT发布对Python问题的影响)的影响。然而,正如前面所说,可能还有另一个与治疗相混淆的影响(例如季节性)。为了解决这个问题,模型的思想是计算双重差异,以检查受治疗组(Python)的第一个差异与第二个差异(对照组R的差异)之间的区别。由于我们预计对照组(R)不会受到治疗效应(或可以忽略不计),而仍然受到季节性等因素的影响,我们可以摆脱这个潜在的混淆因素,并最终测量出一个因果效应。

这里是一个稍微正式一点的表述。

对于处理组的第一个差异:

E[Yᵢₜ| Treatedᵢ, Postₜ]-E[Yᵢₜ| Treatedᵢ, Preₜ] = λₜ+β

这里的i和t分别指代语言(R或Python)和周数。Treated指代与Python相关的问题,Post指代ChatGPT可用的时期。这个简单的差异可能代表了ChatGPT的因果效应(β)+一些时间效应λₜ(例如季节性)。

对于对照组的第一个差异:

E[Yᵢₜ| Controlᵢ, Postₜ]-E[Yᵢₜ| Controlᵢ, Preₜ] = λₜ

对于对照组的简单差异不包括治疗效应(因为它是未处理的),只包括λₜ。

因此,双重差异将给出:

DiD = ( λₜ+β) — λₜ = β

在假设λₜ对两组都是相同的(平行趋势假设,在下面讨论),双重差异将使我们能够确定β,即因果效应。

这个模型的关键在于平行趋势假设。为了宣称一个因果效应,我们应该确信在没有ChatGPT的情况下,Stack Overflow上关于Python(处理组)和关于R(未处理组)的帖子在治疗期间(2022年11月之后)的演变是相同的。然而,显然不可能观察到这一点,因此无法直接进行测试(参见因果推断的基本问题)。 (如果您想了解更多关于这个概念和因果推断的内容,请在Towards Data Science上找到我关于因果关系的视频和文章)。然而,可以测试冲击之前的趋势是否是平行的,这表明对照组是一个潜在的良好“反事实”。使用数据进行的两个不同的安慰剂测试表明,我们无法拒绝预ChatGPT时期的平行趋势假设(测试的p值分别为0.722和0.397(请参见在线附录B))。

正式定义:

Yᵢₜ = β₀ + β₁ Pythonᵢ + β₂ ChatGPTₜ + β₃ Pythonᵢ × ChatGPTₜ + uᵢₜ

“i”和“t”分别对应Stack Overflow上的问题主题(i ∈ {R; Python})和周数。Yᵢₜ代表结果变量:问题数量(H1),平均问题得分(H2)和未答问题比例(H3)。Pythonᵢ是一个二进制变量,如果问题与Python相关,取值为1,否则为0(与R相关)。ChatGPTₜ是另一个二进制变量,在ChatGPT发布以及之后取值为1,否则为0。uᵢₜ是一个在编程语言级别(i)上聚类的误差项。

这个模型的关键在于平行趋势假设。为了宣称一个因果效应,我们应该确信在没有ChatGPT的情况下,Stack Overflow上关于Python(处理组)和关于R(未处理组)的帖子在治疗期间(2022年11月之后)的演变是相同的。然而,显然不可能观察到这一点,因此无法直接进行测试(参见因果推断的基本问题)。 (如果您想了解更多关于这个概念和因果推断的内容,请在Science and Art of Causality上找到我关于因果关系的视频和文章)。然而,可以测试冲击之前的趋势是否是平行的,这表明对照组是一个良好的“反事实”。在这种情况下,使用数据进行的两个不同的安慰剂测试表明,我们无法拒绝预ChatGPT时期的平行趋势假设(测试的p值分别为0.722和0.397(请参见在线附录B))。

结果

H1:ChatGPT减少了在Stack Overflow上提问的数量。

如介绍中所述,Diff-in-Diff模型估计了在Stack Overflow上每周针对Python的问题数量平均下降937.7(95% CI:[-1232.8,-642.55];p值=0.000)。这代表了每周问题数量下降了18%。

图2:ChatGPT对每周问题数量的影响(图片由作者提供)

H2:ChatGPT提高了所提出问题的质量。

ChatGPT可能有助于回答问题(参见H1)。然而,当聊天机器人无法解决问题时,它可能使人们能够进一步了解问题或解决方案的某些要素。该平台允许我们测试这个假设,因为用户可以为每个问题投票,以表示他们是否认为“该问题显示了研究的努力,它是有用和清晰的”(将得分增加1分),或者不是(将得分减少1分)。第二个回归估计问题的平均分数增加了0.07分(95% CI:[-0.0127,0.1518];p值:0.095)(见图3),这代表了41.2%的增长。

图3:ChatGPT对问题质量的影响(图片由作者提供)

H3:剩下的问题更加复杂。

现在我们已经有了一些证据表明ChatGPT能够提供重要帮助(解决问题和帮助记录其他问题),我们希望确认剩下的问题是否更加复杂。为此,我们将着眼于两个方面。首先,我发现未回答问题的比例正在增加(无答案可能是问题更复杂的一个标志)。更具体地说,我发现未回答问题的比例增加了2.21个百分点(95% CI:[0.12,0.30];p值:0.039)(见图4),这代表了6.8%的增长。其次,我们还发现每个问题的浏览量没有变化(我们无法拒绝其不变的零假设,p值为0.477)。这个第二个测试部分排除了一个替代解释,即未回答的问题更多是由于流量减少造成的。

图4:ChatGPT对未回答问题比例的影响(图片由作者提供)

讨论

这些发现支持了生成型人工智能可能通过处理常规问题来改变我们工作方式的观点,使我们能够专注于需要专业知识的更复杂的问题,从而提高我们的生产力。

虽然这个承诺听起来很令人兴奋,但也存在一些负面效应。首先,低技能工作可能会被聊天机器人所取代。其次,这样的工具可能会对我们的学习方式产生负面影响。个人而言,我认为编码就像骑自行车或游泳一样:光看视频或上课是不够的,你必须亲自尝试和失败。如果答案太好了,我们就不会强迫自己学习,很多人可能会在学习上遇到困难。第三,如果Stack Overflow上的问题数量减少,可能会减少生成型人工智能模型训练集的宝贵来源,从而影响其长期性能。

所有这些长期的负面影响尚不明确,需要进行仔细分析。欢迎在评论中告诉我您的想法。

[0] Gallea, Quentin. “从琐碎到有意义:ChatGPT和Stack Overflow对工作动态的影响” arXiv econ.GN(2023)

[1] Hatzius, Jan. “人工智能对经济增长的潜在巨大影响(Briggs/Kodnani)。”高盛(2023)。

[2] https://www.nytimes.com/2023/03/29/technology/ai-artificial-intelligence-musk-risks.html

[3] Bhat, Vasudev, et al. “Min (e) d your tags: Analysis of question response time in stackoverflow.” 2014 IEEE/ACM International Conference on Advances in Social Networks Analysis and Mining (ASONAM 2014). IEEE, (2014)