由于最近发布了ChatGPT,人工智能再次热闹起来,ChatGPT 是一种自然语言聊天机器人,人们用它来写电子邮件、诗歌、歌词和大学论文。早期采用者甚至用它来编写Python 代码,以及对 shellcode 进行逆向工程并用 C 重写。ChatGPT 给那些渴望人工智能实际应用到来的人们带来了希望,但它也引出了一个问题:它是否会取代作家和开发人员,就像机器人和计算机取代一些收银员、装配线工人一样,也许在未来,出租车司机。
很难说人工智能文本创建功能在未来会变得多么复杂,因为该技术会吸收越来越多的在线写作示例。但我认为它的编程能力非常有限。如果有什么不同的话,它最终可能只是开发人员工具包中的另一个工具,用于处理不需要软件工程师提供的批判性思维技能的任务。
ChatGPT 给很多人留下了深刻的印象,因为它在模拟人类对话方面做得很好,而且听起来知识渊博。它由流行的文本到图像人工智能引擎 DALL-E 的创建者OpenAI开发,由一个大型语言模型提供支持,该模型经过从互联网上抓取的大量文本(包括代码存储库)的训练。它使用算法来分析文本,而人类则对系统的训练进行微调,以用听起来像人类写的完整句子来回答用户问题。
但 ChatGPT 也有缺陷,同样的限制阻碍了它用于编写内容,也导致它在创建代码时不可靠。因为它基于数据,而不是人类智能,所以它的句子听起来连贯,但无法提供批判性的知情回应。它还重新利用仇恨言论等攻击性内容。答案可能听起来很合理,但可能非常不准确。例如,当被问及 1,000 和 1,062 这两个数字中哪一个更大时,ChatGPT 将自信地给出一个充分合理的回答:1,000 更大。
OpenAI 的网站提供了使用 ChatGPT 帮助调试代码的示例。响应是根据先前的代码生成的,缺乏复制基于人工的 QA 的能力,这意味着它可能生成有错误和错误的代码。OpenAI 承认 ChatGPT“有时会写出听起来有道理但不正确或无意义的答案。” 这就是为什么它不应该直接用于任何程序的制作。
缺乏可靠性已经给开发者社区带来了问题。Stack Overflow是一个问答网站,程序员用来编写代码并对其进行故障排除,该网站暂时禁止其使用,称 ChatGPT 生成的响应量如此之大,以至于无法跟上质量控制,而质量控制是由 ChatGPT 完成的。人类。“总体而言,由于从 ChatGPT 获得正确答案的平均率太低,因此发布由 ChatGPT 创建的答案对网站以及询问或寻找正确答案的用户来说非常有害。”
抛开编码错误不谈,由于 ChatGPT 与所有机器学习工具一样,都是根据适合其结果的数据(在本例中为文本性质)进行训练的,因此它缺乏理解人类计算环境以进行良好编程的能力。软件工程师需要了解他们正在创建的软件的预期目的以及将使用该软件的人。好的软件不能通过将程序与反省的代码拼凑在一起来构建。
例如,ChatGPT 无法理解简单需求中的歧义。尽管很明显,如果一个球只是弹起并返回,而另一个球弹起然后再次弹起,则第二个球会移动得更远,但 ChatGPT 很难处理这种细微差别;如果这些系统要从开发人员手中接管,就需要这种细微差别。
它在基础数学方面也遇到了麻烦,例如当它被要求确定哪个更大并提供负数和正数之间的选择时。ChatGPT 自信地告诉我们正确的空间总和,但无法理解 -5 小于 4。想象一下您的恒温器失控,因为加热在 40 摄氏度而不是 -5 摄氏度开始,因为人工智能程序对其进行了编码方式!
预先训练的人工智能代码生成也引发了一些有关知识产权的法律问题;目前它无法区分以限制性方式或开放方式许可的代码。如果人工智能从受版权保护的存储库借用预先编写的代码行,这可能会让人们面临许可合规风险。这个问题已经引发了针对另一款基于 OpenAI 的产品GitHub Copilot的集体诉讼。
我们需要人类来创建人们依赖的软件,但这并不是说人工智能在软件开发中没有一席之地。就像安全运营中心使用自动化来进行扫描、监控和基本事件响应一样,人工智能可以作为处理较低级别任务的编程工具。
在某种程度上,这种情况已经发生。GitHub Copilot 允许开发人员使用 ChatGPT 改进代码、添加测试并查找错误。Amazon 提供CodeWhisperer,这是一种机器语言驱动的工具,旨在使用集成环境中的自然语言注释和代码生成的代码建议来帮助提高开发人员的工作效率。有人创建了一个与 ChatGPT 一起使用的Visual Studio 代码扩展。
一家公司正在为开发人员测试人工智能。DeepMind 与谷歌共享母公司,今年早些时候发布了自己的代码生成工具,名为AlphaCode 。DeepMind 本月早些时候在《科学》杂志上发表了 Codeforces 平台竞赛模拟评估结果,标题为“机器学习系统也能编程”。除了标题语法之外,AlphaCode 通过解决“需要结合批判性思维、逻辑、算法、编码和自然语言理解”的问题,在参与者中排名前 54%。该论文的摘要称:“此类编码平台的开发可能会对程序员的生产力产生巨大影响。它甚至可能通过将人类工作转移到制定问题上来改变编程文化,而机器学习……负责生成和执行代码。”
机器学习系统每天都变得越来越先进;然而,它们无法像人脑一样思考。过去 40 多年的人工智能研究都是如此。虽然这些系统可以识别模式并提高简单任务的生产力,但它们可能并不总是能像人类一样生成代码。在我们让计算机大规模生成代码之前,我们可能应该看到像 AlphaCode 这样的系统在 Codeforces 这样的平台上排名前 75% 的参与者中,尽管我担心这对于这样的系统来说可能太多了。与此同时,机器学习可以帮助解决未来的简单编程问题,让未来的开发人员能够思考更复杂的问题。
目前,ChatGPT 不会颠覆任何技术领域,尤其是软件工程。对机器人取代程序员的担忧被过分夸大了。总有一些任务是具有人类认知的开发人员可以完成而机器永远无法完成的。
标签:开发人员,人工智能,代码,编程,开发者,人类,2023,ChatGPT From: https://blog.51cto.com/u_15605878/9163918