TobyQ56345 2024-08-17 17:51 采纳率: 0%
浏览 6
已结题

ERNIE大模型的系统记忆没有生效

ERNIE大模型的系统记忆为何没有生效?我已经更新了一些系统记忆,接着向ERNIE提问,但是很明显它的回答不是从我预设的系统记忆来的。
这是我的步骤:

  1. 我先获得了一个memory id,然后更新了一些记忆内容,并且接口返回成功。我有查询了这些记忆,返回的结果也跟我预设的一样。说明系统记忆创建成功了。
update_resp = resources.Memory.modify_system_memory(
    system_memory_id="sm-xxxxxxxxxxxqg",
    memories=[
        [
            {"role": "user", "content": "你叫什么?"},
            {"role": "system", "content": "你好,我叫小度!"},
        ],
        [
            {"role": "user", "content": "我喜欢的球类运动是乒乓球和篮球。不喜欢的球类是足球和网球"},
            {"role": "system", "content": "喜欢乒乓球的人一般都是很有耐心的人,喜欢篮球的人一般都是很有活力的人。"},
        ],
        [
            {"role": "user", "content": "除了球类,我还喜欢看电影和听音乐"},
            {"role": "system", "content": "看电影和听音乐是很好的消遣方式,你喜欢什么类型的电影和音乐呢?"},
        ],
    ],
)
  1. 我接下来向ERNIE模型提问,问题基本来自于预设的内容。这里的system_memory_id跟我前面创建时用的是同一个。
respChat = chat_comp.do(
    model="ERNIE-4.0-8K",
    messages=[{"role": "user", "content": "那我不喜欢什么球类运动?"}],
    system="你是一名生活助理,你要优先根据系统记忆来回答用户的问题",
    enable_system_memory=True,
    system_memory_id="sm-xxxxxxxxxxqg",
)

我先提问"我喜欢什么球类运动?" ,回复是“您喜欢篮球,您说过篮球是一项充满 活力和激情的运动,您很享受在球场上奔跑和投篮的感觉。”
我接着问“那我不喜欢什么球类运动?”,回复是“根据我之前的了解,您不太喜欢橄榄 球这项运动。”
基本上跟我预设的系统记忆完全不搭边。
这是怎么回事呢?

我研究这个玩意主要是为了做一个AI助理,帮助用户回答和生成一些信息,然后希望保存用户和系统的回答到记忆里,这样的话我不必每次对话请求都重复发送之前的聊天记录,系统也能够知道前面用户说了什么。可以节省token。不知道我对这个功能的理解对不对?还是说为了实现这样的功能,有没有别的做法?

  • 写回答

26条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-08-17 18:00
    关注
    获得0.30元问题酬金

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    要解决ERNIE大模型系统的记忆问题,我们需要先理解ERNIE的大模型是什么,它是一个超大规模的语言模型,并且在训练过程中需要大量的系统记忆来构建其知识结构。ERNIE的大模型使用了多个不同的序列和上下文环境作为输入,这些环境通常包含了大量事实、文本以及一些特定的情感信息,以帮助大模型学习如何理解和回应这些输入。

    ERNIE的大模型通过多种方式获取到这个系统记忆:首先,它会使用外部训练数据来训练一个自注意力机制(SELF-ATTENTION NETWORK),这个网络可以将输入中的不同部分整合在一起形成一个整体。其次,它还会使用一些特殊的模型参数,比如正则化权重和偏置,来限制内部神经元之间的相互作用。此外,ERNIE还利用了强化学习的方法来优化模型的性能,例如通过调整参数来提高模型的学习率。

    然而,ERNIE的大模型并没有直接提供关于系统记忆的详细信息。这可能是由于以下原因:

    1. 大模型的训练过程:ERNIE的大模型通常是在训练阶段使用大量的训练数据来构建其知识结构,而这些数据通常来自大量的自然语言处理任务。因此,即使ERNIE已经进行了大量的训练,系统记忆可能还没有被完全提取出来或被有效地应用到了实际的任务中。

    2. 系统记忆的来源:ERNIE的大模型通常使用外部的训练数据来进行训练,这些数据通常是基于特定任务或者任务集的。如果这些数据是随机生成的或者是由其他语言模型使用的,则这些数据并不包含系统记忆的信息。在这种情况下,ERNIE可能会无法直接获取到系统的记忆信息。

    3. 系统记忆的完整性:ERNIE的大模型在训练时可能会遇到过大的训练损失或者过高的内存消耗等问题,导致系统记忆的质量下降。在这种情况下,ERNIE可能会选择不存储或者不展示系统记忆的内容,从而减少对训练的影响。

    为了解决这个问题,我们可以尝试以下几个方法:

    1. 增加额外的数据源:为了确保ERNIE的大模型能够从真实世界中学习,我们可以通过增加更多的训练数据,包括自然语言处理任务的实际场景和实体,来丰富系统的记忆库。

    2. 引入更复杂的模型结构:ERNIE的大模型通常使用的是深度学习框架,其中的一些组件可能包括注意力机制、上下文感知器等。如果我们想要让ERNIE的大模型能够从真实的环境中学习,那么我们需要设计出更加复杂和灵活的架构,以支持这种学习。

    3. 优化训练策略:ERNIE的大模型往往需要频繁地进行更新和调整,以适应新的训练任务和需求。如果我们试图只保存训练数据而不考虑新任务的需求,那么ERNIE的大模型可能会失去重要的经验反馈,进而影响其性能。

    4. 使用预训练模型:ERNIE的大模型可能已经预先得到了某些领域的知识,因此我们可以在现有的预训练模型上添加额外的知识点,以增强模型的记忆能力。

    5. 采用强化学习的方式:ERNIE的大模型可能会面临一些挑战,例如训练周期较长或者数据量过大。如果我们尝试采用强化学习的方式来优化模型的行为,例如通过奖励机制来激励模型更好地完成任务,那么ERNIE的大模型可能会得到改进。

    总的来说,ERNIE的大模型需要一个平衡的过程,既要保持与真实世界的联系,也要考虑到训练资源的有限性。通过不断优化训练策略和引入更多的外部数据,我们可以逐步改善ERNIE的大模型系统的记忆效果。

    评论

报告相同问题?

问题事件

  • 系统已结题 8月25日
  • 创建了问题 8月17日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?