过去短短不到一年里,ChatGPT、GPT-4 的相继面世,不断刷新人们对 AI 的认知。
新技术带来变革,也引发了外界对 AI 是否会取代人的讨论,OpenAI 首席执行官 Sam Altman 也公开表示,对人工智能技术的强大能力有些担忧。
近日,伦敦大学学院(UCL)计算机系教授汪军在接受 AI 科技评论采访时坦言,虽然 ChatGPT 的语言能力、对话能力很强,但其并无法进行系统性决策,例如机器控制、群体协作、动态调度等,而这些是 AI 技术浪潮中更具革命性的部分。
汪军,伦敦大学学院(UCL)计算机系教授,阿兰·图灵研究所 Turing Fellow。其主要研究智能信息系统,包括机器学习、强化学习、多智能体,数据挖掘、计算广告学、推荐系统等;谷歌学术被引用量超过1.6万次,已发表学术论文120多篇,曾多次获得最佳论文奖。

汪军
2022年4月,上海数字大脑研究院正式创立,内部孵化并成立了 Enigma Tech(中文名“谜题科技”),汪军担任上海数字大脑研究院联合创始人、院长,并出任谜题科技首席科学家;下半年,数研院研发出全球第一个多智能体决策大模型,该大模型集合 CV、NLP、强化学习和多智能体,致力于帮助企业解决多场景决策问题。
汪军认为,ChatGPT 的出现,解决了以往大模型训练中如何降低门槛的难题,通过将自然语言处理与决策大模型的结合,ChatGPT 带来的不能只是聊天,而是在 AIGC(AI Generated Content,内容生产) 的基础上更进一步探索 AIGA(AI Generated Actions,决策生成),让模型的思考能力和决策能力应用到具体场景中,真正实现帮助企业和人们解决决策问题,将人类释放到更具创造性的活动中。
AI 智能探索的进程中,脱离不开对定义问题的终极追求。
汪军将通往智能的路径分为两步。第一步,需要先明确生物系统(Living System,人归属于生物系统)和非生物系统的差别。
2013年,生物物理学家 Jeremy England 提出一个开创性“耗散适应”理论(dissipation-driven adaptation),将生命起源归结于热力学的必然结果,无分子系统在一定条件下通过化学反应代谢消耗能量,以促进能量持续消耗及“熵”的增加。
在熵增熵减理论中,生命体从无序变成有序的过程持续吸收能量不断熵减,汪军认为,AI 从人产生,因此也是吸收能量帮助人完成熵减的使命,解决基础问题的关键点在于如何定义智能,明确 AI 需要吸收多少能量才能达到一定的智能。
使用 AI 做图像分类识别时,分类算法其准确率可达到98%。通过分类,AI帮助我们可以将处于无序状态的图像内容组织转变为有序、有规律可循的图像,系统中不确定性减小,产生熵减。熵减也需要计算,形成算法的算力多少,算力即是消耗能量的一种体现。
通往智能的第二步,汪军认为,是分辨生物系统、所谓的 AI 系统的意识问题。当前,人工智能作为工具存在,算法只能判别 AI 工作的优良程度,机器本身并不存在思考,如何使机器最终达到与人相等的思考能力,需要先理解人类大脑的各种现象,并增加对 AI 意识的关注。
在汪军看来,意识是智能的一个重要表现,哺乳动物可以察觉意识、感知意识并形成主观感受;同时,当多个个体与环境交互时,必须存在除单个个体外、另一有意识个体与环境发生影响、产生共鸣,从而使主观感受得以表达。
对此,汪军和团队提出,在 AI 研究中,必须有多智能体(Multi-Agent)的相互作用来引发意识。
以大模型为例,跨任务是人为定义的,只局限在给定一个特定任务,把算法设计好让机器去跑,难以产生更大智能的 AI,模型的思考能力和决策能力也无法得到提升。
汪军告诉 AI 科技评论,“在同时推进多个事情时,需要大的思想来指导。如果没有,显然还缺乏一个内在的规律。”这个规律,正是机器模型通往更大“智能”的关键路径。
2022年5月,DeepMind 发布集合 CV 和 NLP 的通用智能体“GATO”,它可以玩雅达利游戏、输出图片字幕、用机械臂堆叠积木、跟人聊天等等,还能根据上下文决定是否输出文本、关节力矩、按钮按压或其他 token(逐词),这项工作在当时引起了不小的讨论。汪军也是关注者之一。
事实上,从2021年开始,汪军和团队就开始思考创建一个可实现跨任务,将 CV、NLP、强化学习和多智能体四者嵌套为一个统一体决策模型的可能性。“GATO”的出现让汪军看到大模型广阔的可探索空间,“这足以证明,一个模型解决多个领域任务是大势所趋。”
决策大模型并不能单纯从模型大小意义出发,究其本质,是在数据集中通过强化学习与环境不断交互所达到的一定的认知水平,如何攻破这个问题?当中最大的技术点就在于,降低强化学习和环境交互的复杂度。
原有数据在这一环节中起到关键性作用。
通过对其他任务或算法同环境交互产生的原有数据训练,搭建一个预训练模型,这一模型在面对新任务时即可迅速在进行应用,从而实现规律、关系和数据的价值最大化。而伴随预训练数据集的不断扩大,模型也随之变大,直至它可覆盖的所有任务。
最终结果是,解决问题的方法聚拢,多个方向汇聚、统一为一个可预约、可跨任务泛化的多智能体。多智能体往往需要考虑平衡关系,即在达到自我目标的同时,使对方也能达到它的目标,互相牵制从而保持一个稳定的平衡。
进入实际应用场景中,多智能体也可以帮人们解决很多实际问题,例如搜索、推荐,甚至互联网广告,其本质上是一个决策的过程,帮助用户找到需要的内容,而且这个内容是符合用户喜好的,“推荐给你看,其实就是个决策。”。
多智能体的优势在于,可以很好地发挥其跨任务的能力。
事实上,早在2017年开始,汪军和其学生张伟楠(上海交通大学教授)就开始了跨任务尝试,在自然语言处理(NLP)中加入强化学习。
以往的自然语言处理使用 GAN 生成文字时,由于词索引与词向量在转换过程中的数据不连续,经常会导致微调参数不起作用;不仅如此,由于 GAN 的判别模型只对生成数据整体打分,但文字一般均为逐词生成,难以控制细节。
为此,他们提出 SeqGAN 模型,通过在借鉴强化学习策略,解决了 GAN 应用于离散数据的问题,这也是最早利用强化学习训练生成性语言模型的论文之一,实现了文本生成,在自然语言处理和信息检索等不同领域具有广泛的应用。

