AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


用 AI 生成图式(长时记忆的数据结构 ²⁄₂)
发布日期:2024-08-26 13:07:47 浏览次数: 1599


/ 01 /

背景


在上一篇文章中 用 AI 生成图式(长时记忆的数据结构 ½),我说明了如何将一段文本转换为知识结构(Structure of Knowledge,SoK;下文将称其为Declarative Knowledge,SoDK),并说明只有抽象和概括才能带来智能,知识图谱三元组没法带来高级智能。

接下来,我尝试将一段文本设计为过程结构(Structure of Process,SoP;下文将称其为 Procedure Knowledge,SoPK)。当长时记忆中存储、调用、自迭代程序性知识后,AI系统会更加聪明。

SoDK & SoPK(图片来源:Concept-Based  Curriculum and Instruction for the Thinking Classroom Second Edition)


/ 02 /

建模:以概念为纽带


SoPK结构本身并不复杂,难点在于怎么把SoDK和SoPK整合到一个图式(Schema)中。我发现两大结构中都有一个Concept概念层,或许可以把这两者合并起来,这似乎是合理的,因为当我们想到一个概念时,我们的大脑就能找到与之关联的知识和技能。例如,当我想到“编程”,变量、函数等陈述性知识、测试调试、问题分解等程序性知识,就会自然被我的大脑检索出来。

有一些研究表明了这是合理的。《表象与本质》强调范畴(即概念)中的成员是不断成长的,是更多知识和技能让一个范畴变得越来越复杂。

《思维与语言》第五章节提到:

...个人经验只存在于自己的意识之中,而且严格地讲是无法传授的。要使个人经验得以传授,必须把个人经验包容于某种范畴之中,人类社会通过约定俗成的管理,把这种范畴看成是一个单位... 正因为人类思想反映了概念化现实,人类交往的高级形式才有可能。这也是儿童们尽管熟悉必要的词语,但是成人无法把某些思想传达给他们的原因。他们缺乏的是能够保证充分理解的恰当地概括了的概念... 儿童往往难以学会一个新词,原因不在词的发音,而是由于该词所指的概念。

看起来,SoDK和SoPK的概念层次完全可以合并起来。

将陈述性和程序性知识联合起来,通过概念

上图中的红色Concept就是一个共用的概念,这个概念既可以指向SoDK,也可以指向SoPK。比如刚才提到的“编程”这个概念,涉及到变量、函数等陈述性知识,还涉及到具体的编程技能,如问题分解、测试调试等程序性知识。


/ 03 /

算法:从概念切入


我决定使用概念作为SoDK和SoPK的纽带,所以创建图式的算法为:

  1. 提取文本中的概念

  2. 根据提取的概念,分解SoDK的Topic和Fact

  3. 根据Fact和Concept完成SoDK的Generalization和Theory,为了降低复杂度,我将Principle整合到了Generalization中。

  4. 根据提取的概念,分解SoPK的Process和Strategy

  5. 根据每个Strategy,从技能库中设计其Skill

  6. 完成SoPK的Generalization和Theory


技能库是关键,是AGI系统的能力集。我给AGI系统预设了几个基本的技能。分别是调用LLM模型、搜索引擎、代码解释器,以及非常重要的ask向外提问。ask之所以重要,是因为AGI需要有一张嘴,在它无法补充信息时,主动向外提问,了解更多隐私信息。可以想象,如果这个系统迁移到人形或轮式机器人上,或许有一些技能库可以让它主动(物理地)行动起来寻找信息。

tool_lib = f'''- llm: A large language model tool for generating text based on prompts.- Description: Generates text based on the provided prompt.- Signature: llm(prompt: str) -> str- web_search: A web search tool for retrieving information from the internet.- Description: Searches the web for information based on the provided query and returns a list of results.- Signature: web_search(query: str) -> list- code_interpreter: A tool for interpreting and executing code.- Description: Interprets and executes the provided code, returning the output.- Signature: code_interpreter(code: str) -> str- ask: A tool for asking external questions.- Description: Sends a question externally and returns the answer as a string.- Signature: ask(question: str) -> str'''

预设的基本技能,其中llm、ask是关键

这里涉及到一个问题,就是第一步中提取概念的能力。提取概念与当前AGI的注意力已有认知基础有直接关联。比如,现在AGI系统正在做某些繁重的计算任务,这个时候它可能无法接受任何其他信息,也就很难去做概念提取任务了。我们稍后讨论这个问题。


/ 04 /

实验结果


我给长时记忆系统投喂的文本如下。这是一段关于波音的历史的描述。

