欢迎光临
我们一直在努力

AI大模型实战篇:AI Agent设计模式,ReAct

aigc阅读(131)

《大佬们都在关注的AI Agent,到底是什么?用5W1H分析框架拆解AI Agent(下篇)》中,风叔简单介绍了AI Agent的八种设计模式。对于这八种设计模式,风叔整理了一张图,来阐明它们之间的关系。

ReAct模式最早出现的Agent设计模式,目前也是应用最广泛的。从ReAct出发,有两条发展路线:

一条更偏重Agent的规划能力,包括REWOO、Plan & Execute、LLM Compiler。

另一条更偏重反思能力,包括Basic Reflection、Reflexion、Self Discover、LATS。

在后续文章中,风叔将沿着上图的脉络,结合产品流程和源代码,详细介绍这八种AI Agent设计模式。

为什么选择结合源代码呢?因为在AI大模型时代,很多的概念和方法都太新了。只有结合源代码,产品经理才能真正理解背后的原理和逻辑,才能知道什么能做,什么不能做,AI的边界在哪里,以及该如何与人类经验配合。

下面,我们先从ReAct模式开始。

一、ReAct的概念

ReAct的概念来自论文《ReAct: Synergizing Reasoning and Acting in Language Models》,这篇论文提出了一种新的方法,通过结合语言模型中的推理(reasoning)和行动(acting)来解决多样化的语言推理和决策任务。ReAct 提供了一种更易于人类理解、诊断和控制的决策和推理过程。

它的典型流程如下图所示,可以用一个有趣的循环来描述:思考(Thought)→ 行动(Action)→ 观察(Observation),简称TAO循环。

  • 思考(Thought):面对一个问题,我们需要进行深入的思考。这个思考过程是关于如何定义问题、确定解决问题所需的关键信息和推理步骤。
  • 行动(Action):确定了思考的方向后,接下来就是行动的时刻。根据我们的思考,采取相应的措施或执行特定的任务,以期望推动问题向解决的方向发展。
  • 观察(Observation):行动之后,我们必须仔细观察结果。这一步是检验我们的行动是否有效,是否接近了问题的答案。
  • 循环迭代

如果观察到的结果并不匹配我们预期的答案,那么就需要回到思考阶段,重新审视问题和行动计划。这样,我们就开始了新一轮的TAO循环,直到找到问题的解决方案。

和ReAct相对应的是Reasoning-Only和Action-Only。在Reasoning-Only的模式下,大模型会基于任务进行逐步思考,并且不管有没有获得结果,都会把思考的每一步都执行一遍。在Action-Only的模式下,大模型就会处于完全没有规划的状态下,先进行行动再进行观察,基于观察再调整行动,导致最终结果不可控。

假设我们正在构建一个智能助手,用于管理我们的日程安排。

在reason-only模式中,智能助手专注于分析和推理,但不直接采取行动。

  • 你告诉智能助手:“我明天有个会议。”
  • 智能助手分析这句话,确定明天的会议时间、地点等细节。
  • 它可能会提醒你:“明天下午3点有个会议,在公司会议室。”

在action-only模式中,智能助手专注于执行任务,但不做深入的推理或分析。

  • 你告诉智能助手:“把我明天的会议改到上午10点。”
  • 智能助手立即执行这个任务,将会议时间修改为上午10点。
  • 它可能会简单确认:“您的会议已改到明天上午10点。”

在ReAct模式中,智能助手结合推理和行动,形成一个循环的感知-动作循环。不仅分析了你的需求(推理),还实际修改了日程安排(行动)。

  • 你告诉智能助手:“我明天有个会议,但我想提前到上午10点。”
  • 智能助手首先分析这句话,确定会议的原始时间和地点(感知阶段)。
  • 然后,它更新你的日程安排,将会议时间改为上午10点(决策和动作执行阶段)。
  • 最后,智能助手确认修改,并提供额外的信息:“您的会议已成功改到明天上午10点。提醒您,会议地点不变。

二、ReAct的实现过程

下面,风叔通过实际的源码,详细介绍ReAct模式的实现方法。在手机端阅读源代码的体验不太好,建议大家在PC端打开。

大家可以私信风叔,或者在评论区留言“ReAct源码”,获取ReAct设计模式的示例源代码。

第一步 准备Prompt模板

在实现ReAct模式的时候,首先需要设计一个清晰的Prompt模板,主要包含以下几个元素:

  • 思考(Thought):这是推理过程的文字展示,阐明我们想要LLM帮我们做什么,为了达成目标的前置条件是什么
  • 行动(Action):根据思考的结果,生成与外部交互的指令文字,比如需要LLM进行外部搜索
  • 行动参数(Action Input):用于展示LLM进行下一步行动的参数,比如LLM要进行外部搜索的话,行动参数就是搜索的关键词。主要是为了验证LLM是否能提取准确的行动参数
  • 观察(Observation):和外部行动交互之后得到的结果,比如LLM进行外部搜索的话,那么观察就是搜索的结果。

Prompt模板示例:

TOOL_DESC = """{name_for_model}: Call this tool to interact with the {name_for_human} API. What is the {name_for_human} API useful for? {description_for_model} Parameters: {parameters} Format the arguments as a JSON object."""
REACT_PROMPT = """Answer the following questions as best you can. You have access to the following tools:
{tool_descs}
Use the following format:

Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can be repeated zero or more times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
Begin!
Question: {query}"""

第二步 构建Agent

一个ReAct Agent需要定义好以下元素

  • llm:背后使用的LLM大模型
  • tools:后续会用到的Tools集合
  • stop:什么情况下ReAct Agent停止循环
class LLMSingleActionAgent {
  llm: AzureLLM
  tools: StructuredTool[]
  stop: string[]
  private _prompt: string = '{input}'
  constructor({ llm, tools = [], stop = [] }: LLMSingleActionAgentParams) {
    this.llm = llm
    this.tools = tools
    if (stop.length > 4)
      throw new Error('up to 4 stop sequences')
    this.stop = stop
  }
 }

第三步 定义Tools

Tools有两个最重要的参数,name和description。

Name就是函数名,description是工具的自然语言描述,LLM 根据description来决定是否需要使用该工具。工具的描述应该非常明确,说明工具的功能、使用的时机以及不适用的情况。

export abstract class StructuredTool {
  name: string
  description: string
  constructor(name: string, description: string) {
    this.name = name
    this.description = description
  }

  abstract call(arg: string, config?: Record<string, any>): Promise<string>

  getSchema(): string {
    return `${this.declaration} | ${this.name} | ${this.description}`
  }

  abstract get declaration(): string
}

我们先简单地将两个描述信息拼接一下,为Agent提供4个算数工具:

1. Addition Tool: A tool for adding two numbers
2. Subtraction Tool: A tool for subtracting two numbers
3. Division Tool: A tool for dividing two numbers
4.MultiplicationTool: Atoolformultiplyingtwonumbers

一个很有意思的事情是,这几个算数工具函数并不需要实际的代码,大模型可以仅靠自身的推理能力就完成实际的算数运算。当然,对于更复杂的工具函数,还是需要进行详细的代码构建。

第四步 循环执行

执行器executor是在Agent的运行时,协调各个组件并指导操作。还记得ReAct模式的流程吗?Thought、Action、Observation、循环,Executor的作用就是执行这个循环。

class AgentExecutor {
  agent: LLMSingleActionAgent
  tools: StructuredTool[] = []
  maxIterations: number = 15

  constructor(agent: LLMSingleActionAgent) {
    this.agent = agent
  }
  
  addTool(tools: StructuredTool | StructuredTool[]) {
    const _tools = Array.isArray(tools) ? tools : [tools]
    this.tools.push(..._tools)
  }
}

executor会始终进行如下事件循环直到目标被解决了或者思考迭代次数超过了最大次数:

  • 根据之前已经完成的所有步骤(Thought、Action、Observation)和 目标(用户的问题),规划出接下来的Action(使用什么工具以及工具的输入)
  • 检测是否已经达成目标,即Action是不是ActionFinish。是的话就返回结果,不是的话说明还有行动要完成
  • 根据Action,执行具体的工具,等待工具返回结果。工具返回的结果就是这一轮步骤的Observation
  • 保存当前步骤到记忆上下文,如此反复
async call(input: promptInputs): Promise<AgentFinish> {
    const toolsByName = Object.fromEntries(
      this.tools.map(t => [t.name, t]),
    )

    const steps: AgentStep[] = []
    let iterations = 0

    while (this.shouldContinue(iterations)) {
      const output = await this.agent.plan(steps, input)
      console.log(iterations, output)

      // Check if the agent has finished
      if ('returnValues' in output)
        return output

      const actions = Array.isArray(output)
        ? output as AgentAction[]
        : [output as AgentAction]

      const newSteps = await Promise.all(
        actions.map(async (action) => {
          const tool = toolsByName[action.tool]

          if (!tool)
            throw new Error(`${action.tool} is not a valid tool, try another one.`)

          const observation = await tool.call(action.toolInput)

          return { action, observation: observation ?? '' }
        }),
      )

      steps.push(...newSteps)

      iterations++
    }

    return {
      returnValues: { output: 'Agent stopped due to max iterations.' },
      log: '',
    }
  }

第五步 实际运行

我们提出一个问题,看看Agent怎么通过ReAct方式进行解决。 “一种减速机的价格是750元,一家企业需要购买12台。每台减速机运行一小时的电费是0.5元,企业每天运行这些减速机8小时。请计算企业购买及一周运行这些减速机的总花费。”

describe('agent', () => {
  const llm = new AzureLLM({
    apiKey: Config.apiKey,
    model: Config.model,
  })
  const agent = new LLMSingleActionAgent({ llm })
  agent.setPrompt(REACT_PROMPT)
  agent.addStop(agent.observationPrefix)
  agent.addTool([new AdditionTool(), new SubtractionTool(), new DivisionTool(), new MultiplicationTool()])

  const executor = new AgentExecutor(agent)
  executor.addTool([new AdditionTool(), new SubtractionTool(), new DivisionTool(), new MultiplicationTool()])
  it('test', async () => {
    const res = await executor.call({ input: '一种减速机的价格是750元,一家企业需要购买12台。每台减速机运行一小时的电费是0.5元,企业每天运行这些减速机8小时。请计算企业购买及一周运行这些减速机的总花费。' })
    expect(res).toMatchInlineSnapshot(`
      {
        "log": "Final Answer: The total cost of purchasing and operating the gearboxes for a week is 9336 yuan.",
        "returnValues": {
          "output": "The total cost of purchasing and operating the gearboxes for a week is 9336 yuan.",
        },
      }
    `)
  }, { timeout: 50000 })
})

我们来看一下Agent的输出,以及Agent在这个过程,是如何思考和行动的。可以看到,通过Thought、Action、Observation的循环,AI Agent很好地一步步完成最终答案的输出。

Question:一种减速机的价格是750元,一家企业需要购买12台。每台减速机运行一小时的电费是0.5元,企业每天运行这些减速机8小时。请计算企业购买及一周运行这些减速机的总花费
Thought:I need to calculate the total cost of purchasing and operating the gearboxes for a week.
Action: Multiplication Tool
Action Input: [750, 12]
Observation: 9000
Thought: Now I need to calculate the cost of operating the gearboxes for a day.
Action: Multiplication Tool
ActionInput:[0.5,8,12]
Observation: 48
Thought: Now I need to calculate the cost of operating the gearboxes for a week.
Action: Multiplication Tool
Action Input: [48, 7]
Observation: 336
Thought: Now I need to calculate the total cost of purchasing and operating the gearboxes for a week.
Action: Addition Tool
Action Input: [9000, 336]
Observation: 9336

总结

在AI Agent的多种实现模式中,ReAct模式是最早出现、也是目前使用最广泛的模式。ReAct的核心思想就是模拟人思考和行动的过程,通过Thought、Action、Observation的循环,一步步解决目标问题。

