混沌大学 03-16
微软中国首席技术官:AI正在修改我们做事的结构
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

前日,Cognition 公司宣布世界上第一个 AI 程序员 Devin 诞生。

它能自主学习不熟悉的技术,端到端地处理整个开发项目。甚至可以自行修改 bug,训练自己的 AI 模型。

SWE-bench 基准测试表明,Devin 能够处理 13.86% 的问题,表现远超过 Llama、GPT-4 等 AI 大模型。

这一则新闻一出现,立即引爆了整个科技圈,就连 SPotify 的工程师也深感担忧,表示:" 目前尚不清楚智能体会在几年内取代软件开发人员,但免费午餐已经不复存在。"

Devin 的出现再一次提醒了我们,理解机器人、掌控机器人,以及学会与机器人共存已经变得十分迫切。

在此背景下,今天上午,微软中国首席技术官韦青老师坐客混沌,为同学们带来一堂更加落地实操的 AI 课程。

基础班,他帮助我们学会以工程师的视角写提示词,以便更好地让机器人理解我们的意图。提高班,他为我们厘清了智能体的形成与发展,通过实证的方式分享了多个智能应用开发案例。

以下根据课程内容整理:

授课老师 | 韦青 微软(中国)首席技术官 & 工程师

编辑 | 混沌商业研究团队

支持 | 混沌前沿课

基础班:机器有自己的语言

今天,我将针对 " 个人与企业的智能化转型 " 这个话题探讨一些应用、一些方法,试图以一种实证的方式让大家领会这项新技术。希望通过我的梳理,帮助大家厘清思路,加速成长为新时代的机器使用者。

开始前,我想要提醒大家,思考不能沦为空想,就算我们已经看到了山的顶峰,不意味着我们已经踏入其中。如果只靠想象存活在这个范式巨变的时代里,我们将寸步难行,哪里也抵达不了。所以,想象只是初始阶段,亲身尝试才是我们更应该留心的。

机器有自己的语言。虽然人类交流的语言与程序员的计算机语言不尽相同,但本质上是相似的。从语法、语义、语用的角度来讲,同样有能指,也有所指,有不同的语法保证语义。

当我们尝试去描述世界的时候,人与人之间的交流往往会有潜台词,比如我以为你知道,所以我不用说出来。但是机器跟我们没有这样情感上的默契,这说明如果我们能够对机器如何理解世界、如何处理数据、如何表征世界有一定了解,能够极大地提高我们操作、控制、使用机器的能力。

使用机器最好的方法,是把自己放在程序员的位置,了解他们是怎么在计算机面前描述世界的。举例说明:大家都知道,世上的所有事情都是靠人或者人指派的对象一步一步实现的,也就是说,我们在描述事情时,不需要达到计算机语言的水准。而且真正的程序员有时候也不一定要写计算机语言。计算机行业里,有一种方式叫 " 伪代码 ",程序员写了一个大致的逻辑,但并不是严谨到能够让计算机识别的一种约定俗成的、逻辑性比较强的描述方式。

某种意义来讲,如果我们以伪代码的方式,不是特别严谨和古板地描述一件事情的流程,基本上会有三个类型:顺序结构 、 选择结构、循环结构。

我们设想一下行动的步骤,往往是做了第一步之后做第二步、第三步、第四步。要么做到第四步之后出现多条路径,我们要对此做一些判断和比对。第三种类型—— " 不断地重复的 " 即 " 循环 ",是指达到目标后继续往下走,或是未达成目标,不断回到起点,再重新操作一遍。虽然这些方式看起来很简单,但我们一旦学会用一种相对抽象的方式去描述世界的话,我们的日常生活的事情也会慢慢地井井有条,更加符合逻辑。

而要想让机器人更准确地明白我们的意思,首先要重点掌握的技能是 " 描述 "。大语言模型帮我们描述事情、讲道理、写报告、部署任务时,不仅是我们的助手,在这一过程中,我们对世界的理解和语言能力也会提高。所有的动作和行动要靠一个对象实施,它可以是人,也可以是机器,甚至可以是各种动物,我们将这种具备能力的对象称之为 " 类 "。它指事物的分类,分类后的每个类别下面会有各种实体的对象。

基础班:如何像程序员一样使用提示词?

如果我们真的理解了怎么为这个世界建模的话,我们其实用语言表征的全是对这个世界的行动和执行行动的对象,或者受到行动影响的结果的对象的一种精准的描述。值得注意的是,提示词也是一种语言,它既是人类的语言,也是一种计算机语言。一旦我们高效地、准确地使用了这种语言后,会激发出人工智能最大的潜能。尽管有时候我们随意地用一些词汇发布指令,大语言模型依然可以理解,但要实现最终目的,可能就会比预期要低一些。

