(关注公众号并设为🌟标,获取最新人工智能资讯和产品)
全文约15,000 字,阅读约需 27分钟
——编程本质是你想让计算机做什么。如今,借助生成式AI,编程不再局限于软件工程师。从市场分析到新闻筛选,再到法律文书,各行各业的专业人士都能通过简单编程显著提升工作效率,拓展职业边界
——AI作为通用技术,跨界融合催生创新。当AI与行业个人携手合作,往往能在医疗、教育、金融等领域激发最具潜力的突破性应用,让每个人都成为全能个体
——面对新兴技术,不应止步于表层认知。穿透抽象层,深入剖析其底层原理,往往能获得意想不到的洞见。正如大语言模型技术,突破管理工具的界限,直探核心机制,常能收获显著的性能提升和创新机会
近日,斯坦福大学邀请了两位著名专家:Andrew Ng(吴恩达)和Mehran Sahami(梅兰·萨哈米)。这两位专家深入讨论了人工智能如何彻底改变代码编写和工作效率的方式。
Andrew Ng作为机器学习和在线教育的先驱,通过课程改变了超一百万人的生活。他是谷歌大脑团队的创始领导者,曾任百度副总裁兼首席科学家,也曾担任斯坦福AI实验室主任。2023年,他被《时代》杂志评为全球100位最具影响力的人工智能人物之一。Mehran Sahami是斯坦福大学的教授,是一位传奇人物。他曾在谷歌担任高级研究科学家,研究领域包括计算机科学教育、人工智能和伦理问题。
AI作为一种通用技术,正在被应用到众多领域。最近,AI在化学和物理学领域的突破为相关研究者赢得了诺贝尔奖。对于软件工程师来说,AI对编程领域的影响尤其令人兴奋。生成式AI(GenAI)正在多方面协助有经验的开发人员,从编写文档、生成代码、调试到架构设计的头脑风暴。AI不仅加快了开发速度,还能提供新的编程视角。例如,在设计模式的应用上,AI可以建议使用工厂方法等高级设计模式,这往往能带来更优雅的解决方案。此外,AI还能帮助开发者更好地理解和应用各种编程库,如Pandas和Streamlit等。
然而,编程教育的核心并不仅仅在于教授特定的编程语言。正如Sahami所强调的,编程教育的真正目的是培养系统化思考问题的能力。这种能力包括如何将大问题分解为小问题,如何解决这些小问题,以及如何将解决方案组合起来应对更大的挑战。这种思维方式不仅适用于编程,也适用于解决现实世界中的复杂问题,如气候变化等。AI技术的不断发展,我们正在进入一个生成和测试的新模式确实使许多团队和个人能够更快地开发软件。
文稿整理
主持人PAXTON HEHMEYER: 让我来介绍一下我们的两位嘉宾,虽然他们可能不需要过多介绍。首先,Andrew Ng(吴恩达)是Deeplearning.ai的创始人,也是AI基金的管理合伙人、LandingAI的创始人兼CEO、Coursera的主席及联合创始人,同时也是斯坦福大学的兼职教授。Mehran Sahami是斯坦福大学计算机科学系的腾讯讲席教授和詹姆斯与埃莉诺·切斯布鲁工程学院的教授。
教授Andrew Ng: 非常感谢!
教授Mehran Sahami: 感谢!感谢!
1、谈AI获得诺贝尔奖
主持人PAXTON HEHMEYER:在我们深入讨论教育之前,我想先从当前热门的LLMs(大语言模型)谈起,Andrew,最近LLMs的广泛应用,你觉得编程和软件开发的职业发生了哪些变化?
Andrew Ng: AI作为一种通用技术,正在被应用到许多领域。我们刚刚看到,今天化学诺贝尔奖颁给了Demis、John和来自华盛顿大学的David Baker,他们利用AI在化学和生物学领域取得了重要突破。就在昨天,物理学诺贝尔奖也授予了杰夫·辛顿(Geoffrey Hinton)和约翰·霍普菲尔德(John Hopfield)。AI正在对许多其他领域产生巨大影响。但作为一名软件工程师,我觉得最令人兴奋的是它对我们这一领域的影响。如果要概括一下我所看到的一切,我觉得最令人兴奋的趋势是速度变得比以往更快,这主要体现在两个方面。首先是有经验的开发人员正在用生成式AI(GenAI)以多种方式进行工作。软件开发人员在工作中会做很多不同的事情,从编写文档、生成代码、调试代码到编写测试用例,再到架构设计的头脑风暴。生成式AI在这些任务上为专业软件开发人员提供了很大的帮助。另一个更加令人兴奋的趋势是,它帮助了更多人进入软件工程领域。现在你不再需要记住那些复杂的语法细节,也不用为代码中某个具体的表达方式绞尽脑汁。很多工具可以让人们快速学习,并在本地化的环境中快速构建引人注目的应用程序,而这些应用程序以往可能需要几个月甚至几年的时间才能学会开发。因此,我感觉整个领域正在快速推进,更多的软件也在加速发布。”
主持人PAXTON HEHMEYER: 这真是非常有趣。所以你观察到了两个层面:一方面是非常有经验的程序员通过使用这些工具来提高效率,完成更多的工作;另一方面是没有太多编程经验的人也能编写出复杂的程序。Mehran,我可以把同样的问题交给你吗?从学术角度或者在斯坦福的角度,你怎么看生成式AI对研究类型或者你在斯坦福看到的事情的影响?
Mehran Sahami: 当然。是的,我觉得可以接着Andrew说的内容谈一下。我们现在正在思考的是工业需求如何转变,以及我们在高等教育和大学层面如何看待这个问题。例如,不久前,我参与了一场对话,当时微软的首席技术官Kevin Scott也在场。他谈到了像Copilot这样的工具在微软的广泛使用,帮助他们的程序员在整个公司范围内变得更高效。但他提到一个关于学术界的有趣观点,即业界对未来一到五年内从大学毕业的学生有这样的期待:他们将具备这些开发代码的技能。所以这不仅仅是我们是否考虑到这个问题的问题,而是学生在大学阶段需要具备这些工具使用技能,才能成为有效的软件工程师。因此,我们是这样思考的:这不是我们是否要做的问题,而是我们在哪里和如何做的问题
我的意思是,我们要在什么层次上让学生将这些工具作为教育过程的一部分,以及这如何改变我们对计算机科学教育传统管道的思考,传统的课程安排应该如何调整。这场讨论目前还没有完全达成共识。有人认为应该在学生接触的第一门课程中引入这些工具,而另一些人则认为,应该在学生完成学位的最后阶段进行大型项目时才使用这些工具,或者介于两者之间的任何阶段。因此,在斯坦福,我们正在探索几种不同的模式。但我认为,这只是一个何时、何地实施的问题,而不是是否要实施的问题,因为这些工具的影响已经如此广泛。
Andrew Ng: 是的,我认为很多学术机构,包括计算机科学和其他学科,都在试图预测未来的工作走向。因为在教育领域,我们不希望培养学生去从事“昨天的工作”。除了为今天的工作做准备之外,我们有时还需要确保学生具备在未来2年、3年、4年、10年甚至20年后仍然有用的技能。而随着生成式AI的快速发展,我认为很明显,未来许多开发者——甚至可能所有开发者——都应该使用生成式AI,因为使用它会比不使用更高效。但工具链的发展速度如此之快,以至于预测哪些基本技能是长期重要且可以推广的,而哪些技能可能会迅速变化,这一直是一个挑战。举个例子,我认为VS Code的GitHub Copilot是一个很棒的工具,它大大提高了生产力。而Cursor这样的工具也非常出色,它可以提供逐行的代码更改,并让你批准或拒绝。而就在上周或两周前,Open AI Canvas推出了另一个优秀的工具,它可以生成代码,然后编辑代码。我发现有效使用这些工具确实需要一些训练,知道何时信任代码,何时不信任代码。
有一件事是几个月前我从朋友那里学到的,以前我拿到代码时,会逐行阅读代码,弄清楚它的作用。但后来发现,如果在Python代码中输入“/*”,生成式AI就能自动为你生成注释,从而帮你节省大量时间。与其阅读所有代码,不如让它写个文档注释,你只需读注释就可以了。因为生成式AI可以比我更快地阅读整个函数并进行描述。这只是一个很小的例子。我认为开发人员学习如何使用生成式AI的流程中还有很多小技巧。看起来我们面前还有很多工作要做,最佳实践仍在不断发展,工具链也在不断演变。
主持人PAXTON HEHMEYER: 哦,Mehran,你有什么要补充的吗?
Mehran Sahami: 不不,我只是想接着Andrew的话说,因为我觉得他有很好的见解。他看到了未来这些工具的发展方向,这就是一种共生关系——工具不仅是在为程序员提供代码,提高他们的生产力。工具还在教会程序员新知识。例如,当程序员使用一种新的语言,想要弄清楚如何使用时,工具生成的示例代码不仅让他们能更快地完成任务,还通过代码本身学习了新知识。正如Andrew所说,他们可以请求生成注释,通过这些工具的使用过程,实际上成为了程序员的学习体验。因此,我们在生产力方面看到了两个效应:一是代码生成本身,二是通过使用这些工具所带来的长期学习。
Andrew Ng: 其实这是一个很棒的观点。几个月前,我自己在尝试编写一个开源项目,如果项目成功,未来可能会发布。但我一个朋友Lawrence Moroney(前Google员工)指出,开发者能从中受益的一个方面是存在许多设计模式,这些模式我自己并不太熟悉,而Mehran可能更熟悉。
几个月前我在编写这个开源项目时,试图弄清楚如何架构代码,结果GPT-4告诉我使用工厂方法(factory method),这是面向对象编程中的一种特定设计模式,坦率地说,我不经常使用它。我没有想到要使用它,但在GPT-4和Claude 3.5的帮助下,我最终用工厂方法架构了代码,这比我原先的解决方案要好得多。它还提醒我什么是工厂方法设计模式。这很有趣。如果你想了解更多,你可以在网上搜索,它是一种面向对象的设计模式,可以在不确定具体类的情况下实例化对象。这确实比我之前的做法更好。我认为,我们在使用生成式AI作为头脑风暴伙伴时,能够更好地理解一些核心的构建块,尤其是我们平时不常用的东西。还有语法问题,对吧?有很多库,比如用于处理数据的Pandas,用于前端的Streamlit,特别是在机器学习应用中。我很喜欢这些库,但坦白说,我经常记不住它们的语法。以前我每次都需要查阅文档,但现在,我已经不太费心去记住语法了。我让生成式AI为我生成代码。现在感觉我们正在进入一种生成和测试的有趣模式,这种模式有点危险。我认为最佳实践还在不断发展,但生成、验证和测试的模式确实让很多团队能够更快地编写出软件。虽然有时候质量很高,有时候质量较低,这一点还未完全确定。
2、谈与AI协同工作
主持人PAXTON HEHMEYER:你们两位提到的观点都非常有趣。Mehran,我想回到课程设置的问题上。Andrew提到,很多有经验的开发者都在使用这些工具,他们已经具备了非常扎实的计算机科学基础。所以当你告诉他们应该使用工厂模式时,他们在某种程度上理解这意味着什么,并能够进行评估。Mehran,你怎么看待这个问题?计算机科学专业的学生仍然需要哪些基础技能?比如他们是否仍然需要学习概率论?是否仍然需要上一门基本的算法课程,了解如何构建算法?我想问你的是,哪些基础技能仍然非常重要,以便学生能够有效使用这些工具?不仅仅是使用工具的界面,而是能够评估结果,成为一个与工具协同思考的合作者?
Mehran Sahami:当然,这是一个很好的问题。它涉及到一个核心问题,即我们是采用“生成并测试”还是“生成并验证”的模式来使用生成式AI工具。我们一直在思考的一个关键问题是,学生需要理解生成的代码,原因有很多。首先,他们需要能够验证代码是否在解决他们试图解决的问题上运行良好。这意味着代码确实适合他们要解决的问题。正如Andrew刚才提到的,在思考解决问题的不同方式时,有些方法在效率、架构上更优,学生需要具备编程上的“品味”,知道什么样的选择更好,什么样的选择较差。因此,学生在做出这些决策之前需要有一些编程经验。例如,我们不会指望学生在第一门课程中使用这些工具生成大部分代码。在第一门课程中,我们希望教学生一些编程的基础技能,比如编程中的主要概念是什么,如何在特定的编程语言中将这些概念结合起来。目前我们在第一门课程中教授的是Python,但我们也曾用C、Java和Pascal教授这门课程。虽然语法因语言而异,但编程中的基础概念是相同的。这告诉我们,编程中的一些基础概念是非常重要的,它们在某种程度上与使用的编程语言的语法并行存在。
此外,我们还会强调编程风格的问题。例如,如何将一个大问题拆解成小部分?如何定义代码各部分之间的接口,以保持模块化,从而避免系统复杂度的增加?如何从心理上模拟代码的执行,以验证代码是否正确,或者调试代码,找到其中的问题?这些都是基础技能。我们认为这些技能在第一门课程中非常重要,甚至在第二门课程中也不会有太大变化,因为学生需要学习它们。当学生掌握了这些技能后,无论代码是由人类还是机器生成的,他们都能够仔细分析代码,找出更好的方法,或进行调试。这种能力从第三门课一直到最后的课程,甚至是学生在本科或高中阶段的毕业设计都会应用到。因此,在教学过程中有很多节点需要触及这些基础知识,尤其是在前几门课程中,这些基础知识不会有太大的变化。
主持人PAXTON HEHMEYER: Andrew,你有什么要补充的吗?你在工作中或与你合作的人身上是否看到一些基础技能,认为它们对评估生成式AI的代码输出至关重要?
Andrew Ng: 我非常同意Mehran的观点。很多核心的基础构建模块依然重要。我可以通过一个例子来说明为什么这些基础技能仍然必要。也许有一天我们会拥有一个能够完成任何人类工作的AGI(通用人工智能),到那时我们就不需要自己考虑这些问题了,但那似乎还很遥远。目前,让AI系统变得更加智能或做出更好决策的瓶颈之一在于,它们仍然缺乏许多上下文信息。人类拥有大量的上下文信息,无论是数据传输问题还是其他原因,AI系统目前还缺乏这些信息。
举个例子,几个月前我在编写一些代码,发现运行速度很慢,于是我决定实现缓存机制。我忘记了如何调用某个Python模块的缓存功能,所以我让生成式AI帮我写了代码,它完成得非常好。然而,反思一下,我之所以能够使用这个工具,是因为我知道“缓存”这个概念,即缓存或记忆化,这些概念是计算机科学入门课程中教授的。如果我不知道缓存这个概念,我根本不会想到让AI生成这段代码。我认为在这个例子中,我能够发挥有用的作用,是因为我具备一些上下文信息,能做出A:软件太慢的决策。我不知道需要多少数据管道或基础设施来为生成式AI提供这些上下文信息,但AI系统自己无法得出这个结论。其次,我知道我们可以使用缓存,我知道内存不是问题,所以我可以快速做出决策,使用缓存来加速处理。这些决策的背景信息和上下文很复杂,也许有一天AI会拥有足够的上下文和背景知识来进行推理和做出这些决策。
但在那之前,优秀的软件工程师和软件架构师拥有非常广泛的背景知识,知道如何去实现他们想要的目标。在我们成功将这些背景知识数字化并输入生成式AI,并且提高其推理能力之前,我们仍然需要人类来做这些高层次的决策,这将会持续相当长的一段时间。”
3、谈人类失去哪些技能
主持人PAXTON HEHMEYER: 这很有意思。Mehran,接着这个话题,我们假设现在已经是未来的5到10年后,你仍在负责计算机科学课程的设置,并观察学生的学习情况。你会为哪些技能的丧失感到遗憾?总是有一种担忧,认为随着技术的发展,某些技能可能会逐渐消失。这可能并不是坏事,也许是好事。如果你不做这个,你就可以做别的事情。我记得你的一位前同事Daphne Koller在最近的一次演讲中提到,她说在机器学习领域,随着技术的进步,研究人员在思考如何将特定问题映射到模型上的能力有所削弱。因为现在你可以直接把数据扔到一个问题上,而不用仔细思考。尤其是在数据稀缺的领域,比如物理系统或自动驾驶等领域,这种能力还是很重要的。那么,我的问题是,接下来的5到10年,你认为会失去哪些技能?你会为此感到遗憾吗?
Mehran Sahami: 这是一个好问题。我想先铺垫一下背景,整体上我看到的机遇多于挑战。我上本科时,斯坦福大学的所有计算机科学专业学生都必须上一门关于机器语言的课程,因为这是让机器运行得更快所需的技能。我认为这是一门有趣的课程,也很有意思,但我并不为现在的学生不需要学习这类课程感到遗憾。我们已经进步到一个阶段,学生可以思考更高层次的问题,而那些底层问题已经被很好地优化了。所以我并不遗憾这一点。
我可能会感到遗憾的是,随着这些系统被架构和构建,学生们是否还具备Andrew提到的“品味”,能够思考那些对代码有重大影响的概念?这是我希望不会消失的东西。比如缓存,这是一个能对代码产生巨大影响的概念。并行化,也是能对代码有重大影响的概念。这些是我不希望学生忽略的东西。我可以设想一个世界,随着技术的发展,我们将越来越多地关注更高层次的事物。但我希望我们不要忘记低层次的事情,因为它们可能会对上层的东西产生巨大的影响。当然,现实是并不需要每个人都专注于这些低层次的问题,只需要有一部分人专门研究它,其他人可以从他们的工作中受益。这让我想起了Facebook还叫做Facebook而不是Meta时的一个例子,他们当时使用的是PHP作为编程语言。他们有一个团队专门负责优化PHP的性能。最有趣的是,只要他们的团队提高了性能,整个公司的其他人都能从中受益,因为他们的代码是基于这个底层堆栈之上的。甚至有一次,我记得当时的CTO Mike Schrepfer提到,他们在考虑未来几季度的机器需求时,发现他们的需求实际上减少了,因为性能的提高使他们腾出了很多机器。
我认为随着工具越来越智能,我们可能会朝着这样一个世界发展。但我不希望忽视那些仍然在低层工作的人,他们为大家带来了优化的好处。如果我们所有人都只坐在上层,最终我们会失去那些底层的优化能力。
主持人PAXTON HEHMEYER: Andrew,我有一个后续问题,但在此之前,你有什么要补充的吗?
Andrew Ng: Mehran说得非常好。计算机科学取得如此多进展的原因之一是它拥有多个抽象层次。从量子物理到晶体管,再到半导体、汇编语言、低级和高级编程语言。在人工智能领域,我们有学习算法、基础模型和应用程序。所以这是一个非常庞大的体系。我认为现在仍然有人在研究量子物理和晶体管的物理原理,这很好。有些人专注于不同层次的工作。
我学到的一点是,当有新技术出现时,能够深入几层去理解其背后的原理是非常有帮助的。例如,现在的大语言模型技术还相对不成熟,有一些编排层可以帮助人们管理基于大语言模型的工作负载。但由于这项技术还不够成熟,如果你能突破那个抽象层,深入到下一层,通常你会获得更好的性能。汇编语言是一个例子。曾几何时,普通人可以写出比编译器更优化的汇编代码。但坦白说,今天我不想再与编译器竞争来优化代码了,有些人可以,但不是我。因此,我们现在只在较高的抽象层次上操作。
因此,我认为随着抽象层次的动态发展,有时我们确实需要教学生深入到几层去理解背后的机制。例如,大多数时候我不会关心排序函数,我只会调用别人写好的库来进行排序,这样就可以正常工作。但如果你要处理非常大的文件,需要将数据交换到磁盘中,因为内存不够用,那么理解排序的工作原理会帮助你更好地设计排序算法。这是一个特例,大部分情况下我不需要关心排序。但在处理非常大的数据集时,理解排序的原理仍然有助于提高性能。所以我认为,计算机科学系在随着抽象层次的提升时,仍然需要深思熟虑,决定要让学生在多大程度上深入学习某些层次的内容。有时这是有用的,有时则不那么必要。”
4、谈AI对工作影响
主持人PAXTON HEHMEYER: 这真的很有趣。我想回到这些抽象层次的问题上,不过Andrew,我先接着刚才的话题问一下。在谈论AI,特别是生成式AI对工作的影响时,你提出了一个非常有用的框架:不要只想着工作本身,而是要思考你所做的任务,以及AI将如何影响这些任务。我希望你能进一步解释一下这个观点。特别是,我从你们两位的讨论中听到,未来可能会有这样一个世界:几年后,很多目前我可能需要找到斯坦福的计算机科学学生来完成的任务,比如写一个网络爬虫,比较我们的网站和斯坦福网站的内容,确保我们的网站没有不同步的地方。未来,这些程序可能可以交给一个没有强大计算机科学背景的人来完成。我可以像给学生写指令一样,把这些任务写成指令输入到大语言模型中,它就会为我生成代码。所以,很多这些较低层次的任务将会被分配给那些没有正式计算机科学教育背景的人,而计算机科学家们则会专注于更深层次的抽象,思考如何进行优化。这是一个比较大的问题,Andrew,我想听听你对AI如何影响工作的看法,特别是在任务层面,你能否详细说明一下?
Andrew Ng: 是的,我其实想感谢Erik Brynjolfsson以及他的同事们,比如Tom Mitchell、Daniel Rock和其他人,他们开创了任务为基础的工作分析方法。在社会、政府和学术层面,我们常常担心AI会自动化工作。为了帮助个人寻找机会,我发现Erik教会我的一个更有用的方法是:分析一份工作,将其分解为各个任务,看看AI能自动化或增强哪些任务。我很想看到的是——我真的想鼓励世界上几乎所有人都学习编程。我认为对于许多知识工作者来说,甚至几乎所有人来说,这都是值得的。以前的社会曾讨论过是否所有人都应该学习识字。那时有人认为你不需要学会读写,只要让别人来做所有的阅读工作就行了。但幸运的是,我们已经超越了那个阶段。
今天我们仍然在讨论,是否所有人都应该学习编程?我认为答案是肯定的。我的孩子还比较小,但我计划在他们稍微大一点时教他们编程。因为能够准确地告诉计算机你想让它做什么,对我来说,这就是编程的核心。这不是关于语法。我喜欢Python,但它不仅仅是Python编程语言,而是你能够把一个问题拆解开,然后系统地告诉计算机该怎么做的能力。我确实看到了一种奇怪的、几乎是趋同的现象,虽然我不想夸大其词:英语和Python之间的关系越来越紧密。现在我的Python代码中有越来越多的英语成分,因为我在写指令,告诉计算机该做什么。同时,当我写英语的时候,我会采用一种结构化的方式,逐步描述,比如:先做这个,再做那个。所以我写的英语看起来有点像伪代码。
但我认为编程的核心是能够精确地决定你想让计算机做什么,并准确地告诉它。我看到很多人在他们的工作中不是专业的软件工程师,但他们现在也在写代码。我的一位市场营销团队成员实际上编写了代码来抓取网站,帮助他收集市场情报。我的另一位团队成员是一位记者,他写代码来标记他需要关注的有趣新闻故事。还有一位团队成员是一位投资者,他写代码试图自动生成法律合同。所以我看到很多人虽然工作角色不是软件工程师,但通过生成式AI作为编程助手,编写一点代码变得更加容易,并且在很多工作岗位上极大地提高了生产力。”
主持人PAXTON HEHMEYER: 这真的很有意思。Mehran,我还有一个问题,虽然我们还没深入讨论抽象层次的内容,但我想基于Andrew刚才提到的观点继续讨论。我知道你曾多次提到过,特别是在大约10年前你领导斯坦福课程改革时,计算机科学作为一种计算思维方式,实际上就是如何分解问题的过程。所以我想请你在Andrew的基础上进一步阐述一下你对计算机科学入门课程的思考。听起来你们真正想培养学生的是如何思考这些系统是如何工作的,如何系统地思考并分解问题。我也很喜欢你们谈到的“可读编程”这一概念,这是Don Knuth的想法,他也是斯坦福大学的教授,对吧?他在大约40年前提出了这一概念。所以,我想请你谈谈这个问题。
Mehran Sahami: 是的,这是我们需要牢记的一点。你会发现这些主题会反复出现,因为它们确实很重要。例如,当我们在教授编程时,我们会考虑课程的设计,思考学生技能的演变。在第一门课程中,我实际上会告诉学生一些让他们感到困惑的事情。到了学期的第十周,他们已经学了很多Python,进行了大量的编程,我会上台告诉他们:这门课其实不是关于编程的。然后他们会想,“你在说什么?我们这周刚刚做了一大堆编程。”我会说,是的,我们确实教了你们Python,但我们真正想让你们理解的是如何将问题系统化地思考。正如Andrew所说,如何将问题分解为更小的部分?如何解决这些更小的部分?然后再将它们组合起来解决一个更大的问题。这其实是我们在现实世界中解决大问题的方式。我们不可能仅靠一个人就解决气候变化问题,而是需要将各个部分系统化地结合在一起,才能找到更好的解决方案。编程是一种能够将这种思维方式以计算机可以执行的方式加以描述的方法,但它实际上也澄清了我们自己的思维过程、解决问题的过程和问题分解的过程。
因此,当我们思考生成式AI在其中的作用时,它在某种意义上是一个与我们共生的伙伴,帮助我们思考可以用不同方式分解问题。当我们将问题分解到一定层次时,解决问题所需的最低层次可能不再像以前那样需要我们自己生成代码了,这让很多人能够更容易地思考自己能够贡献哪些部分。因此,我认为我们提供的是一种赋能,编程作为解决问题或计算思维的一部分,将继续存在。我们现在通过AI工具思考这些部分是什么,如何设计它们,并将它们组合起来,只是为我们提供了更多的“强力工具”。我对这些工具在多个层面上的影响感到非常兴奋。回到这个问题的本质,这不仅仅是关于编程,更多的是关于思维的清晰性,因为你必须以足够清晰的方式向计算机描述你的想法,才能让它执行。这种清晰的思维方式也是人与人之间交流中非常重要的能力。
主持人PAXTON HEHMEYER:这真的很有趣。
Andrew Ng: 我想说些可能有点奇怪的话,不过还是说出来吧。最近有一些非常有趣的研究表明,如果你在训练大语言模型时同时训练它进行编程,它在处理与编程无关的任务时也会表现得更好。我记得最近我们看到了一个名为Strawberry的模型,其开发工作主要集中在编程和解决数学难题上。但我发现它在非编程和非数学任务上表现也非常好。如果你相信这些研究,虽然它们的证据还不够充分,但可能会表明,学习编程能让生成式AI在处理其他问题时表现得更好。而我有时会想,这是否也适用于人类?学习编程教会了我们一种分解问题、逐步解决问题的框架,这也许能帮助我们解决其他类型的问题。这可能是另一个鼓励大家学习编程的理由。
Mehran Sahami: 为了补充你所说的观点,我认为这是一个很好的观点。其实这并不那么奇怪,背后有一定的直觉道理。卡尔·韦曼——我们刚才讨论了诺贝尔奖,他是物理学诺贝尔奖得主,职业生涯的后半段专注于教育领域,致力于将科学发现方法引入教育。他几年前做了一项非常有趣的研究,研究的是如何学习电路功能的问题。实验中有一些输入和输出,学生们需要理解电路的工作原理。他让不同专业的学生尝试解决这个问题,结果发现,无论是哪个专业的学生,表现都差不多,直到他看到计算机科学专业的学生,他们的表现明显不同。他给我发了一封电子邮件,问我:“你们那边到底在教什么?为什么这些孩子的表现比其他专业的学生高出两个标准差?”其他学生都是斯坦福的学生,他们都非常聪明。我思考了一下,我觉得关键在于系统化思维。计算机是以系统化的方式执行任务的,作为人类,如果你想在脑海中模拟这种执行方式,理解机制的工作原理,你就需要以系统化的方式来思考问题。什么是执行模型?输入如何映射到输出?因此,如果计算机在某种意义上是基于这种思维模式进行学习并形成某种泛化,那么它将这种泛化应用到其他任务中也就不足为奇了。
5、谈AI带来变革
主持人PAXTON HEHMEYER:这真的是非常有趣。Mehran,我想暂时跳出刚才讨论的深入层次,来谈谈你提到的更高的抽象层次。我知道在计算机科学教育领域,最近有一些很重要的变化,但你最近在教学中做了很多与社会影响相关的讨论,不再仅仅将计算机科学视为纯粹的编程工具,而是如何利用计算机科学解决更大的社会问题。你能谈谈你在这方面的工作吗?以及斯坦福在思考伦理和计算的社会影响时的变化,尤其是在生成式AI的背景下,这些思考可能会发生什么变化?
Mehran Sahami: 当然。我们希望学生作为计算机科学家和程序员,能够意识到自己掌握了这些强大的工具。而随着生成式AI的发展,这些工具的规模只会不断扩大。因此,了解你所构建的系统的影响变得尤为重要。谁将受到影响?受到的影响是什么?不同的群体将会受到不同的影响。几年前我们启动了一个名为“嵌入式伦理”(Embedded Ethics)的项目,这个项目实际上是基于哈佛的一个类似项目。在包括Andrew帮助开创的机器学习课程在内的多个课程中,嵌入了一些模块,讨论在技术工作中出现的特定社会问题。无论是算法决策中的公平性问题,还是与隐私相关的数据维护问题,或者人们对自己数据的权利问题,亦或是你所选择的优化函数——不同的优化目标会带来不同的影响,等等。这些社会问题嵌入到课程中,让学生们能够看到技术工作与社会之间的联系,并意识到他们在行业中或学术研究中所做的工作会产生社会效应,有时是直接的,有时是间接的。理解并重视这些影响,可以帮助他们在解决问题、部署技术以及设置相应的保障措施时做出更好的决策。
Andrew Ng: 是的,我想补充一点。很多年前,我亲眼看到Mehran致力于将这种负责任的AI理念融入整个计算机科学课程中。而且这是在AI安全问题成为热门话题之前很久就开始的。不幸的是,“AI安全”这个术语后来部分被科幻式的末日场景所占据。但我亲眼看到Mehran与他人合著了一本名为《系统错误》(System Error)的书,讨论了一些实际存在的偏见问题、系统性错误以及如何采取切实的行动来解决这些问题。我觉得有点遗憾的是,AI安全的一部分走向了科幻式的“邪恶机器人”或“末日”场景,而忽略了这些现实中的重要工作。我看到Mehran在斯坦福一直以非常实际的方式推动AI安全问题,早在AI安全变成其他东西之前。
Mehran Sahami: 我觉得你的观点也非常有洞见,Andrew。你所做的工作,包括向参议院提供的证词,重点不是技术本身,而是如何从监管角度看待人们试图解决的问题和任务,这正好反映了我们应该关注的现实问题。这些现实问题才是我们需要密切关注的,因为它们才会产生真正的影响。相比之下,担心末日场景或者仅仅关注技术的强大性并不那么重要。技术会变得越来越强大,这已经是毋庸置疑的,但我们如何使用这些技术才是关键的思考点,尤其是在制定相关法规时。
6、谈未来知识的价值
主持人PAXTON HEHMEYER: 接着这个话题,Andrew,你刚才提到编程,现在你认为每个人都应该学习编程,它是一项基本技能。也许我们可以进一步推展这个观点,正如Mehran所说,编程是一种解决问题的策略。如何将一个问题分解成具体的任务或挑战。我想问的是,你怎么看待领域知识的价值?事实上,早在互联网和Google搜索兴起时,很多研究已经表明,人们会高估自己的知识量,因为这些信息虽然不在你的大脑里,但可以通过互联网这个大脑的延伸来获取。我听说,不仅仅是计算机科学系,其他学科也在注意到这一现象,即有些研究生在数据科学和统计方法方面有很深的理解,但他们可能在自己的领域内失去了部分核心的领域知识。因此,随着越来越多的人可以获取这些技能、计算方法或大语言模型,你认为领域知识的作用在哪里?我们是否需要更多拥有深厚政策知识的人,不仅仅是问题解决的层面,而是在非常实际的层面上,比如法律等?领域知识在这一过程中会走向何方?
Andrew Ng: 是的,当你谈到AI时,我认为AI最令人兴奋的地方在于它被应用到某个实际领域时所创造的价值。孤立的技术——我不知道该怎么说——坦率地讲,如果我们不能将它应用到某些真正重要的事情上,它是没有多大用处的。AI是一种通用技术,几乎在各个经济领域都有机会找到有吸引力的应用场景,比如医疗、教育、金融服务、物流等等。而我发现,很多最激动人心的项目,都是我作为一个AI专家,与拥有深厚领域知识的人合作时产生的。
在这些合作中,我常常对相关领域知之甚少,甚至无权参与这些领域,但正因为有这样的合作,才让我有机会涉足这些领域。实际上,我在斯坦福的一些学生在AI和医疗领域做了很多工作。坦率地讲,经过多年的合作,我确实学到了不少关于医疗的知识,但与医学院的医生相比,我的知识实在是微不足道的。那些全职医生在这个领域已经学习和研究了很长时间,他们的知识深度是我无法比拟的。因此,我发现,当AI专家与拥有深厚领域知识的医疗专家或其他领域的专家合作时,往往能带来令人激动的应用机会。这种合作才是真正有价值的。
主持人PAXTON HEHMEYER: Mehran,你有什么想补充的吗?我知道在计算机科学系,你们有很多专门化领域。而其他一些学科本身就具有计算特性,但同时又是特定领域的,比如生物医学数据科学或计算生物学等。你怎么看呢?
Mehran Sahami: 我觉得Andrew说得非常到位。要在某个领域解决特定问题,你确实需要具备一定的领域知识,才能理解什么问题值得解决,哪些问题有价值,过去采用过哪些方法,以及这些方法的成败情况。如果你考虑到可以用来解决问题的所有方法的全景图,那范围是巨大的。而领域知识可以帮助你缩小范围,找到成功概率较高的方向。通过与具备计算技能或其他领域技能的人合作,你可以进一步缩小使用哪些技术、如何更有效地解决问题的范围。同时,这也能开阔你的视野。Andrew提到的医疗领域是一个巨大的应用场景,未来我们可能会看到AI在这个领域带来更多的好处。
过去几年,我一直与一些政治学家合作,讨论政策相关的问题。政策制定过程、如何看待政策、基于危害的框架和基于权利的框架——这些都是我之前不太了解的内容。但我能从技术的角度提供一些视角,思考如果我们讨论的是隐私问题,该如何权衡技术的价值,以及如何在保持这些价值的前提下制定有意义的政策。这种跨领域的合作真正展现了领域知识的价值。如果没有与具备深厚背景知识的人进行对话,我是不可能对这些问题有这么深刻的理解的。
Andrew Ng: 还有一点,Mehran,我现在看到的一种令人兴奋但也令人压力倍增的动态是——之前我提到,生成式AI让很多团队的工作效率提升了很多。由于AI和计算机科学与许多行业深度融合,计算机科学推动的快速节奏实际上也在给许多其他行业带来压力,促使它们也必须加快速度。以医疗为例,FDA的批准可能需要六个月甚至更长时间,但现在计算机科学家,尤其是因为有了生成式AI的加持,能够在几天甚至几周内构建出原本需要几个月的应用。有很多应用过去我需要花一年时间开发,但现在成千上万的人只需一个周末就能完成,都是因为新技术的发展。当然,“快速行动并打破常规”这一理念曾受到批评,因为一些人确实动得太快,导致事情破坏了,这是一个问题。不过,我认为也有办法做到快速行动并且负责任。Jeff Bezos曾说过,可以选择“可逆的两扇门而不是不可逆的一扇门”,意思是你可以快速行动,但不一定非得破坏什么。有很多方法可以以负责任的方式编写软件、进行实验,而不会对他人造成伤害。
我发现,在很多行业和应用中,你确实可以非常快速地推进。因此,我经常与大型公司的高层交流,CEO或董事会会邀请我讨论如何在技术之外的行业中应用这些快速推进的能力,比如制造业、医疗等,看看如何通过新的企业流程来适应现在计算机科学和AI所带来的速度提升。坦率地说,如果你的行业因为其自然节奏而缓慢推进,而竞争对手却能在一周内完成你需要一年来完成的工作,这就会形成一个非常具有挑战性的动态。因此,我认为生成式AI赋能的计算机科学和AI带来的速度,确实给很多人带来了压力,坦白说,我对这种压力感同身受。这确实是一个挑战,但如果我们共同努力,我相信这能帮助很多行业和许多人变得更好。
7、谈AI时代编程技能
主持人PAXTON HEHMEYER:继续这个话题,Andrew,我想快速跟进一下。你刚才提到编程和教育,你认为每个人都应该学习编程,这是一项基本技能。那么,你认为目前的压力部分来自于计算机科学专业的人才不足吗?还是说如果有更多人学习CS106A和B,我们就能解决一些这些问题?换句话说,目前速度上的瓶颈是否是因为具备技术背景的人太少了?
Andrew Ng: 的确存在大量人才短缺,尤其是那些具备执行AI项目所需技能的人。我知道计算机科学相关的就业市场有时起伏不定,但真正掌握技能的人远远不够。而CS106A和CS106X是通往掌握计算机科学技能的极好第一步。
Mehran Sahami:谢谢你的推荐,Andrew。我完全同意你的观点。不过,人们经常问,AI到底是会创造工作,还是会导致失业?它会消灭工作吗?我记得有一次被一群科技公司的CEO问到这个问题,我的回答是,AI既不会创造工作,也不会消灭工作。你们才是会创造或消灭工作的人。AI只是一项使能技术,它可能会改变生产力的格局,问题在于人类如何决定利用这种生产力带来的增益或损失。举个简单的例子,假设你在一个软件公司使用了生成式AI,结果使整个公司提高了20%的生产力。此时,某个高管必须决定如何利用这20%的生产力增益——是追求更多的产品、更多的功能,还是减少20%的工程师?这实际上是人类的决策,而不是AI的决策。我们需要始终记住,AI会改变人们工作的效率和生产力,但最终如何利用这些生产力增益,仍然是由人类决定的。
主持人PAXTON HEHMEYER: 这总结得很好。我非常喜欢你们提到的这个概念——“快速行动并负责任”。我也很喜欢,Andrew,你提到的AI正在拓展我们的工作范围,Mehran则谈到了我们可以做出更多、更好的决策,合理配置资源。最后,关于教育层面的问题,我认为结论是:大家都应该学习编程,学习如何以计算思维方式进行思考,并且能够系统地分解问题。在结束之前,有什么是你们还没有机会提到的,或者现在想补充的吗?Mehran,你有什么想补充的吗?
Mehran Sahami:其实还有很多可以补充的内容。不过鉴于时间有限,我想说的是,在AI带来的焦虑与机遇之间,如果我们能够专注于机遇,同时保持不断提升我们的技能,就像Andrew提到的,AI确实是一种加速器,它让事物发展得更快。这意味着我们也需要以更快的速度前进,以跟上这些变化。但如果我们能够做到这一点,机会将是巨大的。
主持人PAXTON HEHMEYER: 很棒。Andrew,你有任何想补充的吗?
Andrew Ng: 你已经总结得非常到位了,谢谢。我认为,AI的民主化以及为所有人带来的新机遇是巨大的。如今,有很多工作岗位,我无法想象雇佣一个不会使用网络搜索的人。就像你无法想象一个不会上网的人如何在很多公司里做市场营销、招聘等工作。我认为我们终将走到这样一个地步,在很多工作岗位上,能够使用AI甚至会写一点代码将成为巨大的优势。我最近在开发一门“AI Python初学者”在线课程,旨在教授一些相关技能。让我感到兴奋的是,看到我的朋友们学习了一点代码后,在短短几天或几周内开发出了非常有价值的应用,而他们并非传统意义上的软件工程师。因此,我认为未来会有很多机会,强大的软件工程师可以变得更加高效。而我也无法想象未来的软件工程师不使用AI。
此外,AI的趋势让每个人都能更轻松地编写代码,即使他们不是软件工程师。现在,很多人可以编写AI应用程序,也就是说,你可以调用一些AI系统来完成很多工作。因此,在不久的将来,即使你只会一点点编程,也将比完全不会编程的人强大得多。我认为挑战在于如何帮助所有人,就像很多人必须学会使用互联网一样。那些学得更快的人,往往能更快地完成更多工作。现在,这个美妙的、成本极低的工具已经出现,它可以帮助很多人掌握新技能,为他们自己、他们的家庭和社区创造价值。
主持人PAXTON HEHMEYER:谢谢你们两位。很幸运能够有你们两位领导这项教育工作,教导大家如何应对这些挑战。所以,感谢你们,也感谢所有参与的观众。
Andrew Ng: 谢谢大家。
Mehran Sahami: 谢谢。
原视频链接:https://www.youtube.com/watch?v=J91_npj0Nfw&t=779s&ab_channel=StanfordOnline
对了,喜欢就别忘了点赞、收藏、转发支持一下!期待在评论区听到你的观点和看法!
往期回顾
1、[独家视频访谈《人类简史》尤瓦尔·赫拉利:阔别六年重磅力作《智人之上:AI简史》,帮你从大历史视角看待AI对我们的巨大影]
3、[演讲视频:2024年第65届国际奥数大会上,陶哲轩再次表示当前AI进展惊人,智能水平已与人类相当]
3、[Anthropic CEO 万字长文:我认为AGI最早会在 2026 年出现,机器可以像人类一样协助办公]
我们旨在将 AI 科技与创新想法完美融合!
想要掌握人工智能,但不知从何开始?告诉我们你的需求,学习AI让你抓住这波浪潮
告别昂贵服务和缺人烦恼,再见漫长交付周期
无限创意,分分钟生成专业级产品
感受 AI 带来的全新工作体验!
欢迎各大品牌方、媒体、企业和个人等
请联系负责人微信:Milo-1101
--END--