ReAct模式也存在很多的不足:

  • 首先是LLM大模型的通病,即产出内容不稳定,不仅仅是输出内容存在波动,也体现在对复杂问题的分析,解决上存在一定的波动
  • 然后是成本,采用ReAct方式,我们是无法控制输入内容的。因为在任务提交给LLM后,LLM对任务的拆解、循环次数是不可控的。因此存在一种可能性,过于复杂的任务导致Token过量消耗。
  • 最后是响应时间,比起大部分API接口毫秒级的响应,LLM响应时间是秒级以上。在ReAct模式下,这个时间变得更加不可控。因为无法确定需要拆分多少步骤,需要访问多少次LLM模型。因此在在秒级接口响应的背景下,做成同步接口显然是不合适的,需要采用异步的方式。而异步方式,又会影响用户体验,对应用场景的选择又造成了限制。

但是无论如何,ReAct框架提出了一种非常好的思路,让现有的应用得到一次智能化的进化机会。现在很多场景已经有了非常成熟的ReAct Agent应用,比如智能客服、知识助手、个性化营销、智能销售助理等等。

在下一篇文章中,风叔将介绍另一种AI Agent设计模式,REWOO。

深度|OpenAI 今秋发布“草莓”模型!应用于旗舰模型 Orion 训练和即将推出的 Agent,微软合作条款也将发生变化

aigc阅读(38)

OpenAI 正在寻求更多资本支持的同时,其研究人员正尝试推出一款他们认为能够比现有 AI 更好地解决复杂问题的新型 AI 产品。 本月早些时候,CEO Sam Altman 在推特上发布了一张草莓的图片,但没有做出解释,这引发了人们对即将推出的产品的猜测。据知情人士透露,今年夏天,OpenAI 还向国家安全官员展示了 Strawberry 的演示。

Altman 还在寻求为公司筹集更多资金,并寻找减少亏损的方法。自 2019 年以来,OpenAI 已从微软筹集了约 130 亿美元资金,作为与这家企业软件巨头合作的一部分,该合作协议将持续到 2030 年。

据知情人士透露,合作协议的条款可能会发生变化,包括 OpenAI 向微软支付租用云服务器开发 AI 的费用。其中,云服务器是 OpenAI 最大的成本。

01 关于 “Strawberry”

根据 The Information,两位参与 OpenAI 该项目的人员透露,研究人员计划在今年秋季推出代号为“Strawberry”(此前称为 Q*,发音为 Q Star)的新型 AI,并有可能将其作为 ChatGPT 的一部分。

Strawberry 的起源可以追溯到研究领域。它的研究始于前 OpenAI 首席科学家 Ilya Sutskever。在他离职之前,OpenAI 研究人员 Jakub Pachocki 和 Szymon Sidor 在 Sutskever 的工作基础上开发了一种新的数学解决模型 Q*,这让一些专注于 AI 安全的研究人员感到担忧。

就在 Q* 诞生之前,OpenAI 的研究人员开发了一种称为测试时计算的概念变体,旨在提升 LLM 的解决问题能力,该方法使得模型在执行某人的命令或回答问题时能够花更多时间考虑所有部分。当时,Sutskever 还发表了一篇与此相关的博客文章。

Strawberry 可以解决此前未见过的数学问题,这是现今的聊天机器人无法可靠完成的任务。此外,它还经过训练以解决编程相关的问题,但它的能力并不限于回答技术性问题。

在给予更多时间“思考”的情况下,Strawberry 模型还可以回答客户关于更主观话题的问题,比如产品营销策略。

为了展示 Strawberry 在语言相关任务上的能力,OpenAI 的员工向同事展示了 Strawberry 如何解决《纽约时报》复杂的文字游戏 Connections。

The Information 认为,能够解决复杂数学问题的 AI 可能是一项潜在的有利可图的应用,因为现有的 AI 在航空航天和结构工程等数学密集型领域表现不佳。

研究人员发现 ChatGPT 容易给出错误答案,为了改善模型的推理能力,一些初创公司已经开始使用一种廉价的解决办法,将问题分解为更小的步骤,尽管这种变通方法既慢又昂贵。

02 减少下一代模型 Orion 幻觉

Strawberry 最重要的应用之一是为OpenAI 正在开发的下一个旗舰大型语言模型Orion 生成高质量的训练数据。

OpenAI 的前景在一定程度上取决于其正在开发的新旗舰模型 Orion 的最终发布。该模型旨在改进去年早些时候推出的现有旗舰模型 GPT-4。

OpenAI 研究人员表示,使用 Strawberry 可以帮助 Orion 减少幻觉或错误的数量。通过更大的 Strawberry 模型来生成训练 Orion 的数据,这种由 AI 生成的数据被称为“合成数据”。

Altman 在五月的一次活动中表示:“我们觉得我们有足够的数据来开发下一个模型。”他还表示:“我们进行了各种实验,包括生成合成数据。”

这意味着 Strawberry 可能有助于 OpenAI 克服获取足够高质量数据的限制,从而通过从互联网中获取文本或图像等现实世界数据来训练新模型。

此外,Strawberry 可能会帮助即将推出的 OpenAI Agent。Minion AI  CEO 兼 GitHub Copilot 前首席架构师 Alex Graveley 表示,OpenAI 或通过 Strawberry 生成更高质量的训练数据可能有助于 OpenAI 减少模型幻觉的数量。

他还表示,想象一个没有幻觉的模型,当你问它一个逻辑难题时,它能第一次就给出正确答案。模型能够做到这一点的原因是训练数据中的歧义更少,因此它的猜测也更少。

03 基于 Orion 模型的 ChatGPT

推出 Strawberry 的努力是 OpenAI 为了在对话式 AI 或 LLM 领域继续保持领先地位的一部分。这项技术还对未来产品有着重要影响,这些产品被称为 Agent,旨在解决多步骤任务。

OpenAI 及其竞争对手希望这些 Agent 人能够开辟更多的收入机会。OpenAI 的业务正以惊人的速度增长:其向企业销售 LLM 和 ChatGPT 订阅服务的收入大约是去年同期的三倍,每月收入达 2.83 亿美元,尽管其月度亏损可能高于此数,公司估值 860 亿美元。

然而,其他竞争对手已经推出了与 GPT-4 性能相当的模型。目前尚不清楚 Strawberry 的聊天机器人版本能否在今年成功推出。

据悉,这个聊天机器人版本是 Strawberry 模型的一个更小、更简化的版本,称为蒸馏模型,它试图在保持较大模型相同性能的同时,更易于操作并降低成本。

此外,OpenAI 内部也在努力通过一种名为“提炼”的过程来简化和缩小 Strawberry ,以便在 Orion 发布之前将其用于基于聊天的产品。鉴于顶级 AI 开发商之间的竞争日益激烈,这应该并不令人意外。

目前还不确定以 Strawberry 为基础的产品会是什么样子,但一个显而易见的想法是将 Strawberry 改进的推理能力融入 ChatGPT 中。

例如,本月早些时候,谷歌在 OpenAI 之前推出了 AI 驱动的语音助手,尽管 OpenAI 最早在五月宣布了其版本,该助手能够灵活应对用户的打断和话题突然变化。

The Information 认为,这意味着 Strawberry 可能不适合用户期望立即响应的应用程序,例如 OpenAI SearchGPT 搜索引擎,但非常适合对时间不太敏感的用例,例如修复 GitHub 中的非关键编码错误。

无论 Strawberry 是否作为产品发布,随着 OpenAI 寻求继续领先竞争对手并保持显著的收入增长,人们对 Orion 的期待都在不断增加。

Coatue 在最新的 EMW 2024 中表示,英伟达 3 万亿市值对技术主导的“操作系统”而言已经成为一种常态。

语言图像模型大一统!Meta将Transformer和Diffusion融合,多模态AI王者登场

aigc阅读(58)

Transformer和Diffusion,终于有了一次出色的融合。

自此,语言模型和图像生成大一统的时代,也就不远了!

这背后,正是Meta最近发布的Transfusion——一种训练能够生成文本和图像模型的统一方法。

论文地址:https://arxiv.org/abs/2408.11039

英伟达高级科学家Jim Fan盛赞:之前曾有很多尝试,去统一Transformer和Diffusion,但都失去了简洁和优雅。

现在,是时候来一次Transfusion,来重新激活这种融合了!

在X上,论文共一Chunting Zhou,为我们介绍了Transfusion其中的「玄机」。

为何它能让我们在一个模型中,同时利用两种方法的优势?

这是因为,Transfusion将语言建模(下一个token预测)与扩散相结合,这样,就可以在混合模态序列上训练单个Transformer。

研究者从头开始,在混合文本和图像数据上预训练了参数量高达70亿的Transfusion模型。

使用文本和图像数据的混合,他们建立了一系列单模态和跨模态基准的缩放定律。

实验表明,Transfusion在单模态和多模态基准测试中,相较于对图像进行量化并在离散图像token上训练语言模型,很明显具有更好的扩展性。

研究者发现,Transfusion能够生成与相似规模的扩散模型相媲美的高质量图像,而且,它同时也保持了强大的文本生成能力。

作者强调,团队着重做了建模的创新。

首先,全局因果注意力加上每个图像内的双向注意力,是至关重要的。

另外,引入模态特定的编码和解码层后,可以提高性能,并且可以将每个图像压缩到64甚至16个块!

总之,研究者成功地证明了,将Transfusion方法扩展到70亿参数和2万亿多模态token后,可以生成与类似规模的扩散模型和语言模型相媲美的图像和文本。

这就充分利用了两者的优势!

最后,作者激动地畅想道——

Transfusion为真正的多模态AI模型开启了激动人心的可能性。

这些模型可以无缝处理任何离散和连续模态的组合!无论是长篇视频生成、与图像或视频的交互式编辑/生成会话,我们都可以期待了。

01 生图效果秒杀DALL-E 2和Stable Diffusion

Transfusion的生图效果如何?

让我们来检验一下。

以下这些,都是用在2万亿多模态token上训练的70亿参数Transfusion生成的图像——

可以看出,它的生图质量非常之高。

在GenEval基准测试上,它直接超越了DALL-E 2和Stable Diffusion XL!

研究者训练了一个具有U-Net编码/解码层(2×2潜在像素块)的70亿参数模型,处理相当于2T tokens的数据,其中包括1T文本语料库tokens和35亿张图像及其标注。

表9显示,Transfusion在性能上与高性能图像生成模型如DeepFloyd相当,同时超越了先前发布的模型,包括SDXL。

虽然Transfusion在SD 3后面稍显逊色,但该模型通过反向翻译利用合成图像标注,将其GenEval性能在小规模上提升了6.5%(0.433→0.498)。

此外,Transfusion模型也可以生成文本,并且其性能与在相同文本数据分布上训练的Llama模型相当。

02 图像编辑

以下这些,则是用微调后的70亿参数Transfusion模型编辑的图像——

研究者使用仅包含8000个公开可用图像编辑示例的数据集对70亿参数模型进行了微调,其中每个示例包括一个输入图像、一个编辑提示词和一个输出图像。

对EmuEdit测试集中随机示例的人工检查表明,微调的Transfusion模型可以按照指示进行图像编辑。

也就是说,Transfusion模型确实可以适应并泛化到新的模态组合。

03 让语言和图像大一统的模型来了

我们都知道,多模态生成模型需要能够感知、处理和生成离散元素(如文本或代码)和连续元素(例如图像、音频和视频数据)。

不过,离散元素和连续元素,却很难在同一个模型中大一统起来。

在离散模态中,是语言模型占主导地位,它靠的是在下一个token预测目标上训练的。

而在生成连续模态上,则是扩散模型及其泛化一直处于最前沿。

有没有可能将二者相结合呢?

此前,学界曾尝试了多种方法,包括扩展语言模型,以使用扩散模型作为工具,或者通过将预训练的扩散模型移植到语言模型上。

此外,还有人通过量化连续模态,在离散tokens上训练标准语言模型,从而简化模型架构。

然而这样做的代价,就是信息的丢失。而Meta的研究者在这项工作中,通过训练单个模型,来同时预测离散文本tokens和扩散连续图像,他们成功地做到了完全整合两种模态,而不丢失信息。

他们的方法就是——引入Transfusion。

这是一种训练单一统一模型的方法,可以无缝理解和生成离散和连续的模态。

研究者的主要创新就在于,他们针对不同的模态使用了不同的损失——文本使用语言建模,图像使用扩散——从而在共享的数据和参数上进行训练

研究者在50%的文本和50%的图像数据上预训练了一个Transformer模型,不过对于两种模态来说,分别使用了不同的目标。

前者的目标是,预测文本的下一个token;而后者的目标,则是图像的扩散。