举个例子:我自己也经常用一些比较简单的提示词,而且据我了解,很多公司的工程师、研发团队也在用。大家会发现,其实这并不复杂,它的结构已经比较完备,比如 BROKE 框架:什么事情都要描述它的背景,然后让大语言模型知道自己充当的角色是什么,同时告诉它要实现的目标,定义关键结果。非常简单的框架,就能够更好地让机器马上理解我们的意图。如果我们真的学会并且习惯用这种方式去跟机器打交道的话,你会发现我们跟人打交道一样会变得更加高效、更加严谨,更加有成效。

再举一个更加复杂的例子:一般来说,如果我们没有经过训练,在 " 描述 " 的时候,我们会非常直截了当地告诉机器我们要做什么。但实际上没那么简单,它是一个权衡利弊的选择。我们对机器说得很简单,希望机器能够透彻地理解我们的潜台词,但潜台词是人类所特有的,它属于语言符号中 " 语法、语义、语用 " 中的语用部分。如果我们能够更好地在语法和语义的层面把它描述清楚,那么机器处理起来就更方便了。所以," 描述 " 里有更深入的描述,对输出的 " 描述 " 也有更深入的 " 描述 "。为什么还需要 " 训练 "?因为有时候语言模型并不确切地知道怎么回答,我们可以用一种问答的方式让它更加明白我们要的是什么。经过 " 调节 ",最后优化,也就是不断地迭代。

关于提示词,大家可以从中挑出适合自己的。这世上没有什么最好的或最坏的,只有适合你的和不适合你的:

......

篇幅所限,本文仅作部分展示

  点击下方海报,观看完整课程!

提高班:" 智能体 " 是未来的趋势

在提高班里我们就希望呢有很多的机器人的集群,叫智能体的集群,来帮助我们解决问题。而且呢大概率事件啊,从此之后的话,要么就是智能体,要么就智能体的集群将又会成为热词,如果我们现在理解了它们之间的关系,哎和怎么去更好地使用它,哎我们可能就能够不必再被这种新的热词所误导。

接下来我用微软的 Semantic Kernel 作为示例。

上图的 " 自主代理(agent)" 任务执行是微软的工程师针对大语言模型构建出来的。这些类别暗含很多信息,它表示,要想搭建一个能够驱动机器理解我们的自然语言并且执行,会有这些功能,比如提问、内核等。

当然,当这个智能体本身靠大语言模型不能解决问题时,可以设计很多连接器去调用外部的能力、外部的资源。很多人以为,大语言模型出现之后就不需要其他的计算机能力了,其实这是一个伪命题。因为如果你有编程能力,本就可以继续使用。同样,很多人担心人被机器取代,但是我们要等着机器超越我们,还是主动跳到机器的肩膀之上,这取决于我们对于未来的选择。

最后是 " 应答 "。指令是人类发布给机器的,因此需要让机器具备收到指令后完成任务的能力。这表示什么?表示我们要知道如何教导机器、指挥机器、利用机器实现我们的目标。机器的思维肯定与人类不同,尽管它表现的方式有可能相似,但它的计算方式天差地别。因此,提示词有助于机器更好地理解我们的意图,帮助我们完成任务。

上图是一段非常强大的叫做计划员的提示词,大家可以一条一条地捋。当我作为一个用户,通过 Semantic Kernel 发出一个命令或写出一段提示词的时候,它会把我的说法按照 1-10 的标准和要求解读,最后基于解读的成果进行实施。另外这里面还提到,从一个目标创建一个计划,然后变成函数之后,开始有输入、有能力、有输出。一旦机器能够基于语言理解,把这种输入、处理、输出的一个一个的函数建立起来的话,机器就会开始利用人类的自然语言写出计算机能理解的代码来了。

关于优秀提示词,我找到了一则关于发布翻译指令的优秀示范,详情如图下:

我用上述的提示词做了一次试验。我从网上收集的一篇由帕克实验室的 Mark Weiser 写的一段非常有名的论文,叫《21 世纪的计算机》。这是原文的一部分,用到刚才的那些指令、提示词直译和意译的翻译对比如下:

如图所示:左边的 " 直译 " 指令虽然很准确,但没有右边的 " 意译 " 难度高。可以看到,通过更高效的、更符合我们愿景的方式描述,就可以让计算机表达出超出我们想象的对语言能力的理解、加工,及输出结果。

提高班:应用开发实战案例

接下来,介绍一下应用开发。