论文地址:https://arxiv.org/pdf/1609.05473.pdf
“强化学习和决策本质上是相通的,通过强化学习,可以解决一些决策问题。”在汪军看来,决策是一个长期研究的问题,多智能体决策大模型的提出,经泛化后可在某些特定领域形成特有优势,AI 中大部分问题均可借助决策大模型来解决。
ChatGPT 掀起的热度还未过,3月15日,多模态预训练大模型 GPT-4 发布后,又一场颠覆性的变革呼啸而至。
在这场关于通用人工智能的角逐中,ChatGPT、GPT-4 不是终点,竞赛的关键聚焦在浪潮下更具价值的产业革命和创新中。
期间,汪军也与关注市场资本的朋友保持密切沟通。
在汪军看来,学术圈里面的问题有些不够大胆、受资源约束,思考问题会受到一定因素的约束。而在工业界,决策大模型可以拥有更丰富的应用场景,无论是在传统产业,互联网搜索推荐,到工业互联网等等,都需要各种各样的决策。
带着这样的想法,汪军开始考虑将决策大模型在产学研三栖结合的可能性。
经过一年的筹备期,2022年4月上海数字大脑研究院正式创立,内部孵化并成立 Enigma Tech(“谜题科技”),主要负责将数研院的科研成果面向产业落地,为数研院提供现实场景及真实业务数据。汪军担任数研院联合创始人、院长,并出任谜题科技首席科学家。
当大模型迈进实际的应用场景里,企业往往面临着模型广谱性不强、入局门槛高的两大痛点。
经典的机器学习方法采用的是定制化模式,企业下发任务后,先定义问题、收集数据训练、模型测试,二次任务下发后,模型需要再次收集定义问题、收集数据训练、模型测试,往往会导致企业在部署上就已经损耗了极大的财力、人力资源,广谱性不强。同时,使用大模型对工程师的技术能力要求极高,需要具备一定的优化经验,企业参与门槛高。
汪军认为,ChatGPT 结合决策大模型,可以有效解决低门槛、广谱性的问题。
在这样的思考下,汪军领导谜题科技团队提出 DB 大模型(AIGA 方向大模型,AIGA:AI Generated Actions,决策生成),其首发的 DB1 为全球首个多模态决策大模型,对标 DeepMind 推出的 GATO,可全面支撑多智能体,能够并发处理千个以上决策任务。