在每个训练步骤中,模型都会同时接触到这两种模态和损失函数。标准嵌入层将文本tokens转换为向量,而块化层(patchification layer)则将每个图像表征为一系列块向量。

随后,研究者对文本tokens应用因果注意力,对图像块应用双向注意力。

在推理时,他们引入了一种解码算法,它结合了语言模型的文本生成和扩散模型的图像生成的标准实践。

从此,有望训练真正的多模态模型

在文本到图像生成中,研究者发现:Transfusion在计算量不到三分之一的情况下,FID和CLIP分数均超过了Chameleon的离散化方法。

在控制FLOPs的情况下,Transfusion的FID分数比Chameleon模型低约2倍。

在图像到文本生成中,也可以观察到类似的趋势:Transfusion在21.8%的FLOPs下与Chameleon匹敌。

令人惊讶的是,Transfusion在学习文本到文本预测方面也更有效,在大约50%到60%的Chameleon FLOPs下实现了文本任务的困惑度平价。

同时,研究者观察到:图像内的双向注意力非常重要,如果用因果注意力替代它,就会损害文本到图像生成。

他们还发现,通过添加U-Net上下块来编码和解码图像,就可以使Transfusion在相对较小的性能损失下,压缩更大的图像块,从而能将服务成本降低到多达64倍。

最后,研究者证明了:Transfusion可以生成与其他扩散模型相似质量的图像。

他们在2万亿tokens上,从零开始训练了一个7B参数的Transformer,它增强了U-Net的下采样/上采样层(0.27B参数)。

在这2万亿tokens中,包含1万亿的文本tokens,以及大约5个周期的692M图像及标注,相当于另外1万亿个patches/tokens。

在GenEval基准上,Transfusion模型优于其他流行模型,如DALL-E 2和SDXL。

而且,与那些图像生成模型不同的是,它还可以生成文本,在文本基准上达到了Llama 1级别的性能水平。

总之,实验表明:Transfusion是一种十分有前途的方法,可以用于训练真正的多模态模型。

数据表征

研究者在两种模态上进行了数据实验:离散文本和连续图像。

每个文本字符串被标记化为来自固定词汇表的离散token序列,其中每个token被表征为一个整数。

每个图像被编码为使用VAE的潜在块,其中每个块被表征为一个连续向量;这些块从左到右、从上到下排序,以从每个图像创建一个块向量序列。

对于混合模态的例子,研究者在将图像序列插入文本序列之前,用特殊的图像开始(BOI)和图像结束(EOI)token包围每个图像序列。

因此,就得到了一个可能同时包含离散元素(表征文本token的整数)和连续元素(表征图像块的向量)的单一序列。

模型架构

模型的大部分参数属于一个单一的Transformer,它会处理每个序列,无论模态如何。

Transformer将一个高维向量序列作为输入,并生成类似的向量作为输出。

为了将数据转换到这个空间,研究者使用了具有不共享参数的轻量级模态组件。

对于文本,这些自己组件是嵌入矩阵,会将每个输入整数转换为向量空间,并将每个输出向量转换为词汇表上的离散分布。

对于图像,研究者则尝试了两种方法,将k×k块向量的局部窗口压缩为单个Transformer向量(反之亦然):(1)一个简单的线性层,以及(2)U-Net的上下块。

研究者使用预训练的VAE(变分自编码器)将图像和潜在表征进行互相转换,然后通过简单的线性层或U-Net下采样块,将其转换为patch表征

Transfusion注意力

语言模型通常使用因果掩码,来有效地计算整个序列的损失和梯度,只需一次前向-后向传递,而不会泄露未来token的信息。

相比之下,图像通常会使用不受限制的(双向)注意力来建模。

而Transfusion通过对序列中的每个元素应用因果注意力,并在每个单独图像的元素内应用双向注意力,来结合这两种注意力模式。

这样,每个图像块就可以在关注同一图像中其他块的同时,只关注序列中先前出现的文本或其他图像的块。

结果显示,启用图像内注意力显著提升了模型性能。

在因果掩码上扩展后,Transfusion就允许同一图像的patch相互为条件

训练目标

为了训练模型,研究者将语言建模目标LLM应用于文本token的预测,将扩散目标LDDPM应用于图像块的预测。

LM损失是逐个token计算的,而扩散损失是逐个图像计算的,这可能跨越序列中的多个元素(图像块)。

具体来说,他们根据扩散过程,向每个输入潜在图像x0添加噪声ε,以在块化之前产生xt,然后计算图像级别的扩散损失。

通过简单地将每种模态上计算出的损失与平衡系数λ结合,研究者合并了这两种损失:

这个公式,也是一个更广泛想法的具体实例:将离散分布损失和连续分布损失结合,就可以优化同一模型。

推理

为了反映训练目标,解码算法也需要在两种模式之间切换:LM和扩散。

在LM模式中,从预测分布中逐个token进行采样。当采样到一个BOI token时,解码算法切换到扩散模式。

具体来说,这需要将形式为n个图像块的纯噪声xT附加到输入序列中(取决于所需的图像大小),并在T步内去噪。

在每一步t中,噪声会被预测并使用它生成x_(t−1),然后将其覆盖在序列中的x_t上。即,模型始终基于噪声图像的最后一个时间步进行条件处理,无法关注之前的时间步。

一旦扩散过程结束,就将一个EOI token附加到预测的图像上,并切换回LM模式。

如此一来,就可以生成任意混合的文本和图像模态。

04 实验

与Chameleon的比较

研究者在不同模型规模(N)和token计数(D)下,比较了Transfusion与Chameleon,并使用两者的组合作为FLOPs(6ND)的代理。

为了简化和参数控制,这些实验中的Transfusion变体使用简单的线性图像编码器/解码器,块大小为2×2,以及双向注意力。

如图5所示,在每个基准测试中,Transfusion始终表现出比Chameleon更好的scaling law。

受参数、数据和计算控制的不同规模的Transfusion和Chameleon模型的性能,其中所有轴都是对数的

表3则显示了模型的评估结果,以及平价FLOP比率。

其中,平价FLOP比率用来估算相对计算效率:Transfusion和Chameleon达到相同性能水平所需的FLOPs数量之比。

计算效率的差异在图像生成中特别显著,其中FID Transfusion以1/34的计算量实现了与Chameleon的平价。

最大(7B)Transfusion和Chameleon模型在受控环境中的性能,两个模型均在0.5T token上进行训练

令人惊讶的是,纯文本基准测试也显示出Transfusion的更好性能,即使Transfusion和Chameleon以相同方式建模文本。

与原始Llama 2配方相比,0.76B Transfusion和Chameleon模型在纯文本基准上的性能

架构消融

1)注意力掩码

表5显示,在所有基准测试中,启用这种注意力模式比标准因果注意力效果更好,并且在使用图像编码/解码架构时也是如此。特别是,在使用线性编码层时,FID的改善最为显著(61.3→20.3)。

在仅因果的架构中,序列中后出现的块不会向前面的块传递信息;由于U-Net块内含有双向注意力,并独立于Transformer的注意力掩码,因此这种差距不太明显。

有/无图像内双向注意力的0.76B Transfusion模型的性能

2)块大小

Transfusion模型可以在不同尺寸的潜在像素块上定义。较大的块大小允许模型在每个训练批次中打包更多图像,并显著减少推理计算量,但可能会带来性能损失。

表6显示,虽然随着每个图像由更少的线性编码块表征,性能确实一致下降,但使用U-Net编码的模型在涉及图像模态的任务中受益于较大的块。

这可能是因为训练期间看到的总图像(和扩散噪声)数量更大。

此外,随着块逐渐变大,文本性能也在变差。

这可能是因为Transfusion需要投入更多资源(即参数)来学习如何处理具有较少块的图像,从而减少推理计算。

3)块编码/解码架构

实验表明,使用U-Net的上升和下降块比使用简单的线性层有优势。

一个可能的原因是模型受益于U-Net架构的归纳偏置;另一种假设是,这种优势来自于U-Net层引入的整体模型参数的显著增加。

为了分离这两个混杂因素,研究者将核心Transformer扩展到70亿个参数,同时保持U-Net参数量(几乎)不变;在这种设置下,额外的编码器/解码器参数仅占总模型参数的3.8%增加,相当于token嵌入参数的量。

表7显示,尽管随着Transformer的增长,U-Net层的相对优势缩小,但并未消失。

例如,在图像生成中,U-Net编码器/解码器使得较小的模型能够获得比使用线性块化层的70亿模型更好的FID分数。

在图像描述中,也有类似的趋势——添加U-Net层让1.4B Transformer(总计1.67B)的CIDEr得分超过了线性70亿模型的性能。

总体而言,U-Net对图像的编码和解码确实具有归纳偏置的优势。

Transfusion的线性和U-Net变体在不同模型大小上的性能

4)图像加噪

实验中,80%的图像-标注对按照标注优先的顺序排列,图像依赖于标注,这基于图像生成可能比图像理解更需要数据的直觉。剩下的20%对则是标注依赖于图像。

然而,这些图像需要作为扩散目标的一部分被加噪。

为此,研究者测量了在20%的情况下限制扩散噪声到最大t=500,即图像在标注之前出现时的效果。

表8显示,限制噪声显著改善了图像描述,CIDEr得分显著提高,同时对其他基准测试的影响相对较小(小于1%)。

结论

这项研究探讨了如何弥合离散序列建模(下一个token预测)与连续媒体生成(扩散)之间的差距。

研究者提出了一个简单但以前未被探索的解决方案:在两个目标上训练一个联合模型,将每种模态与其偏好的目标联系起来。

实验表明,Transfusion可以有效扩展,几乎没有参数共享成本,同时能够生成任何模态。

作者介绍

Chunting Zhou

共同一作Chunting Zhou,是Meta AI的研究科学家,研究兴趣是高效且可扩展的生成模型。

她于2022年在卡耐基梅隆大学计算机科学学院的语言技术研究所获得博士学位,从事的是自然语言处理的研究。此前,她于2016年在香港大学获得计算机科学硕士学位,于2014年在大连理工大学获得计算机软件工程学士学位。

Lili Yu

另一位共同一作Lili Yu,也是Meta AI的研究科学家。

她于2016年在麻省理工学院获得电气工程与计算机科学博士学位,于2011年在北京大学获得物理学学士学位。

Xuezhe Ma

在这篇论文中,还有一位华人作者Xuezhe Ma,是南加州大学信息科学研究所的研究主管和计算机科学系的研究助理教授。

原则上,表征学习可以自动学习在数学和计算上便于处理的表征。对此Xuezhe Ma认为,基于深度学习方法的表征学习技术可以从根本上改变传统的特征设计范式。

他的研究重点是通过开发和分析深度学习技术来实现这一转变,以提高表征学习的有效性、效率、可解释性和鲁棒性。

主要贡献如下:

– 多模态大语言模型(LLMs)的效率开发了高效的统一神经架构和学习算法,以学习各种数据模态的通用语义空间。

– 大语言模型中的高效且鲁棒的长上下文建模开发了高效且鲁棒的架构和方法,用于在大语言模型中建模长程依赖关系。

– 多模态大语言模型在长序列数据中的应用和评估方法将长上下文大语言模型应用于实际任务,并开发可靠的评估指标。

他在卡耐基梅隆大学语言技术研究所获得博士学位,师从Eduard Hovy教授,并在上海交通大学获得了计算机科学硕士和学士学位。

参考资料:

https://the-decoder.com/metas-transfusion-blends-language-models-and-image-generation-into-one-unified-model/

https://x.com/violet_zct/status/1826243212530610389

https://x.com/DrJimFan/status/1827116592951652823

剑指「智能体」

aigc阅读(57)

关于ChatGPT做搜索的新闻,我一直挺感兴趣。

上个月25号,OpenAI在当地推出了一个新产品,名叫“SearchGPT”。官方说,产品能给用户提供带链接的搜索结果,用户还可以继续问问题,系统会根据上下文给出回答。

我看到消息后,马上申请内测。但一个月过去,官方还没给我权限;现在网上办法多。我就通过特殊朋友渠道,弄到了一个测试账号,体验了一把。

体验之后什么感觉呢?

一句话总结即:perplexity AI解决不了的问题,SearchGPT也解决不了。

比如:AI幻觉。一千个观众有一千个哈姆雷特,不同的人看同一信息可能得出不同的结论。就算是同一个人,今天看到的东西和明天可能理解也会有所不同。