user_input = '''从0到1崭新行业初创公司的创始人与后来者的最大区别是:他们将行业视为理想和崇拜,他们都很有情怀,很有“江湖”义气,他们是一批有精神信仰的人。波音公司在一战后订单锐减陷入困境时,威廉·波音“挪用”自家资金给员工发工资。2019年,波音遇到737MAX“劫难”。2020年3月,波音股价暴跌,多条生产线关闭并裁减员工,但又有哪位波音高管精英像当年威廉·波音那样为公司操心睡不着觉。再看看电影《飞行家》中赌上身家与性命搞航空的霍华德·休斯,那可不是杜撰的美国西部片,而是真人真事,不由得让人心生感慨。美国航空界为什么喜欢格伦·寇蒂斯的人多,那是因为寇蒂斯被称为具有西部牛仔精神的飞行家。'''

长时记忆系统准备处理的信息

第一步:概念提取。

concepts = {'concepts': ['区别', '理想', '崇拜', '情怀', '信仰', '困境', '资金', '工资', '股价', '生产线', '高管', '精英', '电影', '航空', '身家', '性命', '杜撰', '精神']}


第二步:根据上述概念,提炼Fact和Topic。

topics_facts = {'topics':[{'topic': '初创公司创始人与后来者的区别','concepts': ['初创公司', '行业信仰', '创始人情怀'],'facts': ['从0到1崭新行业初创公司的创始人与后来者的最大区别是:他们将行业视为理想和崇拜,他们都很有情怀,很有“江湖”义气,他们是一批有精神信仰的人。']}, {'topic': '波音公司在困境中的应对','concepts': ['波音公司', '威廉·波音', '737MAX', '股价暴跌', '生产线关闭', '员工裁减'],'facts': ['波音公司在一战后订单锐减陷入困境时,威廉·波音“挪用”自家资金给员工发工资。', '2019年,波音遇到737MAX“劫难”。', '2020年3月,波音股价暴跌,多条生产线关闭并裁减员工,但又有哪位波音高管精英像当年威廉·波音那样为公司操心睡不着觉。']}, {'topic': '霍华德·休斯与《飞行家》电影','concepts': ['霍华德·休斯', '《飞行家》电影', '航空事业'],'facts': ['再看看电影《飞行家》中赌上身家与性命搞航空的霍华德·休斯,那可不是杜撰的美国西部片,而是真人真事,不由得让人心生感慨。']}, {'topic': '美国航空界对格伦·寇蒂斯的崇拜','concepts': ['格伦·寇蒂斯', '西部牛仔精神', '美国航空界'],'facts': ['美国航空界为什么喜欢格伦·寇蒂斯的人多,那是因为寇蒂斯被称为具有西部牛仔精神的飞行家。']}]}


第三步:以Fact为依据,概括Generalization和Theory。

generalizationsSoDK = {'generalizations': [{'generalization': '初创公司创始人通常具有高度责任感和奉献精神,体现在他们愿意牺牲个人利益来支持公司和员工。', 'concepts': ['初创公司', '责任感', '奉献精神']},{'generalization': '航空业的发展常与创始人或关键人物的个人牺牲和执着信仰密不可分。', 'concepts': ['航空业', '个人牺牲', '信仰']},{'generalization': '公司在危机时刻的应对方式和领导层的个人投入程度可能影响公司未来的命运。', 'concepts': ['公司危机', '领导层', '公司命运']},{'generalization': '历史上的成功企业通常依赖于创始人或领导人的个人冒险精神和远见。', 'concepts': ['成功企业', '冒险精神', '远见']}]}
theoriesSoDK = {'theories':[{'theory': '创始人的个人牺牲和执着信仰对公司成功至关重要。初创公司创始人往往具有高度责任感和奉献精神,他们愿意牺牲个人利益来支持公司和员工。而在航空业的发展中,创始人或关键人物的个人牺牲和执着信仰同样不可或缺。','generalizations': ['初创公司创始人通常具有高度责任感和奉献精神,体现在他们愿意牺牲个人利益来支持公司和员工。', '航空业的发展常与创始人或关键人物的个人牺牲和执着信仰密不可分。']}, {'theory': '公司在危机时刻的应对方式和领导层的个人投入程度可能决定公司的未来命运。历史上的成功企业通常依赖于创始人或领导人的个人冒险精神和远见,他们在面对危机时展现出的领导能力和投入程度,对公司的长期成功起到关键作用。',                      'generalizations': ['公司在危机时刻的应对方式和领导层的个人投入程度可能影响公司未来的命运。', '历史上的成功企业通常依赖于创始人或领导人的个人冒险精神和远见。']}]}


第四步:分解Process和Strategy。