DB1 在车辆协同任务中的表现
通过将 ChatGPT 与决策大模型的结合,ChatGPT 带来的不能只是聊天,而是在 AIGC 的基础上更进一步探索 AIGA,让模型的思考能力和决策能力应用到具体场景中,所产生的交互通过跟具体场景的环境交互,小数据完成大任务,可直接面向产业真实场景,借助大模型实现任务闭环,实现机器人协作、设备动态、企业自主化调度、软件开发等更广泛应用。
进而真正帮助企业和人们解决决策问题,将人类释放到更具创造性的活动中。“最终为整个人类的进步带来很大的促进作用。在这个情况下,我们才能孕育出真正的 AGI(通用人工智能)。”
目前,数字大脑研究院的基本架构已搭建完成,业务内容从算法、系统到具体工程项目均有覆盖,可应用于推荐系统、故障预测、自动驾驶、市场设计、游戏场景、EDA 优化等多个场景,解决企业运作过程中的实际问题。
走出实验室、成立数字大脑研究院,对汪军而言,感受和状态是截然不同的:研究不可能将所有因素放在一起考虑,要解决这个问题,首先其他东西得简化,把真正问题解决了再转向下一个;而一项研究的落地则更可能是多个问题的集合体,需要各个问题都一一击破,并把解决问题的方法统一去应用。
去年7月份,AI 科技评论曾有幸与汪军院长进行了一场深入讨论,彼时他对数研院的目标是,推动决策智能研究和 AI 研究,在中国做最好的、最基础的研究。
而过去短短一年,Stable Diffusion、ChatGPT 和 GPT-4 等模型的出现,让汪军惊喜地认识到 AI 技术的革命性进步,也令他对数研院有了更具象化的目标,将决策大模型应用到具体场景中解决实际意义问题。
从学术界到工业界,数字大脑研究院的发展时间还不长,其雏形也映射出汪军在人工智能路上探知求索的方向。“我们就是要走自己的一条路,怎么样把产学研结合一起闯出条新路,问一些以前没有问过的问题。”
数研院落地决策大模型
AI 科技评论:介绍一下数研院过去一年在多智能体决策大模型方面所做的工作和进展。
汪军:去年夏天我开始计划一个新的课题,我们觉得大模型不只是在NLP、CV 里,它在决策中也有很大的作用,当时 DeepMind “GATO”的工作尝试将各种各样的任务放在一个大模型里面、Transform里面去进行学习,给到了我们启发,所以当时就决定在它的基础上往前探索,做了一个决策大模型,包括视频、图像的数据,自然语言的数据,机器人的数据,甚至还加入求解器的数据,例如怎样做优化任务、布置生产排期、对车辆进行优化等。我们做了一个10、15亿左右参数的大模型,虽然是一个早期的探索,但也证明了在大模型里面不光只是自然语言处理,还能在决策起到明显作用。
前段时间我们在做足球游戏,发现有个没有攻克的问题:现在强化学习所存在的研究逻辑,AlphaGo、星际争霸、Dota 等带有游戏系统中,人越多,其决策空间也会更加复杂。
对此,我们以游戏场景的足球作为问题研究点,在多智能体决策大模型中进行了多次尝试,从简单的2人足球,到5人、到11人。这个是比较大的、对强化学习有挑战性的场景,目前问题本质还没有完全解决,或者说解决得很好,因此我们也花了很多时间在做这件事情,希望能做出一点成绩。
AI 科技评论:ChatGPT 发布后,对数研院的研究带来什么影响?
汪军:我们一直重心在是决策上,现在也一直是。但 ChatGPT 出来后,我们对它的语言能力感觉到非常惊艳,完全超过我们的预期,对决策任务也起了一定的促进作用。
在做决策优化的过程中,需要解决两大痛点:广谱性和低门槛。
决策大模型在一定程度上解决了模型的广谱性问题,将新任务放置大模型内进行迭代、微调,一个大模型可以应对各种各样的决策问题。
低门槛问题在做 AI 公司中普遍存在,在此之前,使用大模型对工程师的能力要求非常高,往往需要有优化经验的人参与到问题决策过程中,个人和企业参与的门槛非常高,也增加了 AI 的使用成本。
为了解决使用的低门槛问题,我们之前预想发明一个比较简单的语言,可以比自然语言要更复杂、严谨一点,但比真正的编程简单些,任何人都可以使用,ChatGPT 的出现,突然让我们意识到,机器的自然语言可以达到一个正常跟人交流的水平,一下子就把低门槛的痛点解决了。对我们来说,这个改变带来的触动是比较大的。
更有意思的是,ChatGPT 里具有一定的逻辑推理能力,可以帮助我们将一个复杂的问题分解为几个子问题,这个子问题部分原本需要专业人士进行人为分解,但通过 ChatGPT 对语义的理解,在得到范例的情况下可对问题分解成基础的问题,再经由决策大模型对基础问题已有的决策能力,实现直接调用。
ChatGPT 降低决策门槛
AI 科技评论:多智能体决策大模型涵盖的领域很多,在数据这块会有什么要求?把它跟 ChatGPT 进行结合后,对某一领域的数据是否有特别的需求?
汪军:它会有一些特定的要求。
自然语言的数据是离线的,属于方法论上的学习;而决策中需要很多产生数据的能力,需要一个仿真器。举个例子,当我们训练机械狗走路时,我们不会让它到雨天里或其他环境走一圈将数据采集回来,往往是先建一个跟外界非常像的仿真器,通过仿真器来产生数据,模型学习完后再放到真实场景给予反馈,回来再进行学习,从而使得它可以很快将决策能力迁移到现实中应用。大模型技术囊括各种各样的场景,无论是下雨天、走台阶、走沙土都没有任何问题。