这就像AI面对复杂、多变的人类思维一样,如果AI不能真正地“站在你的角度”去理解问题,感受你的感受,那它很难独立地给出人们真正想要的答案。

因此,除非AI能达到这样高级的理解和适应能力,不然,AI永远无法避开幻觉问题。所以,怎么办呢?

01

来看看另一个新闻:

不久前,Twitter上有个名叫@iruletheworldmo的用户频繁爆料,谈到Project Strawberry(草莓计划),这是OpenAI的一个项目,以前叫Q-Star。

这个计划目标是让AI变得更聪明,更能自主。简单来说,他们希望训练出来的AI能自己处理很多事,不需要人来监督。

这意味着,AI将能自己搜索信息,深入研究问题,甚至自己创造数据,这样就能减少对人类的依赖。也就是说,AI可能会变得更像人,更会思考。

这条推文引起了不少人的关注,大家都在猜到底是不是OpenAI内部信息,但还没等到官方回复,就有人跳出来了,这人叫Div Garg,是MultiOn公司的创始人。

他说:

OpenAI的“Q”还没正式出来,但我们已经推出了一个新的智能体,叫“Agent Q”,并且邀请大家来试试,很多人怀疑他在利用OpenAI的秘密项目来做广告。

我查了查,发现MultiOn这家公司确实在2023年接受了OpenAI、DeepMind等公司、高管个人的投资;所以,让人不禁猜想,OpenAI做的搜索项目,和他们到底有没有关系?

好吧。姑且,不论这事,来看看MultiOn这家公司。

MultiOn专门做AI智能体,目标是,通过智能体帮助人们完成日常任务,比如:网页浏览、网购和邮件处理,他们希望构建一个能在数字世界里,能自主完成复杂任务的AI系统。

这么一看,两者之间确实有些相似。相似在哪呢?

我们换个角度:

请问,你解决不了AI搜索幻觉的问题,还要不要解决?作为普通人的我们当然觉得,要。必须解决。其实,单一视角往往会限制我们。

系统科学家罗素·艾可夫(Russell L. Ackoff),在作品《问题解决的艺术》中提到:

复杂问题往往源于问题定义本身,如果能够以新的视角、新框架重新定义问题,有时能发现原本看似复杂的问题,其实有更简单的解决之道,或者,原本的问题根本就不需要以传统的方式解决。

也就是说:解决一个复杂问题,最好的办法是,绕开把它转成一个非问题。

举个通俗的例子:

想象一下,你家厨房每次做完饭都一团糟。通常,你可能会选择在烹饪后进行一次大扫除,这样虽然能清理干净,但每次要花费大量时间和精力。

如果你换一个角度来看就不一样了。类似,重新组织厨房物品,把常用的厨具、调料放在容易拿到的地方,不常用的东西则收好。

改进烹饪流程,做饭时,边做边清洗用过的器具,甚至,在操作台上放一个垃圾桶,用于临时收集厨余和垃圾。

这样,是不是做饭过程中就能持续保持厨房整洁了?这就是,非问题化;重新定义问题和调整处理方式,使原本要解决的问题变得不再是问题。

02

那么,这和搜索与智能体之间有什么关系呢?来看看,OpenAI首席执行官Sam Altman在2024年4月25日斯坦福大学的演讲。

他说,AI实现通用人工智能(AGI)要经过五个阶段:

  • 一级:能够进行对话交互的人工智能;
  • 二级:系统能够解决博士级别的问题。
  • 三级:系统能够代表用户工作几天;
  • 四级:人工智能能够开发创新。
  • 五级:人工智能系统可以执行组织的工作。

他并指出,目前OpenAI处于第一级,接近第二级。

考虑到进展,请思考一下,这样一个AI行业巨头,如何从当前阶段过渡到更高级阶段,比如“三级或四级,或者说,如何让弱人工智能到强人工智能?让技术更能满足每个用户第一场景使用情况?

答案很明显:AI智能体。

因为,智能体是过度解决问题的最好办法。想象一下,在理想状态下,面对亿万用户时,如果能够展示数千万个AI解决方案,来帮助大家解决各种问题,那么,无疑是最有效的。

毕竟,每个人都能找到符合自己需求的解决方案,极大提到了解决问题的效率和质量。

为什么是智能体?

昨天,一个朋友抱怨说,买房后要还贷款,未来几十年每月都要还几千块钱;他让我帮忙算一算,到目前为止,他一共还了多少本金和利息,如果他想提前还款,根据现在的政策,可以节省多少钱。

这种复杂的问题我怎么能解决?于是,我把它给了豆包。

我先描述基本情况,让豆包记住,然后,再把其他想法和诉求告诉它。大概几十轮的对话后,豆包帮我详细计算了出来,并生成一份大约600字的详细分析报告。

这份报告包括了完整的背景信息、我的具体诉求、计算过程和对比分析等。

你用过豆包,或者其他可以和AI对话的工具么?不知道你有没有发现,现在此类对话工具,连续上下文逻辑能力变强了。

我再说一个贴身经历:

最近几天,经常接到一些奇怪的电话,涉及内容如贷款、房产购买、京东优惠等。

这些电话中,上来就问需要、不需要、行或者不行。我发现,对方语气很像真人,但当我给出它们设定范围以外的问题时,它无法回答了。

这说明,智能体已经在不知不觉中融入了日常生活,它们,能够在特定的环境中模仿人类的互动方式。

所以,一个完整智能体,能够充分与环境互动,这包括智能体自身和它所处的环境两个部分;就像人类在物理世界中的行为一样,智能体在其“外部环境”中也能执行任务。

说白了,我可以与它交互,也能设定好指令,界定范围,让它帮我完成目标。

对比下来,是不是不难看出,智能体无疑是绕过AI搜索中幻觉问题、并成功商用的有效方式之一?

为什么这么说?

你想想看,考虑传统AI搜索和提问时,AI搜索直接给出答案,这种答案比较扁平化,不具备连贯性。换言之,你提出一个问题,AI直接给你一个结论,结论会引用来自多个信息源的数据。就结束了。

智能体工作方式不同。

它不仅对单一问题做出反应,还会引入外部信息,在一连串多轮问答中,会反复接受来自你的信号,通过这种互动,它更能理解你的诉求。

在解决问题之后,它能生成一篇简短的文章、总结方案,把整个互动过程指标串联在一起;很明显,智能体不是一个简单的AI提问、总结工具,是一个完全符合每个人需求的系统。

因此,智能体能完美绕过AI幻觉,毕竟过程中,你不满意时,能一次次纠正它的错误。

03

纵观国内市场,目前谁在做智能体呢?我查阅了一下,据说有超过4500家,比如:大家耳熟能详的百度、科大讯飞、云从科技、字节跳动和腾讯等。

所以,谁在做智能体,这个问题不好解答。与其这样,不如换种思考方式:智能体类型有哪些?我们通过类型看各家所在的生态位。

我盘点结果是:

智能体(Agent)平台大体上分为两类:一类基于知识库和数据库的。就像聊天机器人(Chatbot)这种简单的平台;另一类是用来解决更复杂问题的。这种平台有多工作流编排的能力,比较高级。

国外Orkes Conductor、ControlFlow by Team Prefect、和 Flyte等平台,就是专为复杂工作流和数据处理设计的。

这些平台主要用户包括数据科学家、工程师、开发者,他们用平台来建立和优化复杂的工作流程,提高数据处理的效率和自动化水平。

国内也有类似的平台。像扣子Coze、百度智能云的千帆AgentBuilder、科大讯飞的星火智能体平台,还有腾讯的元气和阿里云的AgentScope等。

他们利用大模型搭建 AI 原生应用工作台,给开发者提供 RAG、Agent、GBI 等应用框架,赋能他们开发出来文生文、对话、文生表等垂直应用,以帮助企业和个人解决问题。

我根据对象、流程和代码复杂程度,把它细分成三类:

  1. 面向公众和非开发人员
  2. 面向开发者的平台
  3. 企业级开发平台

第一种,主要偏向低代码平台,不要你懂太多编程。

像GPTs这样的工具,提供很标准的操作界面和流程,主要用来做基于知识库的聊天机器人。给你一个模板,你按步骤填信息就行,不用自己调整太多东西。

字节跳动的扣子(国内版),就是被设计来帮助人们轻松创建下一代的AI聊天机器人。

第二种平台功能更强大,可以让开发者用各种API、第三方库,还能自己编写代码和调整参数,来精细控制智能体的行为。

Coze海外版很受欢迎,它的功能全面,支持很多高级操作。像百度、阿里和亚马逊也提供这样的平台,让开发者可以用各种AI模型来做更复杂的应用。

企业开发平台,专为企业设计,重点是帮助企业自动化他们的工作流程。

比如:

实在智能的TARS-RPA-Agent和壹沓科技的“数字员工团队”CubeAgent,它们是用来自动化企业日常操作的。

还有国外的Torq和国内澜码科技的AskXbot平台,也提供了大模型结合企业知识库的解决方案,帮助企业自动化处理更多复杂任务。

三种类型各有千秋,这么说,是不是更清楚一些?那么,站在AI搜索和智能体中间来看,智能体属于那种呢?

04

解答该问题,不妨站在行业结构视角看。我盘了一下,智能体(Agent)行业结构有四层,分别为:基础工具层、运营平台层、开发工具层,以及服务与培训平台层。

组件是做智能体必不可少的基础。有各种智能模块、记忆模块,比如语言模型、数据库,还有一些安全工具和通信工具,就像盖房子的砖块和水泥。

运营层,包括制作Agent组件的厂商和各种运营集成平台。如GitHub这样的Agent框架发布平台,它们提供必要的环境和服务,支持智能体运行。

开发层相对容易理解了。

像Agent工具集成平台AgentLego、或提供专属云环境及沙盒环境的平台等,它们使开发者能够构建、测试和部署智能体。

值得一提的是,像NexusGPT、Relevance AI等平台,它们提供数字员工Agent的训练服务,目的帮助企业把智能体整合进现有的工作流程中,或者帮助个人创建能自动完成任务的AI团队,这反而是目前很多企业刚需。

国内也有类似的公司。例如:

金柚网的梧桐数字员工、壹沓科技的数字员工平台1Data Agent,以及实在智能的RPA Agent。

这些平台的特点是允许用户通过聊天,轻松与智能体互动,管理和优化各种业务流程,使智能体理解和执行复杂任务,让日常更高效。

不论怎么说,从短期发展看,智能体要解决两个问题:

  1. 丰富通用工作流和场景工作流,类似于AI搜索下的大搜,还要在处理数据训练、多轮对话的准确性上下功夫。
  2. 让智能体成为知识专家,形成可持续的服务能力。有点像针对特定领域进行深入挖掘。

比如,假设我是做消费品营销的,如果有一个专门的智能体,它学了很多关于社交媒体趋势、消费者行为的知识,那么,它就能真正帮到业务。

当然,智能体在其他行业也在不断爆发,像游戏,金融、医疗等,总体上说,基于LLM的能力,下一步基础智能体必将是绕不开的一步。

总结

让它光思考,远远不够。

想实现真正全面AGI,得把对话模型变成基本智能体,让它参与到实际使用中去;就像人们常说的,从实践中来,到实践中去一样。

所以,AI生成避免不了幻觉,但智能体的轮番交互,可以微调,可以解决具体问题,至少,使用场景下,这是闭环的正向反馈动作。

7000字详解!幼儿园都能看懂的Stable Diffusion工作原理

aigc阅读(70)

事先声明!本文没有苦涩难懂的各种专业术语和代码公式,请大家放心食用!!

在过去的一年里,AIGC在绘画领域的蓬勃发展对设计行业的冲击相信大家都有目共睹。各个公司都在要求设计师必须会使用 AIGC 的相关工具,其中以 Stable Diffusion 为基础的系列工具和 Midjourney 应用范围最广。

AI绘画领域能够取得如此巨大的进展,很大的功劳要归属于Stability AI发布了开源的Stable Diffusion。

它除了降低硬件要求,使其可以在相对普通的硬件上运行外。也正是因为它的开源性,应运而生的相关研究和为了更好控制模型的各种插件才发展的尤为繁荣。

本文也将从 Stable Diffusion 从发,聊一聊它的工作原理,希望能够帮助大家更好的理解和使用它。