在此,我想特别强调,尽管现在的大语言模型还只是一个工具,尚处在一个痛点驱动、需求驱动的开发过程。比如智能应用开发案例,GitHub 在开发 Copilot 的时候正是这样的一个过程。如果亲身做过产品开发,会发现它没有任何独特之处,其实这很正常,因为新的大语言能力就是一种工具,它只不过可能比原来更高效、更有独特的特征。但是它的需求,同样还是一个发现 - 实现 - 扩展的过程。

GitHub Copilot 的经验告诉我们,首先你要知道你要什么,然后用我们称之 " 最小作用法 " 去做出一个雏形,通过不断地发现,实现雏形的迭代,最后找到 " 暂时的全局最优解 "。也就是说,先有一个方案做起来,然后把它扩展,用到更多的地方,实现更大的规模。

对此,我想提醒一句,尽管我们今天谈的是 AI、大语言模型,但它作为一个工具,作为一个企业的或者个人的工具,在使用、开发等方面没有什么本质的不同,都是问题驱动的。

另一个案例,大家可能在网上也经常看到,它就是 Richard Sutton 的 " 苦涩的教训 "。其中,Richard Sutton 提到,我们不应该用人的思维和方式去要求机器,机器就是机器,人就是人。人的心智和气其所涉及的世界的复杂性是巨大且根深蒂固的,试图用简单的方式理解心智——比如对空间、物体、多个代理或对称性的基本概念,实际上是一条死路。这些概念属于复杂多变的外部世界,不应该作为基础内置于我们的系统中。

因为机器有它通过概率搜索与学习的扩散性,它的能力是可以发散的。如果完全按照人的方式去约束它的话,它很难做好。我们真正需要做的,是开发出能够探索和理解这种复杂性的元方法。这些方法的核心在于它们能够找到合理的近似解决方案。其中最为关键的是,这个寻找过程应该由机器根据我们给出的方法来实现,而不是由我们自己来实现。

再一个智能应用开发经验分享,是微软的一个 CTO 叫 Schillace。他在开发了很久的大语言模型为基础的人工智能应用后总结出了 9 条法则:(如图)

他在其中强调了模型跟代码不矛盾,不是说有了大语言模型就不用做程序员了,也不是说有了大模型之后还要守着程序员不放,而是要灵活应变。

......

篇幅所限,本文仅作部分展示

  点击下方海报,观看完整课程!

总结:人 - 机时代的 5 个特点

所以,如果我们真的理解了智能机器的特质,就能更好地进入下一个时代。那么,人 - 机时代有什么特点呢?我总结为五点:

第一,学会提问很重要。提出一个正确的问题,就已经解决了问题的一半。提出问题要求我们对我们到底想要什么,有非常清晰的认知。人类这种物种,很难真正知道自己想要什么。所以,首先我们要知道怎么提出正确的、合适的问题。

第二,机器是人教出来的。我们给机器什么数据,它就会表现出什么能力。当我们还在惊叹于机器怎么有这样的能力时,其实我们要非常清晰地认识到,人作为有极大主观能动性的动物,我们怎么教育机器,机器就会具备什么样的能力。

第三,机器习得的知识领域是有限的。包括机器的智能,实际上都是从数据中学到的。它再怎么强,也不会强过我们给它的知识范畴。有人可能会说,机器也可以有想象力、发挥力,经常说出我们不知道的内容,让我们感到非常惊艳,但是你不要忘记,机器学的是全人类的知识,从全人类的角度来讲,它比每个单个个体懂得都多,但它不会超出全人类的知识范畴。

人类的经验可达域或已达域,和知识的已达域是不一样的。知识可以被机器知道,但是并没有实证,并没有理解。那么机器是否超越了整个人类的知识边界呢?这里有一个极大的问号,我个人认为是没有超越的。

第四,人 - 机结合的力量最强大。机器不是万能的,人也不是万能的,但两相结合会产生非常强大的能力。人具备主观能动性,机器能够把文字、图像、视频等各种各样的信号提供给人,来塑造一个更伟大的、更高级的具备主观能动性的人。这在物理学、数学上早已经被证明。机器最擅长的是理解,然后坚定地执行,在执行的基础上,它也可以纠偏,但都是在人给授权的规则之下。

第五,人和机器各司其职。从底层来讲,一旦我们理解了人跟机器的不同,我们就不会轻易地拿人的想法套用在机器上:比如认为机器会思想,机器有感情,机器理解人类……这些都是把人的思维范式映射到了机器上。机器不会像人这样思考问题,对它来讲根本没有人这一概念,也没有思考这一概念。它是根据数据计算出模式,识别出模式,要么是分类,要么是拟合。

这些是最基本的人机关系。

......

篇幅所限,本文仅作部分展示

  点击下方海报,观看完整课程!

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

智慧云

智慧云

ZAKER旗下新媒体协同创作平台

相关标签

ai 机器人 程序员 微软中国 工程师
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论