机械狗在不同环境中行走
第二个难点是,决策数据训练的难度比自然语言处理的难度要大,这个过程中在不断产生数据,数据产生的效率、产生在什么地方,如何分配到各个学习模块里面进行学习,需要统一的系统层面解决方案,此前我们专门做了一套大规模的学习方法,主要应用在这种强化学习训练的方法。但 ChatGPT 出来后,基于大预言模型的训练方法不太适用。
AI 科技评论:具体场景中,如何用 ChatGPT 跟决策大模型进行结合?
汪军:举一个机械狗的案例:最早我们训练机械狗使用的是归控的经典方法,它的问题是在单一环境路况上走没有问题,但遇到雨天、雪天就走不了,但当我们加入了大模型方案后,机械狗开始具备基础的交互能力,可以进行推理。向机械狗下发一个送信的指令,模型会将任务自动分解为1至5个基础步骤,每个模块在传送中有对应逻辑,例如从A点行至B点的路径规划。
由于机械狗自身并不具备往东走、往西走的概念,只有坐标,因此需要将交互指令与具体的语义结合、对应起来,通过 ChatGPT 的方式,我们无需将指令转化为编程语言,可直接进行交互,机械狗在接收到问题后,会讲指令分解成几个不同的问题,先优化一部分的 Chat,将动作、决策和语义同 ChatGPT 产生自然语言对应起来。
这样成为了我们接下来研究的主要方向,我们将其称为 AIGA(AI generate actions),前期 ChatGPT 带来的是 AIGC,再结合决策大模型,从 generate content 更进一步、变为 generate actions,生成决策。
数研院的长处是在决策大模型,因此我们坚持决策大模型的方向是不变的,要让 AI 不只是交流,更重要的它是帮助你去优化,帮助你去做决策,我们觉得它的价值非常大。ChatGPT 结合决策大模型后,所产生的交互不再仅限于它能回答问题,更在于它是否能理解复杂、构建复杂,通过跟具体场景的环境交互,ChatGPT 跟决策大模型进行结合,可实现机器人协作、设备动态、企业自主化调度、软件开发等更广泛应用。
自然语言是基础
AI 科技评论:在训练多模态数据之后,参数量到达多少会涌现更多的能力?文字,图像,语音,视频……哪一个模态对多模态模型的影响会更大?
汪军:在数据方面,“大力出奇迹”这个事情有一定的极限,虽然目前这个极限我们还没有完全看到,但是我觉得,我们不是只着眼于仅学习 ChatGPT 的训练方式。
ChatGPT 的语言能力很强、对话能力很强,但 ChatGPT 是否真正理解了它吸收的内容?我认为它是没有理解的。让它玩猜数字游戏,表面上它可以玩,但其实它是不知道、没法猜到你心里的数字。ChatGPT 更多是在原有训练数据中对逻辑内容的记忆,它的搭料能力很强,但是它真正理解的能力很弱。
如何打破它的局限性?我认为,我们需要在训练里加上模型对整个世界的理解,如果它本身不去建一个描述世界的数学模型,把它的理解放到世界模型中,它不会对周围世界有更深层次的理解的。举个简单的例子,我们给 ChatGPT 2000分以下的所有人类下棋能力的数据,如果模型只模仿人,那么它无法模仿出比2000分更高的智能。