为什么需要了解 SD 的工作原理

在使用 Stable Diffusion相关工具时,并非一定需要了解它的工作原理,但了解它对后续的使用会很有帮助。当遇到生成图片质量低,各种参数不知道怎么调整时,不会举手无措。因为你会知道它的配置参数比如:种子、采样器、步数、CFG 比例或去噪强度等是如何去影响最终生成图片的,能够帮助我们自定义调整算法以适应特定的设计需求和偏好,从而生成更符合预期的视觉内容。

在接下来的内容中,我会通过类比的方式让大家了解 Stable Diffusion的内部工作原理,以及它是如何能够通过提示词、图像参考等输入条件来生成各种创意图像的,再次强调本文没有苦涩难懂的各种专业术语和代码公式,几乎适合所有人。如果你在使用 Stable Diffusion 生图得时候,出图总是差强人意,相信看完这篇文章会对你有很大的帮助。

一、生成式模型的发展

生成模型发展初期主要是基于生成对抗网络(GAN),但在2021年随着扩散模型性能的显著提升和生成质量的大幅度改进逐渐成为主流。

因为它更接近人的思维模式,能够实现更自然和多样化的生成内容。

与传统的GAN相比,扩散模型在生成样本的质量、多样性和稳定性上具有一定的优势。并且在跨模态应用中表现出色,例如OpenAI的GLIDE和DALL·E 2、谷歌的Imagen、以及Stability AI的Stable Diffusion等都是基于扩散模型的应用,凸显了它在文本到图像生成中的强大能力。

下面我们先来介绍一下两者的工作原理,放心你一定能看懂!

1. 生成对抗网络(GAN)的工作原理

生成对抗网络(GAN)是由两部分组成的深度学习模型,它的核心思想是让两个网络一个生成器(Generator)和一个判别器(Discriminator)相互对抗,以此来提高生成数据的质量。

接下来我们用设计师做比喻来解释一下生成对抗网络(GAN)的工作原理,想象一个由两位设计师组成的团队:一位是设计实习生(生成器),另一位是设计总监(判别器)。他们相互配合完成客户所要求的视觉作品。

设计实习生(生成器):

实习生的职责是创造出新的视觉作品,比如海报、广告等。他的要求是制作出让客户满意漂亮的作品,以至于让客户相信是出自一位设计大师之手。

在初始阶段他的作品可能看起来比较生硬和不自然,很容易被识别出是新手做的。

设计总监(判别器):

总监主要是评价实习生的作品,并判断它画面是否和谐,字体、颜色等设计是否合理。总监具备视觉鉴赏的敏感眼光,能够识别出画面中的问题。

他的目标是确保提交的方案在视觉上没有问题,画面表达符合客服要求,保持高质量的方案产出。

工作流程:

第一步: 设计实习生提交他的初步设计给设计总监。早期的设计可能很容易出现视觉上的问题,因为缺乏工作经验和设计技法,需要不断地学习。

第二步: 设计总监审核这些设计,并提供反馈,指出画面哪些部分有问题或者没有很好的表达客户的需求。在这个过程中会逐渐提高对实习生的要求。

第三步: 设计实习生根据这些反馈调整他的创作方法,学习新的技术,尝试改进他的画面,让它们更加精细美观,能够更好的表达客户的需求。

重复: 这个过程不断重复,实习生不断改进他的作品,而总监也在不断提高对实习生的作品的视觉要求。

结果:

经过多次迭代后,如果实习生能够创造出,即使是非常有经验的设计总监都难以挑出问题的作品。到这一步就可以说生成对抗网络(GAN)已经训练完成了,生成器(设计实习生)已经能够制作出足够优秀的视觉作品,判别器(设计总监)的审美和视觉评判能力也得到了提升。通过两者不断地提高要求,GAN用于视觉生成,能够产生质量非常高的图像。

2. 生成对抗网络(GAN)被逐渐放弃的原因

GAN的训练不稳定:

设计总监过于挑剔:对设计师的每一项作品都持怀疑态度,并拒绝接受大部分设计方案。

设计师走捷径:为了通过审查,设计师开始不断重复相似的设计作品(模式崩溃),最终丧失了创造力和多样性。

难以评估设计质量:

缺乏明确标准:没有清晰的设计审美标准,很难判断设计师的作品是否符合期望。

设计总监的个人喜好:有时会因为自身的审美偏好对设计师的作品产生偏见,从而影响作品质量的评估。

对资源要求高:

设计师与设计总监的持续对抗需要大量的精力和时间,使得整个设计过程漫长而耗费资源。

设计师需要反复与总监沟通调整,沟通成本较高。

与GAN不同,扩散模型就像是拥有明确方向且稳定的设计团队,通过渐进式的优化逐步达成高质量的设计效果。下面我们继续来看一下扩散模型的工作原理。

二、扩散模型(Diffusion Models) 的工作原理

扩散模型之所以这样命名,是因为它的生成过程和物理学上的分子扩散过程非常相似,就像把冰融化为水再把水冻结成冰,水会在这个过程中逐渐移动和扩散。

扩散模型也是由主要的两个步骤组成,正向扩散和反向扩散,正向扩散是逐步增加噪声直至原始图像没有任何可以辨别的特征,反向扩散是逐步去除噪声直至恢复原始的数据让画面可辨认。

看不懂没有关系,同样我们做个比喻,比如用文物修复师的角色来形容扩散模型的工作原理,文物修复师的工作是修复一件经历了严重损坏的古老珍贵文物。

1. 损坏模拟(正向扩散的加噪过程)

  • 修复师修复文物的时候,首先需要完全了解损坏的过程。因此他采取了一个看似逆向的方法:他先对一个完好无损的相似文物进行人工老化和损坏处理,逐步施加各种损害,比如裂纹、掉漆、褪色等,模拟多年来可能发生的自然磨损。
  • 这个过程相当于扩散模型中的正向过程,即逐步增加噪声。这里的“噪声”不是字面意义上的声音,而是指对文物中的各种损坏因素(裂纹、掉漆、褪色等),让它从完好的状态逐渐变为完全损坏的状态。

2. 文物修复(反向扩撒的去噪过程)

  • 接下来就到了修复师把老化的文物恢复到它原始未受损的状态。这需要非常高超的技术和对文物原始状态的深刻理解。修复师会使用各种工具和化学物质,仔细地去除每一处人为的损坏,包括填补裂缝、重新上色、并修复褪色和磨损的部分。
  • 这一过程对应扩散模型中的逆向过程,即逐步去除噪声。在这里,“去除噪声”意味着修复师在消除之前刻意添加的所有损坏的同时,逐步还原文物的原始状态。

3. 噪声

在这个过程中,”噪声”指的是刻意施加到文物上的各种损坏因素。

这些“噪声”被有计划地逐步加入到文物的破坏中,来模拟文物被随机破坏。这个过程的目的是,在修复训练中创建一个从完全有序到完全无序的连续过程,以便文物修复师学习如何把随机破坏的文物重新恢复出完好的、精美的原始状态。

4. 噪声预测器和采样

噪声预测器和采样在反向扩散中是不可或缺的关键技术。

噪声预测器可以想象成一个高级的诊断工具,文物修复师使用它来分析艺术品的损坏程度和类型。这个工具能够精确地确定每一处损伤的位置、深度和影响,为修复工作提供依据。

采样过程可以视为修复过程中的实际操作步骤,每一步操作都基于噪声预测器提供的数据。由于解决某一个破损的问题有很多种方法,所以采样的实际操作步骤也可以分为很多种。对应到模型中就是各种采样器,比如:Euler, Euler Ancestral, DDIM, DPM++ 2M Karras等。再简单点来说,比如同一道数学题有多种解法,每一种解法就是一个个的采样器。

通过上面的形容,把扩散模型的“加噪”和“去噪”用文物修复的过程来描述,相信大家应该都懂了,其中文物修复师不仅要理解文物人为加速老化过程,还要掌握如何从极端损坏中恢复出文物的原始状态。经过这样不断的双重过程,加上修复工具(噪声预测器和采样等)的使用,先破坏再修复的方式,能够让文物修复师的能力逐渐提升,达到高质量还原文物的目的。回到扩散模型,就是让扩散模型在不断的加噪和去噪中不断训练,提高模型的能力,让其能够生成更高质量的图片或其它逼真数据的目的。

我们经常听到的Stable Diffusion,与扩散模型(Diffusion Models)并不相等,扩散模型是通用的底层技术。而Stable Diffusion是一种实现了特定技术应用的扩散模型,OK,下面我们继续来看一下Stable Diffusion 的工作流程。

三、Stable Diffusion 的工作流程

Stable Diffusion虽然与扩散模型的基本原理相同,但它更注重条件生成,名称中的Stable(稳定的)也强调了这一点,也正是因为条件生成的各项技术,才能让模型更接近我们的想法来生成图片,所以条件生成也是Stable Diffusion的核心功能。

条件生成

条件生成技术在视觉领域扮演着核心角色,我们最常使用的文生图(Text-to-Image)就是其最基础的功能之一, 除了文本到图像的转换。如图像到图像(Image-to-Image)、图像修复(Inpainting)、图像扩展(Outpainting)以及深度到图像(Depth-to-Image)等。这些技术都在各个不同的方向解决控制视觉和图形的任务,下面来看一下它们具体是如何工作的。

文生图(Text-to-Image):文本到图像的转换

将文本转换为计算机能够理解的内容是Stable Diffusion最基本的功能,也就是我们常说的文生图功能。它由以下几部分组成。

分词器(Embedding):

由于计算机不能直接理解人类的语言,只能处理数字和符号。分词器的任务是把我们人类的语言转换成计算机可以理解的数字表示。举个例子,比如:“一只在草地上跳舞的猫”,经过分词器处理后可能是:‘一只’,‘在’,‘草地上’,‘跳舞’,‘的’,‘猫’。通过预先定义的词汇表,将每个词语映射成一个唯一的数字编号。比如:{‘一只’: 1,‘在’: 2, ‘草地上’: 3,‘跳舞’: 4,‘的’:5,‘猫’: 6}。

嵌入(Embedding):

分词器把文本处理好以后,嵌入将数字编号转换为计算机可以处理的数字向量。嵌入向量可以让模型理解文本的含义,并进行后续的任务,例如文本分类、翻译或图像生成,也就是赋予词汇意义。

语言-图像对比预训练模型-CLIP(Contrastive Language-Image Pre-training):

通过学习大量的图像和对应的文本描述,CLIP可以将两者联系在一起,使得模型能够根据图像找到相关的文本描述,根据文本描述找到相关的图像。为计算机提供理解自然语言和视觉内容之间关联的能力,来指导图像的生成。

类标签(Class Labels)

类标签作为条件信息,可以帮助模型生成特定类别的图像。它作为一种补充信息能够提高生成图像的准确性。比如:“一支鲜花插在牛粪上”,可以使用“花”这个标签来确保生成图像中包含花的元素。还可以与特定的风格相关联,比如“漫画风格”“赛博朋克”等,或者与其他类别标签结合,比如:“赛博朋克风格的花插在牛粪上”,模型可以学习到每个类标签与特定图像风格的关联性,从而生成符合标签描述的风格图像。

虽然在Stable Diffusion中主要依赖于文本提示(prompt)来指导图像生成,但类标签在某些应用场景中可以进一步加强生成图像的准确性和多样性。

CFG Scale值(Classification Free Guidance Scale)

CFG Scale值是一种调节参数,它可以控制生成图像多大程度上符合我们给的文本描述或其他条件,数值越大与提示词的匹配度越高,反之越小。CFG Scale值的范围一般在5到15之间,较高值通常在7-12可以生成更符合描述的图像,较低在5以下,可以生成更具创意的多样化图像。在WebUI中CFG Scale值过高出现的过拟合现象,就是模型在尽可能的把提示词中的元素全部画出来,呈现的效果细节会非常多效果很差,这种情况是因为采样的迭代步数不够,不能够画出所有的细节,提高迭代步数你会发现画面会比低CFG Scale值更加精细,画面也不会出现崩坏,但出图占用更多的算力,出图时间很长。

图生图(Image-to-Image)

