前言
又断更了很久,虽然有懒的原因,但更想着“文章合为时而著,歌诗合为事而作”,实在不想无病呻吟,聊一些没有兴趣倾诉的东西。最近,在做一些大模型的小玩意儿,比如agent,我觉得这个东西还挺有意思,便想谝一谝。当然,水平有限,欢迎大家不吝赐教,多多交流。
Agent何意?
Agent是什么?有些论文抱着亚里斯多德这个便宜爹就开始子曰,我觉得大可不必。GPT-4告诉我它基本的意思就是代理和特工。显然,不是特工,那就暂且称之为代理吧。代理无非是做一些你需要但又不想自己做的事情,让别人代为管理和执行,从这个角度上来讲,代理的定义是比较贴合agent的。但对我来说,我想让agent能够根据我的顶层需求自动的去处理某一方面的事务,或者所有的事务,你比如说,我想要实现某一个功能,它通过不管是写程序还是找供应商的方式帮我搞定就好,它最好不需要事事和我讲,像个奴隶或者职员,而是要主掌生杀予夺的大权,给我最后的结果就够了。因此,与其说它是某一个卑微的代理,我更想把它放在总经理,产品经理的位置。而我相对的位置在董事长和客户。
从更理想的角度来讲,“圣人之道,无异于百姓日用,如有异者,皆为异端。”把圣人换为agent我觉得是合适的。理想的agents应该能解决人类的一切需求,届时,仓廪足而知礼节,衣食足而知荣辱,人类便可以享受天下大同的光辉,或者我们称之为共产主义理想。所以,你问我agent是什么?agent就是在苦海中挣扎的你我,就是未来将我们摆脱出社会樊笼,复得返自然的新的薪柴。乐观的认知是这样,但是否会让我们连骨头渣都被榨取干净,就要看这些东西被怎么用了。正如核,它可以支撑人类社会的能源体系,也可以完全摧毁人类社会。
Agent何解?
如何实现功能自洽(self-contained)的agent?关于这一点,现在颇有百花齐放的意思,有人讲什么single-agent,multi-agent,这里的agent可以约等于大模型服务个数。但其实,有多少大模型服务都不重要,这样论有点着相了。就像我们评价一个公司好不好,不会傻乎乎的拿员工数量作为一个关键指标。有些人会讲,有没有通过反馈来修改迭代解决方案可以作为一个标准,我觉得虽然这个能力很重要,但我觉得也有些片面。我觉得既然把它们当作人类工作的替代品,不如直接把它们看作是一个个员工,为了实现一个共同的目标或者vision来努力,从这个角度来看,agent产生的复合功能体本身才是agent,agent的判断应该从理工科上面的系统工程,或者人文社科的管理学,社会学的角度来评估;如果这个功能很简单,不需要一个系统,而只有一个模型,我们可以从哲学的角度来追寻agent的存在意义。可能读者朋友觉得我在搞笑,我们就从人文社科和机器学习的角度来看一些有意思的文章吧。
一个最直观的论文是Generative Agents: Interactive Simulacra of Human Behavior,在 这篇论文中,agents在被赋予了角色后,会相互沟通,交流,甚至约会,这样一个过程无异于一个原始社会的野蛮生长。
对于解决一个具体的问题,Improving Factuality and Reasoning in Language Models through Multiagent Debate提出的方法是大家争论,最后一方说服了所有人,颇有合纵连横,舌战群儒的意思,但是这种方法的问题是可能大家吵了半天,谁也不服谁,或者大家最后在一个无关紧要的地方达成了一致,如同找了一个虚君,什么都做不了。这和机器学习中active sampling via disagreement的想法是很像的。Encouraging Divergent Thinking in Large Language Models through Multi-Agent Debate就有了一些改进,除了大家讨论外,增加了由领导分析拍板,像是内阁制。通过这种方法可以激发大家进行头脑风暴,但决定权交给了更高的决策层。在机器学习中,这就像是模型融合(blending 方法),通过增加meta learner 进一步凝聚共识。这两者的本质都是从多个角度出发,充分吸取各方意见,不至于想偏想歪,不至于决策失误。从机器学习的角度来看,就是通过进化方式,从全局进行优化,避免陷入局部最优。
除了竞争,还有合作,在Large Language Models as Tool Makers,一个工具制造者,一个工具使用者,就像是甲方和乙方,也像是机器学习中GAN或者actor-Critic的想法。在Self-collaboration Code Generation via ChatGPT其实很大程度借鉴了软件开发的想法,引入了项目经理,开发,测试的角色,来确保代码开发的成功。从机器学习的角度来看,其实是引入了正则项,通过分解和约束工作流程,从而提升工作的可控性和可靠性。在CAMEL那篇文章中也是类似的思路。MetaGPT直接套入了人类社会的管理规则(inducive bias)做顶层约束和指导,从名字就可以看出这个idea源于meta learning。
对于只有一个模型的agent,在Voyager: An Open-Ended Embodied Agent with Large Language Models,一个单独的agent是通过不断的从外界得到反馈,来进行新的试错,颇有格物致知的意思。同时,这又是一种强化学习,唯一的区别是它没有采用基于梯度的优化方法来进行exploration和exploitation,而是基于prompt的优化方法来实现了相同的exploration和exploitation,而获取的新的能力,又以library的记忆外挂给了模型。其实,最开始的强化学习也是以lookup table的方式来做查询的,这又和expert system很像。ReAct: Synergizing Reasoning and Acting in Language Models这篇文章更有意思了,Re是reasoning,act 是acting,意思是什么呢,边想边做,不停的改进,这篇文章我认为翻译为知行合一是最为恰当的,其实它也是这样一个哲学的思想。
最后,在autogen这篇文章中,作者把格局拉到了众生平等的角度,或者拉到了上帝视角:天地不仁,视万物为刍狗。所有人,所有工具,所有智能都可以是agent,它们一起协同工作,相互沟通,并通过一种合适的组织架构结合在一起来最好的实现既定任务目标。这样一个统一的架构把以上所有的idea全部包纳进来,唯一的问题是组织架构如何设计?即,个人如何成长,公司或者国家以什么样的方式运行才是最好的?才能实现个人,公司的vision和国家的最终理想?又或者说这样一个大系统的超参数到底要如何设计?well,也许有一天,我们会出现NAS类似的大模型系统工程自动优化设计,又或者我们需要一个meta learner来提供这个超参数的初始解,亦或者我们需要分门别类的设计超参数的基础模板。从这个角度来看,我觉得以后agent的开发不止需要AI 专业的知识,可能人文社科的知识也要成为重要的专业素养和能力。
LLM和agent孰强?
从学术的角度上来讲,目前agent似乎被经常看作是LLM(大语言模型)的衍生词,或者起码是高度绑定的。今早与一个CMU的弟弟聊天,我说我在做agent,他就说哦,llm啊。但从我的角度来讲,我认为是一种误解吧。原因是,Agent的历史可能要比LLM要久远多了,不然也不会有人从亚里士多德就开始讲起,在古早的机器学习时代,我们有所谓的surrogate model(代理模型),在强化学习里,我们也有所谓的agent或者policy model的概念。当然,这些自古以来的定义或者概念是不重要的,重要的是两者的追求是不同的:大语言模型或者做foundation 模型的人都想要做最强大脑,而做agent的话,我更关注它能否cover至少一个方向的实际问题,对于它是否是最强大脑并不care。正如卖手机的会讲iphone pro max是最强的(也许吧),但是对于一个只需要打电话的人来讲,一个小灵通就已经足够了,不需要搞那些花里胡哨的东西。如果说foundation 是在追求道,agent就是追求术;foundation在追求体,agent就在追求用;Foundation在追求知,agent在追求行。
对于大模型来讲,agent不是必须的,对于agent来讲,大模型也是合则用,不合则弃的角色。未来,肯定会有更多更强的多模态模型,超模态模型,自适应模型等等等等的出现,那为什么现在LLM会和agent挂钩呢?我觉得这篇论文:“The Rise and Potential of Large Language Model Based Agents: A Survey“ 讲的很好,因为llm可以(1)理解人的需求,(2)对人的需求做推导与规划(reasoning and planning),(3)具有处理,以及(4)修正调整的能力。这些能力,使得大模型可以像是一个人一样,来承担工作,规划工作,进行工作,并根据反馈进行迭代优化。当然,有人会argue大模型是随机鹦鹉,或者一个字一个字的输出的自回归的模式只是最大似然,并没有人的本质。但一个菜,它的色香味都是泡椒牛蛙,那它就是泡椒牛蛙了,而不需要追求它是哪里产的,有无牛蛙的灵魂。而我们也不需要一个人,只需要能像人一样工作的东西罢了,黑猫白猫,逮住老鼠就是好猫。我们只关注效果,对于内部如何实现和我们有什么关系,哪怕它是写死的系统,好用就好了。实际上,语言模型的存在也仅仅是为了能和人沟通,进行信息、指令的传递。如果一个agent说阿语,你只会汉语也没法使用这个agent。反过来讲,如果能让人和模型沟通,这个agent甚至不需要是语言模型,你俩可以脑电波什么的进行信息传递,最不济,这个模型的内部沟通可以用各种方式,embedding,谱信息,图信息,whatever。
因此,在我看来,LLM(或者更泛化的大模型)和agent是两个完全不同的领域,做最强大脑是有意义的,但更有意义的是做有利于agent实现功能的最强大脑(无约束优化到有约束优化),如果这个大脑不能为我所用,或者我不需要一个大脑,只需要一个弱智,那么这大脑也没什么意义。
写在最后
在我看来,我不知道agent是不是实现AGI的最好途径,但它是一种实现天下大同的可能路径,我对此感到兴奋且害怕,因为一个不注意,可能会落入黑客帝国或者终结者的场景。对于AI的研究来讲,我认为以后可能会标准化到三件事:基础模型,agent系统构建,适应性改进,分别对应:模型训练(信息压缩),系统工程(组合优化),偏差引入(fine-tuning或incremental learning)。或者说,原料生产,组装加工, 市场化定制。这样的分工大大加速了AI 的标准化开发,但是家家都吃预制菜,总是不如homemade 的小馆子令人开心的。呵,这真是最好的时代,也是最坏的时代啊。Anyway, 明天太阳依然升起。
发表评论