processes_strategies = {'processes': [{'process': '公司管理过程', 'concepts': ['初创公司', '威廉·波音', '737MAX', '高管'], 'strategies': ['识别关键公司问题:首先,检查公司当前面临的问题,如订单锐减或股价暴跌。第二,确定哪些部门或生产线受影响最大。第三,决定采取哪些紧急措施,如裁员或资金调拨。如果出现新的问题,需要重新评估当前状况。','资金管理和分配:首先,分析公司现有资金和未来的财务预测。第二,根据紧急情况,如支付员工工资,灵活分配现有资金。第三,监测资金流动,确保在必要时有足够的流动资金。如果出现新的财务需求,调整资金分配策略。','员工管理:首先,评估公司的人力资源现状。第二,识别哪些员工在当前困境下最需要支持。第三,采取措施支持和激励员工,如威廉·波音使用自家资金发工资。如果员工士气低落,采取进一步的员工关怀措施。']},{'process': '行业情怀传承过程', 'concepts': ['崇拜', '江湖义气', '精神信仰', '霍华德·休斯', '寇蒂斯'], 'strategies': ['识别并学习行业楷模:首先,选择行业内具有代表性的人物或公司的案例,如威廉·波音和霍华德·休斯的事迹。第二,深入研究他们的经验和行为。第三,将所学应用于自己的工作和情感中。如果遇到不理解的地方,寻求更多资料或专家的指导。','培养和传递行业情怀:首先,明确自己的职业理想和奋斗目标。第二,与团队分享自己的行业故事和信仰,激励同事共同奋斗。第三,通过具体行动体现行业情怀,如在困难时期支持公司和员工。如果团队士气低落,进行团队建设活动,传递正能量。','保持行业精神信仰:首先,反思自己为何选择这个行业。第二,每隔一段时间重温行业楷模的事迹,如《飞行家》电影中的霍华德·休斯故事。第三,定期参加行业相关的培训和活动,保持精神信仰。如果感到职业倦怠,再次寻找新的学习和激励机制。']},{'process': '历史案例分析过程', 'concepts': ['波音公司', '波音股价暴跌', '生产线关闭', '电影《飞行家》', '格伦·寇蒂斯'], 'strategies': ['收集和整理历史数据:首先,收集关于波音公司及其历史困境的数据。第二,整理这些数据,并按时间线排列。第三,识别历史中关键的转折点和决策。如果数据不完整,寻找更多的来源补充。','分析历史决策影响:首先,选择一个关键的历史案例进行深入分析,如威廉·波音的资金挪用事件。第二,评估当时决策的背景和市场反应。第三,总结该决策对公司短期和长期的影响。如果发现新的相关信息,调整分析结果。',                                  '借鉴历史案例做决策:首先,结合当前公司的实际情况,寻找与历史类似的背景和问题。第二,参考历史上成功的管理策略,如波音历史上的应对措施,制定应对方案。第三,实施这些策略,并根据实际情况及时调整。如果发现问题没有得到改善,重新评估决策方案,并参考更多的历史案例。']}]}


第五步:根据每个Strategy,从技能库中挑选工具并设计Skill。