图生图在Stable Diffusion中可以实现图像风格转换、图像修复、图像扩展、图像编辑与变化、草图到完整图像等工作,它是以用户提供初始图像作为生成的基础,模型从初始图像开始,逐步增加或去除噪声,结合文本描述等其它条件逐渐从初始图像变为符合目标条件的最终图像。

图像深度(Depth-to-Image)

利用深度传感器或者深度估计模型来生成图像深度图,把图像的深度信息作为条件引导,可以让模型理解图像中各个物体到摄像机的距离,能够更好地把握整个场景的几何结构,提高图像的准确性。

ControlNet

ControlNet 是一种神经网络,它以Stable Diffusion的U-Net架构作为基础,加入额外的网络分支,用于处理特定的条件输入。可以理解为在Stable Diffusion本身的条件输入外加入额外的限制条件,ControlNet通过额外的控制输入(如深度图、姿态图、草图等),可以实现对图像生成过程的精确控制。

潜在空间(Latent Space)

潜在空间在Stable Diffusion中起着连接高维图像空间与条件信息的桥梁作用。

就像是PS,文本描述、类标签、ControlNet等就像是ps里的各个功能,并且设置好了动作,然后点一下就生成图像

我们可以把它看做是一个巨大的存满各种各样画作的收藏馆,这里的画不是真正的画,而是包含图像主要特征的各种元素,就像一幅没有拼起来的拼图。Stable Diffusion是这个收藏馆的管理员,文本描述、类标签、ControlNet 等就像是寻找指南,告诉管理员(Stable Diffusion)要寻找那一幅画作,最终根据各种要求快速的找到符合描述的画作。

变分自编码器(Variational Autoencoder,简称VAE)

VAE是一种生成模型,用于学习数据的潜在表示并生成类似的样本。我们同样以画作收藏馆做比喻来理解一下它,VAE是收藏馆的理货员,负责藏馆的画作的摆放和目录的整理,它能够帮助管理员(Stable Diffusion)快速找到目标画作,由于画作是一个个拼图块,它还需要将其拼成完整的图像交给管理员。在Stable Diffusion的工作流程中,VAE起着潜在空间和扩散模型之间的桥梁作用。

工作流程

潜在噪声张量生成:基于固定或随机种子生成具有潜在噪声的张量;文物修复师拿到一件被破坏掉的文物,这是他开始工作的基础。

条件嵌入生成:将文本描述、深度图或类标签等条件信息转换为嵌入向量,以多个维度存储特征。文本描述、深度图、类标签等就像修复师的修复指南,帮助他知道文物原来样子。

CLIP Transformer处理:使用交叉注意力技术计算嵌入向量之间的关系,提供图像生成的指导。CLIP Transformer就像修复师的“详情说明书”,将修复指南转化为详细的修复步骤。

U-Net去噪过程:U-Net根据CLIP Transformer的结果引导去噪过程,以逐步生成符合目标描述的潜在向量。U-Net就像修复师,根据转换好的详情说明逐步还原被破坏的文物,让它逐渐显露出文物完好的形象。

采样与噪声调度器:采样算法生成噪声并从初始张量中减去,噪声调度器控制去噪的非线性进度。采样算法和噪声调度器就像修复师的“工作计划”,决定每次修复的细节和顺序。

VAE与潜在空间:

  • 编码器:VAE编码器将原始图像压缩成潜在向量,形成潜在空间中的索引。VAE编码器就像修复师的“修复指南目录”,负责将文物的形象特征记录下来。
  • 潜在空间:存储由编码器生成的潜在向量,是图像的低维特征表示空间。潜在空间就像修复师的“特征库”,存放着所有文物的形象特征。
  • 解码器:VAE解码器将潜在向量解码成完整的高分辨率图像。VAE解码器就像“文物特征组装器”,将文物的特征转换成完整的文物形象。

最终图像生成:去噪过程完成后,张量通过VAE解码器离开潜在空间,文物修复师通过最终的修复步骤,呈现出完整的文物形象。

写在最后

作为一款开源工具,Stable Diffusion为我们提供了强大的可定制和控制能力,它不仅降低了硬件要求,让大部分人都可以使用外,还通过丰富的插件生态系统拓展了模型的应用范围。了解它的工作原理,能帮助我们更好地调整参数,提高图像质量,满足特定的设计需求和偏好。

在当前的环境下,熟悉使用AIGC技术已经成为企业要求的必备能力,它不仅大幅降低了设计内容的制作成本与时间,还拓展提高了设计的能力边界,不再需要设计师为某种风格而去学习一门技法。但也降低了设计师工作的门槛,所以保持终身学习紧跟前沿技术,才能立于不败之地,愿你我共勉!

今天就写到这里,bay~

大模型的“掘金卖铲”生意,AI Infra的最佳机会来了?

aigc阅读(55)

在19世纪的淘金热中,最赚钱的并不是挖金矿的,反而是那些卖铲子、卖牛仔裤的人。正如卖铲人在淘金热中成为最大赢家,在当今AIGC时代,AI Infra也扮演着类似的角色。

如果用云计算三层构架做类比,AI Infra与PaaS层级相似,是链接算力和应用的中间层基础设施,包括硬件、软件、工具链和优化方法等,为大模型应用开发提供一站式模型算力部署和开发工具平台。算力、算法、数据可以看作IaaS层,各种开源和闭源模型则是SaaS在大模型时代的新演变,即MaaS。

随着大模型应用落地的进程不断加速,AI Infra的价值潜力被进一步释放。中金数据预测,目前,AI Infra产业处于高速增长的发展早期,未来3-5年内各细分赛道空间或保持30%的高速增长。

当大模型进入大规模应用落地时期,提供大模型训练、部署和应用时所需的基础设施成为关键一环,AI Infra成为大模型应用爆发背后“掘金卖铲”的最佳生意。

一、中台模式解锁AI生产力

从ICT产业的演进轨迹来看,三层架构似乎是宿命般的终极图景。在传统的本地部署阶段,操作系统、数据库、中间件等基础软件通过控制硬件交互、存储管理数据、网络通信调度等功能,解决底层硬件系统的复杂性难题,让上层应用开发者能专注于业务逻辑进行创新。

在云定义一切的时代,也形成了IaaS、PaaS、SaaS协同进化的经典架构,其中PaaS层提供应用开发环境和数据分析管理等服务,为云计算加速渗透奠定了坚实基础。

经历了漫长的蛰伏期后,AIGC按下了人工智能通用化进程的快进键,整个产业在狂飙突进的氛围中急速重构。算力与应用无疑是最耀眼的主角,但二者之间的鸿沟堪比天堑,大模型面临“悬浮”或“踏空”的风险。

从这个意义上讲,AI Infra犹如一座桥,可以承担类似基础软件或PaaS曾经扮演的角色——通过构建新型的软件栈及综合服务,赋能算力挖潜、模型优化和应用开发,成为连接算力与应用的中坚力量。

AI Infra涵盖一切跟开发部署相关的工具和流程。随着云计算的不断发展,又逐渐衍生出了DataOps、ModelOps、DevOps、MLOps、LLMOps等一些XOps的概念。

从宏观的角度来看,所有XOps本质上是为了开发部署生命周期的提效。比如DataOps是为IaaS层的存储和PaaS层的数据处理提效的,DevOps、MLOps实际上是为PaaS层开发部署提效的,LLMOps是为MaaS层提效的。

事实上,在AIGC风起云涌之前,关于AI中台的理论与实践就已如火如荼地展开。但当时的AI中台更像是“救火队员”,功能比较庞杂,干了不少“脏活”、“累活”,却难以获得上下游的认可。

大模型为AI平台化搭建起更宽广的舞台,也让AI Infra“掘金卖铲”的逻辑更具确定性,进而赢得可观的发展空间。相关机构预测显示,未来3~5年AI Infra产业将保持30%+的高速增长。

就像“三明治”的两片面包间可以有无数种夹层选择,身处算力与应用之间的AI Infra同样不拘一格。从广义上看,AI Infra涵盖人工智能基础框架技术,涉及大模型训练、部署领域的各种底层设施;狭义而言,基础软件栈是AI Infra的核心组成部分,优化算力算法、促进应用落地是其主要目标。

AI Infra定义的相对开放为不同的路径探索提供了更多可能。基于各自的资源禀赋与市场定位,业界的资深厂商与新兴玩家正在积极拓展AI Infra的疆界,不少做法值得借鉴。

  二、 AI Infra将是下一个应用热点?

相比模型价值,卷AI应用成为行业共识。李彦宏坚信,基础模型之上将诞生数以百万计的应用,它们对于现有业态的改造作用,比从0到1的颠覆作用更大。

如今AI应用的供给在不断增加,IDC在年初时预测,2024年全球将涌现出超过5亿个新应用,这相当于过去40年间出现的应用数总和。

最近,视频生成类模型产品扎堆出现,快手的可灵、字节跳动的即梦、商汤的Vimi集体亮相,此外还有AI搜索产品、AI陪伴类产品等层出不穷。

大模型应用爆发趋势已然确定,根据InfoQ研究中心数据,2030年AGI应用市场规模将达4543.6亿元,模型应用层的巨大机会已经吸引了几乎各行各业的参与。

而在大模型应用之下,AI Infra成为其爆发的隐藏推手。

目前,大模型产业链大致可以分为数据准备、模型构建、模型产品三个层次。在国外,AI大模型的产业链比较成熟,形成了数量众多的AI Infra(架构)公司,但这一块市场在国内还相对空白。

在充满不确定性的道路上,率先找到清晰的赛道,快速建立显著的里程碑尤为重要。AI Infra市场尚处于混沌期,每个科技巨头都希望在自己的生态中形成闭环。

在国内,巨头们都有一套自己的训练架构。

比如,华为的模型采用的是三层架构,其底层属于通识性大模型,具备超强的鲁棒性的泛化性,在这之上是行业大模型和针对具体场景和工作流程的部署模型。这种构架的好处是,当训练好的大模型部署到垂类行业时,可以不必再重复训练,成本仅是上一层的5%~7%。

阿里则是为AI打造了一个统一底座,无论是CV、NLP、还是文生图大模型都可以放进去这个统一底座中训练,阿里训练M6大模型需要的能耗仅是GPT-3的1%。

百度和腾讯也有相应的布局,百度拥有覆盖超50亿实体的中文知识图谱,腾讯的热启动课程学习可以将万亿大模型的训练成本降低到冷启动的八分之一。

整体来看,各个大厂之间的侧重点虽然有所不同,但主要特点就是降本增效,而能够实现这一点,很大程度上就是受益于“一手包办”的闭环训练体系。

反观国外,成熟的AI产业链形成了数量众多的AI Infra公司。

如果把开发AI应用看成建房子,那么AI Infra就是提供水泥钢筋的施工队。AI Infra施工队的价值点在于它是一个集成平台,将下层的算力芯片层与上层的AI应用层打通,让开发者实现一键调用,并且实现降低算力成本、提升开发效率并且保持模型优秀性能的效果。

让应用更简单,让AI落地更便捷,是AI Infra的使命。可以说,AI应用的市场有多大,AI Infra的机会就有多大。

AI Infra公司有的专门做数据标注、做数据质量、或者模型架构等。这些企业的专业性,能够让他们在某一个单一环节的效率、成本、质量上都要比大厂亲自下场做得更好。

比如,数据质量公司Anomalo就是Google Cloud和Notion的供应商,它可以通过ML自动评估和通用化数据质量检测能力,来实现数据深度观察和数据质量检测。

这些公司就像汽车行业的Tier 1,通过专业的分工,能够让大模型企业不必重复造轮子,而只需要通过整合供应商资源,就能快速地搭建起自己模型构架,从而降低成本。

但国内在这一方面并不成熟,原因在于:一方面国内大模型的主要玩家都是大厂,他们都有一套自己的训练体系,外部供应商几乎没有机会进入;另一方面,国内也缺乏足够庞大的创业生态和中小企业,AI供应商也很难在大厂之外找到生存的空间。

以谷歌为例,谷歌愿意将自己训练的数据结果分享给它的数据质量供应商,帮助供应商提高数据处理能力,供应商能力提升之后,又会反过来给谷歌提供更多高质量数据,从而形成一种良性循环。

国内AI Infra生态的不足,直接导致的就是大模型创业门槛的拔高。如果将在中国做大模型比喻成吃上一顿热乎饭,那必须从挖地、种菜开始。