汪军团队此前所做的 AI 创作助手
数据很重要,但与此同时,模型的大小也很重要,要有不同的训练方法来提高它。
而在多模态中,自然语言是基础,人在思考时,语言是我们的思维的载体,它构架了一个相对清晰的逻辑描述,这个逻辑描述可能并不是百分百严谨,存在不清晰、模糊的地方,但是它足够让我们去表达一些非常复杂的逻辑关系。
但与此同时,我们也要清晰地认识到,自然语言中隐含的语义信息和表达是非常重要的,也就是说,它可以能把这个问题表述得很清晰、但这是表象,最主要的是对话里面含载的语义关系,当其他多模态来了之后,匹配上相应的语义表达,就可以迁移到其他的模态当中。
在自然语言的基础上,我们可以加入其他更多模态参与到模型当中。
AI 科技评论:您如何看待“人类反馈”数据对多模态大模型或决策大模型的影响?
汪军:需要一些人类反馈数据,但它的量不像以前的监督式学习需求量那么大,一个基础模型只需要给它几个示范,目的是导引基础模型适应新的任务场景,令基础模型把原来的能力显露出来。这是对经典机器学习训练模式的革新。
以前的机器学习,大部分 AI 企业采用的是定制化模式,任务来了先定义问题、收集数据训练、模型测试,第二个任务下发后、又再次收集定义问题、收集数据训练、模型测试,不仅难以复制,部署也会损耗极大的财力、人力资源。
ChatGPT 后的机器学习是大模型先行,我不需要知道具体的问题是什么,就可以先搭建模型,再分发至客户或厂家,将模仿放置到某一个不具有训练大模型能力的公司,由公司去部署,再进行定义,整体流程反过来了,其本质是激活大模型应用至特定任务中,再定义任务、输出结果,极大地降低了“人类反馈”数据对模型的影响,真正实现广谱性、低门槛的 AI。
AI 科技评论:有看法认为,在 ChatGPT 这轮竞赛中,算力和模型不再如前两个时期那么重要,而场景和数据将成为这一轮关键,您是怎么看的?
汪军:模型很重要。当前一些大模型语言能力的提升,会令人产生模型也具备理解人的能力,但这只是表象。仅靠几个字来预测下一个单词的基础模型训练方法、难以产生更大智能的 AI,模型的思考能力和决策能力无法得到提升,而这两者是作为人工智能体最基础的能力,它需要知道怎样去跟环境交互。
从这个模型角度来讲,模型仍需要进行革新,Transform 这个架构很好,但并不代表就可以止步不前,我们仍然需要革新的、有创造力的、能产生思考的神经网络模型出现。
算力、模型、数据、场景四者都很重要,当数据和算力达到一定高度后、需要一个新的创新出现,创新后再进行数据和算力的变量累积,再达到一定的高度和进行创新,这是一个螺旋上升的过程。
场景是目的,最终我们需要在场景中定义问题、解决问题,而不仅仅让研究停留在学术层面。场景驱动之后,再使用一个新的模型或方法,用数据和算力使它达到又一个极致。
ChatGPT 的广谱性很强,但并不代表它能够解决所有的 AI 问题,我们应该思考下一个场景的东西什么、能够解决什么问题?问题的核心是,让模型的思考能力和决策能力,真正能够应用到具体场景中,同时它要跟环境进行交互,跟人、跟各种各样的场景进行交互,最终实现对整个能源产业,整个人类的进步带来很大的促进作用。
在这个情况下,我们才能孕育出真正的 AGI。这也是数研院的目标。
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我有一些非常大的模型,我必须将它们迁移到最新版本的Rails。这些模型有相当多的验证(User有大约50个验证)。是否可以将所有这些验证移动到另一个文件中?说app/models/validations/user_validations.rb。如果可以,有人可以提供示例吗? 最佳答案 您可以为此使用关注点:#app/models/validations/user_validations.rbrequire'active_support/concern'moduleUserValidationsextendActiveSupport:
对于Rails模型,是否可以/建议让一个类的成员不持久保存到数据库中?我想将用户最后选择的类型存储在session变量中。由于我无法从我的模型中设置session变量,我想将值存储在一个“虚拟”类成员中,该成员只是将值传递回Controller。你能有这样的类(class)成员吗? 最佳答案 将非持久属性添加到Rails模型就像任何其他Ruby类一样:classUser扩展解释:在Ruby中,所有实例变量都是私有(private)的,不需要在赋值前定义。attr_accessor创建一个setter和getter方法:classUs
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
ruby如何管理内存。例如:如果我们在执行过程中采用C程序,则以下是内存模型。类似于这个ruby如何处理内存。C:__________________|||stack|||------------------||||------------------|||||Heap|||||__________________|||data|__________________|text|__________________Ruby:? 最佳答案 Ruby中没有“内存”这样的东西。Class#allocate分配一个对象并返回该对象。这就是程序
我正在使用Rails3.1并在一个论坛上工作。我有一个名为Topic的模型,每个模型都有许多Post。当用户创建新主题时,他们也应该创建第一个Post。但是,我不确定如何以相同的形式执行此操作。这是我的代码:classTopic:destroyaccepts_nested_attributes_for:postsvalidates_presence_of:titleendclassPost...但这似乎不起作用。有什么想法吗?谢谢! 最佳答案 @Pablo的回答似乎有你需要的一切。但更具体地说...首先改变你View中的这一行对此#