processes_strategies_skills = {'processes': [{'process': '公司管理过程', 'concepts': ['初创公司', '威廉·波音', '737MAX', '高管'], 'strategies': [ '识别关键公司问题:首先,检查公司当前面临的问题,如订单锐减或股价暴跌。第二,确定哪些部门或生产线受影响最大。第三,决定采取哪些紧急措施,如裁员或资金调拨。如果出现新的问题,需要重新评估当前状况。', '资金管理和分配:首先,分析公司现有资金和未来的财务预测。第二,根据紧急情况,如支付员工工资,灵活分配现有资金。第三,监测资金流动,确保在必要时有足够的流动资金。如果出现新的财务需求,调整资金分配策略。', '员工管理:首先,评估公司的人力资源现状。第二,识别哪些员工在当前困境下最需要支持。第三,采取措施支持和激励员工,如威廉·波音使用自家资金发工资。如果员工士气低落,采取进一步的员工关怀措施。' ], 'skills': [ { '识别关键公司问题:首先,检查公司当前面临的问题,如订单锐减或股价暴跌。第二,确定哪些部门或生产线受影响最大。第三,决定采取哪些紧急措施,如裁员或资金调拨。如果出现新的问题,需要重新评估当前状况。': [ { 'tool': 'llm', 'description': '生成关于公司当前面临问题的总结', 'input': 'prompt(描述公司当前问题的提示文本)', 'output': '生成的总结文本' }, { 'tool': 'web_search', 'description': '检索最新的公司新闻和信息,以识别公司当前面临的问题', 'input': 'query(用于搜索的查询字符串,如公司名称及问题描述)', 'output': '搜索结果列表,包含相关的网页链接和摘要'}, { 'tool': 'ask', 'description': '询问公司员工或专家,确认某个部门或生产线是否受到影响', 'input': 'question(需要回答的问题文本,如‘哪个部门受影响最大?’)', 'output': '收到的回答文本' }, { 'tool': 'code_interpreter', 'description': '分析公司财务数据来确定资金调拨的必要性', 'input': 'code(用于分析财务数据的代码,如统计哪个部门收益减少最多的代码)', 'output': '代码执行的结果,如统计数字或分析结论' },

此处仅呈现了200行的前35行,已经覆盖到4种工具


第六步:概括SoPK的Generalization和Theory。

generalizationsSoPK = {'generalizations':[{'generalization': '公司管理过程中,识别关键公司问题和财政紧急情况,并及时调整策略,是确保公司在出现新问题时能够迅速应对的关键。','concepts': ['公司管理过程', '紧急情况应对']},{'generalization': '行业情怀的培养和传承过程通常通过识别行业楷模、分享职业故事和定期重温历史事迹来保持精神信仰和激励团队。','concepts': ['行业情怀传承过程', '团队激励']},{'generalization': '历史案例分析过程通过收集和整理历史数据、分析决策影响以及借鉴历史案例来指导当前公司的决策制定。','concepts': ['历史案例分析过程', '决策制定']}]}
theoriesSoPK = {'theories':[{'theory': '公司在管理过程中,应实施动态问题识别和调整策略的机制,通过识别关键公司问题和财政紧急情况,并制定快速响应策略,以确保公司在面临新挑战时能够迅速应对。', 'generalizations': [ '公司管理过程中,识别关键公司问题和财政紧急情况,并及时调整策略,是确保公司在出现新问题时能够迅速应对的关键。' ] },{'theory': '通过行业情怀的培养与传承,可以提升团队的精神信仰和士气。这一过程包括识别行业楷模、分享职业故事和定期重温历史事迹,能够有效保持并激励团队士气。', 'generalizations': ['行业情怀的培养和传承过程通常通过识别行业楷模、分享职业故事和定期重温历史事迹来保持精神信仰和激励团队。']},{'theory': '历史案例分析是指导当前决策制定的重要方法。通过收集和整理历史数据、分析决策影响,以及借鉴历史案例,可以为现有公司的决策提供可靠的依据和指导。', 'generalizations': ['历史案例分析过程通过收集和整理历史数据、分析决策影响以及借鉴历史案例来指导当前公司的决策制定。']}]}


最后将上面的数据结构整合到一个完整的树结构中。


围绕user_input设计的图式包含了陈述性知识和程序性知识。下图是一个局部细节,可以看到一些陈述性和程序性知识共用了一些概念。在之后的应用中,如果某些概念被激活,就可以快速找到相关的知识和技能,从而指导RAG补额外信息,或是ReAct地查找合适的skill节点。


/ 05 /

潜在问题


tool_lib是默认的技能库,目前它是封闭的。如何将其设计成自动生长的技能库呢?这些公共的技能有点像元技能,有一些比较抽象的技能,如元认知、创造性思维、逻辑思维、批判性思维中涉及的技能,或许干可以设计在tool_lib中。

当tool_lib中添加了新的元技能,则当前图式中存储的全部skill理论上都有升级的可能性。比如,tool_lib中有一个创造性思维,那么对于旧的skill节点,就需要在AGI系统不太忙碌时,或者在调取旧的skill之前,判断是否要升级或优自身。这就像我们人学习到了一个新的技能后,会反思自己过往的行为,并在未来的实践中调整技能。

在上面的实验中,还存在一个问题:过度推理。比如原文中并没有SoPK中并没有那么多skill节点,并未做限制。该问题理论上并不难解决,只要在生成信息之前做约束即可。这个问题可能要等待后续增加工作记忆之后再完善。

/ 06 /

后续


目前系统已经可以成功构建出陈述性和程序性知识,但是还缺乏一个关键的情景记忆。这是一个未来需要突破的点。

第二是反思算法。一个user_input产出了这些节点,那么N个user_input就会产出更多节点,这些节点之间如何同化(把节点加入图式)和顺应(调整优化图式)?

第三是注意力问题,我预计这个问题要等到工作记忆加入后一并解决。

第四是怎么检索这些节点?无论是陈述性知识、程序性知识、情景记忆。只有当这些节点能被有效地(都还不是高效地)索引和检索到时,工作记忆才能真正发挥作用。

接下来我会再做一些尝试,期待解决上述问题。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询