目前,在AI 2.0的热潮中,一个重要的特点就是“两极化”:最热门的要么是大模型层、要么就是应用层。而类似AI Infra的中间层,反而是很大的真空地带,也可能是下一个机遇所在。

 三、铲子难卖,金矿难挖

尽管在大模型应用爆发的当下,AI Infra层潜藏着巨大的生意。但是对于这些做AI Infra的公司来说,即使他们在自己的专业领域如此强大,在潮水的变化面前依然脆弱。

英伟达CUDA生态已经发展了20年,在AI领域,最先进的模型和应用都首先在CUDA上跑起来。

每个硬件之间都有不同的接口,CUDA统一了不同接口之间的语言,让使用者能够用一套标准语言去使用不同硬件。在模型开发过程中,开发者势必会趋同于在同一个语言体系中去完成自己的开发。而这实际上就构成了英伟达CUDA生态厚度。

目前,CUDA生态在AI算力市场占据了90%以上的份额。不过随着AI模型的标准化,模型之间结构差异变小,不再需要调度多种大小模型,英伟达CUDA生态厚度在变薄。

即使如此,英伟达在算力市场也是绝对王者。据业内人士预测,英伟达在接下来的3~5年当中,还会是整个AI硬件提供商中绝对的领头羊,市场发展占有率不会低于80%。

对AI Infra层的卖铲厂商来说,外有英伟达守矿人,堵在门口卖门票与铲子,好不容易找到一条进入金矿的小路,却发现,里面的挖矿人已经习惯“徒手”挖矿,不再接受新铲子。

在国内,企业为软件付费意愿低,且大多习惯集成式服务。国内SaaS投资已经降到冰点,如果AI Infra层厂商单靠卖硬件或软件难以实现商业化。

伴随AI应用的快速发展,未来谁能够为多样化的应用场景提供高效便捷的大模型一站式部署方案,谁就有可能在这场竞争中胜出。而这其中,底层技术、中层平台、上层应用缺一不可,只有让各方面能力得到更全面、均衡地发展,才能在AI之路上走得更远、更稳健。

放眼未来,人工智能重塑千行百业的进程刚拉开帷幕,Al Infra铺就的厚雪长坡有助于这个超级赛道行稳致远。今年,数据基础设施已在顶层设计中“独立门户”,人工智能基础设施战略地位的跃迁亦不遥远。

ChatGPT成8岁娃「导师」,外国家长们慌了!

aigc阅读(58)

虽然OpenAI还没靠AI大模型真正实现盈利,GenAI已经迎来了一个坚实的用户群体——各国的中小学。

根据《金融时报》、《华盛顿邮报》、《纽约时报》等多家媒体的报道,已经有不止一个国家和地区计划在中小学课堂上使用AI辅助教学。

一、AI走入中小学课堂

伦敦的一所私立学校David Game College高中正在使用ChatGPT等人工智能工具取代教师,以帮助一些学生准备考试。

在这所学校9月开始的试点计划中,20名15岁左右的学生将在参加GCSE(中等教育通用证书,相当于高中文凭)考试之前使用人工智能工具一年,备考科目包括英语、数学、生物、化学和计算机科学。

除了AI工具,每名学生还将配备三名全职学习教练,以获得个性化的学习路径。

在AI技术氛围更浓厚的加州,甚至有年龄更小的孩子开始在学习过程中使用AI工具。

即使美国各地的学校都禁止使用ChaGPT,防止作弊或模型幻觉对学生造成长期伤害,可汗实验室学校依旧引入了与OpenAI合作开发的模型Khanmigo。

可汗实验室学校依旧是一所私立学校,每年的学费超过3.1万美元。由于地处硅谷,许多学生家长本就身处AI行业,学生们也对各种技术概念十分熟悉。

可汗学院创始人Salman Khan表示,「大多数家长对此都非常兴奋并能看到其中的力量,他们只是想要合理的护栏。」

8岁的Alisha Agrawal在人工智能导师Khanmigo的帮助下,在加州Palo Alto的可汗实验室学校进行课堂练习

以上的教育试验都只停留在个别的私立学校层面,而韩国的行为似乎更加激进,他们已经从教育部开始自上而下地在全国范围内引入由AI驱动的数字教科书。

韩国教育部长表示,有AI功能的平板电脑,是教育系统改革中的「关键」。这项技术由LG、三星等韩国公司开发,他们计划明年引入,面向年仅8岁的学生。

到2028年,除音乐、美术、体育和思想品德外,所有学科都将引入AI相关的app,教师可以通过数字仪表板监控学生的活动。

除了教科书,也将引入其他方面的AI工具,包括课堂对话的自动转录系统和回答学生提问的移动机器人。

与此同时,学生将接受数字素养方面的培训,以学会如何负责任地部署、使用使用AI工具。

对于这项改革计划,官方解释如下:

「我们都同意需要从单向的、以记忆为基础的课堂,转变为学生可以参与并掌控学习的空间。2025年是这一变革的关键节点,我们需要利用AI教科书来帮助教师转变课程模式。」

二、省钱省力,还能因材施教

为什么这么多国家的学校要争先恐后地在课堂中部署AI?仅仅是因为「时髦」吗?

在很多决策者看来,用AI辅助教学有诸多好处。首先是更好地促进「因材施教」,促进学生主动的创造性学习。

根据《金融时报》的分析,虽然韩国在OECD组织的对各国学生的评估测试中一直名列前茅,但首尔政府担心传统的以记忆为基础的学习方法正在扼杀创新,因此AI才成为了这场教育改革的关键。

根据韩国教育部的说法,他们将采用可定制平板电脑,AI软件可以根据每个学生的数据评估其学习水平和进度,分辨出「快速学习者」和「慢速学习者」,从而生成不同复杂程度的任务,为每个人提供量身定制的教育。

大量的韩国学生都会进行课下补习,导致同一课堂往往存在不同的进度——有些人因为学过觉得太简单因而昏昏欲睡,其他人则跟不上课程。

教育部官员表示,AI教科书可以解决这个问题:「因为它能为任何情况提供各种内容,激发学生的学习兴趣并帮助他们进行创造性思考。」

伦敦David Game College的校长John Dalton也表达了类似的看法。

班级的整体进度并不适用于每个人,而AI驱动的自适应学习将让学生受益匪浅。他们可以按照自己的节奏来,不必强求必须与整个班级保持一致。

Dalton表示,这种「因材施教」的方法可以大大提高教授核心科目的效率,学校可以利用剩余时间发展「素质教育」,比如关注学生的自我意识、批判性思维、积极的公民意识、数字素养、艺术表达、公共演讲和企业家精神等等。

参与试点的这20名学生就将在下午参加「多样化的辅助课程」,包括学习如何辩论、培养创业技能、探索AI和金融素养,并参与烹饪和绘画等创意活动。

此外,不同于和人类教师的互动,学生们可以放心大胆地向AI助手提出那些可能让教师感到不适的问题。即使学习速度缓慢或者犯错,也不必担心来自AI教师的评判。

让学生在一个安全的环境中按照自己的节奏学习,可以增强他们的自信心,在促进知识掌握的同时改善心理健康。

此外,Dalton补充说,引入AI教学并不代表完全排除人类教师的参与,「如果学生愿意,他们仍然可以和老师互动」。

除了这些直接优势外,一些教育工作者还看到了其他方面的价值。

他们认为,这可以帮助解决英格兰多年来面临的教师短缺和过度劳累问题。随着班级规模的不断扩大,教师和学生之间缺乏一对一互动的负面影响,或许也能用AI弥补。

三、家长不满,老师针锋相对

韩国教育部引入AI教科书的计划受到许多教师的欢迎。根据教师协会的统计,54%的公立学校教师表示支持。

然而,这个计划引起了许多家长的强烈反对,他们担心这会让孩子过度接触数字设备,以及受到AI给出的潜在错误信息的影响。

已经有超过5万名家长签署请愿书,要求政府更加关注学生的整体福祉,其中写道:「作为家长,因为孩子们接触数字设备,我们已经遇到了许多前所未有的问题。」

41岁的Lee Sun-young是两个学龄儿子的母亲,她表示,与AI教科书相比,她更希望看到更多的课后辅导老师来帮助学生。

「我担心,过多使用数字设备可能会对他们的大脑发育、注意力时长和解决问题的能力产生负面影响——他们已经过度使用智能手机和平板电脑了」。

首尔中央大学社会学教授Shin Kwang-Young也不认同这种改革措施,他表示,「政府过于仓促地推出AI教科书,而没有正确评估其副作用,只是因为人工智能是当今的大趋势」。

在课堂上使用AI技术会引来多方面的风险,考虑到虚假信息、剽窃和泄露学生个人信息的潜在可能性。课堂上的人工智能面临着「失控」的风险。

而在韩国教育部的计划中,并没有说明这类AI教育工具将如何运作,以及如何防止人工智能产生幻觉或错误的倾向。

Shin Kwang-young补充说,想要转变「死记硬背」的学习模式是合理的,但需要「适当地」改革教育系统,包括考试方法,而非一味寄希望于AI。

教育咨询公司Higher Learning Group总监Hadida Grabow的看法相对乐观一些,但她依旧认为AI无法取代高水平的人类教师,只能作为有价值的辅助工具。

虽然我们看到了一些「有前景的案例」,比如谷歌的Socratic和可汗学院的AI教学助手,但Grabow表示:「我们没有看到任何可以替代高质量教育者的东西。」

在可汗学院对Khanmigo的使用中,我们最无法忽视的,是AI可能给出的错误信息和幻觉。

在使用AI的过程中,教师们需要始终提醒学生「Khanmigo可能会犯错」、「需要始终仔细检查从Khanmigo那里获得的任何信息」。

此外,AI系统无法判断学生的语气或面部表情,而这些是「教学时判断学生是否理解的关键指标」。

泰晤士报的意见撰稿人Jessica Grose长期报道教育领域,今年以来她撰写了多篇有关在课堂上使用最新AI技术的报道。

采访了多名中学和大学教师关于AI的使用体验后,她的总体看法是:尽管在学校使用AI有一些实际的好处——比如更快地添加引用以及完成基本编码等机械任务——但缺点是显著的。

Leila Wheless从1991年开始进入教育行业,她尝试对中学的英语和语言艺术课堂使用AI保持「开放的心态」,但学生们使用AI的结果令人沮丧。

她给学生布置了研究「先知」的作业,结合AI进行搜索后,她的学生给出了这样的答案:「基督教先知摩西因去除T恤上的巧克力污渍而闻名。」

令Wheless更惊讶且难以理解的是,这名学生甚至没有想到问一问老师来求证这个荒谬的结果。

虽然AI会产生幻觉和谬误是几乎人尽皆知的事实,但八年级的学生似乎没有相关的背景知识,也缺少智识方面的耐性去质疑AI给出的答案。

这个案例让我们看到,使用AI最大的问题或许不在于作弊——毕竟学生们一直以来都在用各种工具尝试作弊——或者得到荒谬的错误答案。

更棘手的问题是,当学生将头脑风暴和写作外包给ChatGPT这样的GenAI工具时,他们可能正在失去批判性思考的能力,而且难以在完成艰难任务的过程中获得克服挫折感的能力。

在加州教授高中英语的Sarah Martin表示,比猖獗的作弊和学术不端更令她困扰的是,这些学生身上不再有任何「韧性」。

在她教书的七年中,学生们愿意花在挑战性任务上的时间变得越来越短。

以前,很多学生会花几天时间自我斗争尝试掌握一个概念。但现在,如果学生们无法在几分钟内理解,就可能直接放弃脑力方面的努力,寻找替代方案,无论是聊天机器人还是向朋友求助。

今年4月,Jessica Grose撰写了一篇文章,名为《课堂上的每一个技术工具都应该被无情地评估》。

AI让很多人获取知识变得更加方便容易,包括学生,但这并不是没有代价的。更加「因材施教」、「量身定制」的另一面,是让青少年失去学习的耐心和韧性的风险。

密歇根大学教育技术教授、《学习的技术:美国教育系统的研究、趋势和问题》一书的作者Mesut Duran表示,课堂上使用的许多技术并不是为学生而开发的。

「大多数技术最初都是为了商业目的而创建的,然后我们才决定如何在学校使用它们。」

有趣的是,这种描述非常符合GenAI的现状。谁能说OpenAI推出ChatGPT时有多少是考虑到在教育场景下的应用?

经过几周的对谈,文章作者Grose表达了这样的观点:

「我们需要彻底重新思考在课堂上评估和使用技术的方式;我希望看到的总体变化是,学校中的技术使用(设备和应用程序)应该由教育工作者驱动,而不是科技公司。」

参考资料:

https://www.ft.com/content/1f5c5377-5e85-4174-a54f-adc8f19fa5cb

https://www.washingtonpost.com/technology/2023/04/03/chatgpt-khanmigo-tutor-silicon-valley/

https://www.nytimes.com/2024/08/14/opinion/ai-schools-teachers-students.html

https://www.businessinsider.com/chatgpt-ai-tools-replace-teachers-high-school-students-learning-education-2024-8

世界模型又近了?MIT惊人研究:LLM已模拟现实世界,绝非随机鹦鹉!

aigc阅读(82)

LLM离世界模型,究竟有多远?

去年,MIT的一篇文章发现了惊人的结论:在LLM内部,存在一个世界模型。

LLM不仅学习了表面的统计数据,还学习了包括空间和时间等基本纬度的世界模型。

Llama-2-70B竟然能够描绘出研究人员真实世界的文字地图

不仅如此,MIT最近又发现:在LLM的深处,发展出了一种对现实的模拟,它们对语言的理解,已经远远超出了简单的模仿!

论文地址:https://arxiv.org/abs/2305.11169

具体来说,MIT计算机科学和人工智能实验室 (CSAIL)的两名学者发现——

尽管只用「预测下一个token」这种看似只包含纯粹统计概率的目标,来训练LLM学习编程语言,模型依旧可以学习到程序中的形式化语义。

这表明,语言模型可能会发展自己对现实的理解,以此作为提高其生成能力的一种方式。

因此,LLM在未来的某一天,可能会比今天更深层次地理解语言。

目前这篇文章已被ICML 2024接收,实验所用代码也已经公布在GitHub上。

仓库地址:https://github.com/charlesjin/emergent-semantics

01 没有眼睛,LLM就「看」不到吗?

如果让GPT-4去闻一下被雨水浸湿的露营地的味道,它会礼貌地拒绝你。

不过,它仍然会给你一个诗意的描述:有新鲜的泥土香气,和清爽的雨味,还有松树或湿树叶的痕迹。

GPT-4没见过下雨,也没有鼻子,但它能模仿大量训练数据中存在的文本。

缺少一双眼睛,是不是就意味着语言模型永远无法理解「狮子比家猫更大」?

LLM能理解现实世界和各种抽象概念吗?还是仅仅在「鹦鹉学舌」,纯粹依靠统计概率预测下一个token?

LLM的工作原理,依旧是未解之谜。AI圈的大佬们,时不时就要因为这个问题展开一场论战。

LeCun坚定认为,LLM的智能绝对被高估了!他最著名的论断,就是那句「大语言模型不如家里养的猫」。

「猫可以记忆,可以理解物理世界,可以计划复杂的行动,可以进行一定程度的推理,这实际上已经比最大的模型要好了,意味着我们在概念层面有重要的缺失,无法让机器像动物和人类一样聪明。」

没有感官,不耽误ChatGPT为你描述各种气味和图片;没有生活经验,很多用户依旧「遇事不决,ChatGPT解决」;看起来完全没有共情能力,Character.ai上的「心理学家」还是能俘获美国一千万青少年的心。

很多人将此解释为纯粹的统计现象,LLM只是在「鹦鹉学舌」,对大量训练语料中存在的文本进行模仿,并不是像人类一样拥有同等水平的智能或感知。

但现在,MIT的研究证明,并非如此!

LLM内部,绝对存在着对现实世界的理解。

02 LLM破解卡雷尔谜题,意味着什么

为了探究这个谜团,MIT CSAIL的研究者们,开发了一套小型卡雷尔谜题(Karel Puzzle)。

简单介绍下,什么是卡雷尔谜题

其中包括让模型用指令在模拟环境中控制机器人的行动。

卡雷尔语法规范

然后他们在训练LLM学习一种特定的解决方案,但没有演示其中的工作原理。

最后,作者提出了一种名为「探针」(probing)的机器学习技术,用于在模型生成新解决方案时,深入了解其中的「思维过程」。

研究者通过对随机参考程序进行采样来构建训练示例,然后对5个随机输入进行采样并执行程序,以获得相应的5个输出。LM由交错输入和输出组成的示例语料库上进行下一个token预测训练,然后是参考程序。在测试时,研究者向LM提供看不见的输入输出规范,并使用贪婪解码来预测程序

在超过100万个随机谜题上进行训练后,研究人员发现,模型自发地形成了对底层模拟环境的概念!尽管训练期间,它们并没有接触过这方面的信息。

这个结果,不仅挑战了我们对LLM的固有印象,也质疑了我们对思维过程本质的认知——

在学习语义的过程中,究竟哪些类型的信息才是必需的?

实验刚开始时,模型生成的随机指令几乎无法运行;但完成训练时,指令的正确率达到了92.4%。

论文一作Jin表示,「这是一个非常激动人心的时刻,因为我们认为,如果语言模型能以这种准确度完成任务,我们也会期望,它能理解语言的含义。」

「这给了我们一个起点,来探索LLM是否确实能理解文本,现在我们看到,模型的能力,远不止于盲目地将单词拼接在一起。」

03 打开LLM的大脑

在这项实验中,Jin亲眼目睹了这一进展。

LLM为什么会认为,这些指令指的是这个意思?

他发现,LLM已经开发了自己的内部模拟,来模拟机器人如何响应每条指令而移动。

而随着模型解决难题的能力越来越高,这些概念也就变得越来越准确,这就表明:LM开始理解指令了。

不久之后,LLM就能始终如一地将各部分正确地拼接在一起,形成工作指令。

通过不同的探针分类器测量的语义内容(绿色)

1. 思维探针

而为上述发现做出主要贡献的,就是一种「思维探针」。

这是一种介入LLM思维过程的有效工具,论文将它称为「probing」。

具体而言,LM的状态中包含输入和生成程序的纯语法层面的记录,但probe似乎可以学习理解其中的抽象解释。

实际的实验中,作者首先构建LLM的状态跟踪数据集,再用标准的监督学习方法训练一个小型模型作为探针,比如线性分类器或2层MLP。

训练后半段当前和接下来两个抽象状态的语义内容(1层MLP)

然而,其中一个重要的问题在于,必须将probe和模型实际的思考过程或生成的指令进行分离。

虽然探针的唯一目的,只是「进入LLM的大脑」,但如果它也为模型做了一些思考,该怎么办呢?

研究者需要确保的是,LLM能够独立于探针理解指令,而不是由探针根据LLM对语法的掌握来推断机器人的动作。

想象一下,有一堆编码LLM思维过程的数据,其中probe的角色就像一名取证分析师。

我们把这堆数据交给了分析师,告诉ta:「这是机器人的动作,试着在这堆数据中,找出机器人是怎么动的。」分析师表示,自己知道这堆数据中的机器人是怎么回事。

但是,假如这堆数据只是对原始指令进行了编码,而分析人员已经想出了一些巧妙的方法来提取指令,并按照指令进行相应的操作呢?

在这种情况下,LLM就根本没有真正了解到这些指令的含义。

为此,研究者特意做了一个巧妙的设计:它们为模型打造了一个「奇异世界」。

在这个世界中,probe的指令含义被反转了,比如「向上」其实意味着「向下」。

例如,原始语义中的exec(turnRight,·)是将使机器人顺时针旋转90度,而exec adversarial(turnRight,·)是将机器人推进一个空间

这就保证了,probe并不是在「投机取巧」,直接学习理解LLM对指令的编码方式。

一作Jin这样介绍道——

如果探针是将指令翻译成机器人的位置,那么它应该同样能够根据离奇的含义翻译指令。

但如果探头实际上是在语言模型的思维过程中,寻找原始机器人动作的编码,那么它应该很难从原始思维过程中提取出怪诞的机器人动作。

结果发现,探针出现了翻译错误,无法解释具有不同指令含义的语言模型。

这就意味着,原始语义被嵌入了语言模型中,表明LLM能够独立于原始探测分类器,理解所需的指令。

上半部分描述了在干预前,两种情况如何导致测量的高语义内容。下半部分显示了为什么将两个假设分开: 如果LM表示仅包含语法(左下),那么应该可以训练探针alt来学习根据替代状态prog(粗体红色结果)解释记录;然而,如果LM表示编码原始抽象状态(右下),则探测alt需要从原始状态prog中提取替代状态’prog,从而产生较低的语义内容(粗体灰色结果)

2. LLM理解语言,就像孩童一样

有趣的是,Jin发现,LLM对语言的理解是分阶段发展的,就像孩子学习语言时分多个步骤一样。

开始,它会像婴儿一样牙牙学语,说出的话是重复的,而且大多数都难以理解。

然后,LLM会开始获取语法或语言规则,这样,它就能够生成看起来像是真正解决方案的指令了,但此时它们仍然不起作用。

不过,LLM的指令会逐渐进步。

一旦模型获得了意义,它就会像孩子造句一样,开始产生正确执行所要求规范的指令。

结果如图2所示,可以看出LLM对语言的理解大致分为3个阶段,就如同孩童学习语言一样。

  1. 牙牙学语(babbling,灰色部分):占据整个训练过程约50%,生成高度重复的程序,准确率稳定在10%左右
  2. 语法习得(syntax acquisition,橙色部分):训练过程的50%~75%,生成结果的多样性急剧增加,句法属性发生显著变化,模型开始对程序的token进行建模,但生成的准确率的提升并不明显
  3. 语义习得(semantics acquisition,黄色部分):训练过程的75%到结束,多样性几乎不变,但生成准确率大幅增长,表明出现了语义理解

实验使用了三种不同的probe架构作为对比,分别是线性分类器、单层MLP和2层MLP。

提前2步预测时,2层MLP预测准确率的绝对值高于用当前状态预测的基线模型。或许可以得出这样一种推测:LLM在生成指令前,其思维过程,以及生成指令的「意图」已经存储在模型内部了。

04 LLM = 世界模型?

这项研究解释了LLM如何思考训练数据中每条指令的含义,如何在内部状态中模拟机器人对指令的响应。

这些都直指当前AI研究的一个核心问题——LLM令人惊讶的能力,仅仅是由于大规模的统计相关性,还是对它们现实产生了有意义的理解?

研究表明,LLM开发了一个模拟现实的内部模型,尽管它从未接受过开发该模型的训练。

而且,语言模型还可以进一步加深对语言的理解。

然而,仅靠一篇论文显然不能完全回答这个问题。

作者Jin也承认,这项研究存在一些局限性:他们仅使用了非常简单的编程语言Karel,以及非常简单的probe模型架构。

未来的工作将关注更通用的实验设置,也会充分利用对于LLM「思维过程」的见解来改进训练方式。

本文另一位作者Rinard表示,「一个有趣的悬而未决的问题是,在解决机器人导航问题时,LLM是在用内部现实模型来推理现实吗?」

虽然论文展现的结果可以支持这一结论,但实验并不是为回答这个问题而设计的。

布朗大学计算机科学和语言学系助理教授Ellie Pavlick高度赞扬了这项研究。

她表示,对LLM工作原理的理解,可以让我们对这项技术的内在可能性和局限性有更合理的期望。这项研究正是在受控环境中探索这个问题。

计算机代码像自然语言一样,既有语法又有语义;但与自然语言不同的是,代码的语义更直观,并可以根据实验需要直接控制。

「实验设计很优雅,他们的发现也很乐观,这表明也许LLM可以更深入地了解语言的『含义』。」

05 作者介绍

本文一作Charles Jin是MIT EECS系和CSAIL实验室的在读博士,导师Martin Rinard是本文的另一位作者,他的研究主要关注稳健的机器学习和程序合成。

Jin本科和硕士毕业于耶鲁大学,获得了计算机科学和数学双学位,曾经在Weiss资产管理公司担任分析师,博士期间曾在Google Brain担任研究实习生。

参考资料:

https://the-decoder.com/training-language-models-on-synthetic-programs-hints-at-emergent-world-understanding/

https://news.mit.edu/2024/llms-develop-own-understanding-of-reality-as-language-abilities-improve-0814