博客

  • 当AI遇上长子序列:一场改变游戏规则的智能突破

    🌟 序曲:当数学邂逅人工智能

    在人工智能的浩瀚星海中,总有那么几颗璀璨的星辰,以其独特的光芒照亮整个领域。今天,我们要探讨的就是这样一颗新星——长子序列算法(Longest Common Subsequence,简称LCS)在深度学习领域的惊艳亮相。这个看似普通的算法,竟在神经网络的世界里掀起了一场不小的革命,为我们展示了人工智能与传统算法结合的无限可能。

    想象一下,如果你是一位侦探,正在比对两份神秘的古籍。你的任务是找出这两份文献中最长的共同片段,这片段可能是零散分布的,但顺序必须保持一致。这就是LCS问题的本质。现在,让我们看看AI世界的”侦探们”是如何运用这个古老而智慧的工具,来解开深度学习中的重重谜题的。

    🔍 揭秘LCS:算法中的”福尔摩斯”

    长子序列问题,听起来像是一个贵族家庭的继承纠纷,实际上是计算机科学中一个经典的难题。简单来说,它就是要在两个序列中找出最长的共同子序列。这个子序列不必是连续的,但必须保持原有的相对顺序。

    举个生动的例子,假设我们有两个单词:”ABCDGH”和”AEDFHR”。它们的最长公共子序列是”ADH”。看,虽然这些字母在原单词中并不相邻,但它们的出现顺序是一致的。这就是LCS的魅力所在——它能在看似杂乱无章的数据中发现隐藏的模式。

    传统的LCS算法使用动态规划的方法来解决这个问题。想象一下,你正在织一张巨大的网,每一个网格都代表两个序列中字符的比较结果。你从左上角开始,一步步向右下角推进,每一步都基于之前的结果做出决策。这个过程就像是在迷宫中找路,每一个选择都可能影响最终的结果。

    🚀 LCS遇上深度学习:一场意想不到的化学反应

    现在,让我们把目光转向深度学习的世界。在这个由神经元构成的浩瀚宇宙中,LCS算法找到了它的新舞台。研究人员发现,将LCS算法融入神经网络架构中,可以大大提升模型在某些任务上的性能。

    想象一下,如果神经网络是一位年轻有为的侦探,那么LCS算法就是一位经验丰富的老警长。这两位的合作,会擦出怎样的火花呢?

    研究者们巧妙地将LCS算法”嵌入”到了神经网络中。这就像是给神经网络安装了一个特殊的模块,这个模块能够自动寻找输入序列中的共同模式。这种结合不仅保留了神经网络强大的学习能力,还赋予了它识别序列模式的独特技能。

    💡 LCS神经网络:智能与经典的完美融合

    让我们深入了解一下这个创新的网络架构。研究者们提出了一种名为”LCS层”的新型网络层。这个层的核心思想是将LCS算法的计算过程转化为一系列可微分的操作,使其能够无缝集成到神经网络的反向传播过程中。

    想象一下,这个LCS层就像是神经网络中的一个特殊过滤器。当数据流经这个过滤器时,它会自动识别并提取出序列中的共同模式。这个过程不仅高效,而且还能适应不同长度的输入序列。

    研究者们还巧妙地设计了一种称为”软LCS”的变体。这个变体不再局限于寻找完全匹配的子序列,而是允许一定程度的”模糊匹配”。这就像是在比对指纹时,允许一些细微的差异,从而提高了算法的灵活性和适用范围。

    🎭 LCS神经网络的多面性:从文本到生物信息

    这种创新的网络架构展现出了惊人的多面性。在自然语言处理领域,它能够更好地捕捉句子结构和语义关系。想象一下,当你在翻译一篇文章时,这个网络能够自动识别出原文和译文中的对应片段,大大提高了翻译的准确性。

    在生物信息学领域,LCS神经网络的应用前景更是令人兴奋。DNA序列比对是这个领域的一个重要任务,传统方法往往耗时又复杂。而LCS神经网络可以快速高效地完成这项工作,就像是一位tireless的基因侦探,不知疲倦地在海量数据中寻找基因的蛛丝马迹。

    更令人惊叹的是,这个网络还能应用于时间序列分析。无论是在金融数据分析还是在气象预报中,它都展现出了超凡的能力。想象一下,它能够在股票价格的起起落落中,发现隐藏的模式;又或者在复杂的气象数据中,预测出天气变化的趋势。

    🔬 深入LCS神经网络的内部机制

    让我们再深入一步,看看这个网络是如何工作的。LCS层的核心是一个动态规划矩阵,这个矩阵记录了两个输入序列的所有可能匹配。但与传统的LCS算法不同,这里的每个匹配都是一个概率值,而不是简单的0或1。

    这个过程可以用下面的数学公式来描述:

    C[i,j] = \sigma(w_m \cdot f(x_i, y_j) + w_c \cdot C[i-1,j-1] + w_u \cdot C[i-1,j] + w_l \cdot C[i,j-1])

    其中,C[i,j]表示矩阵中的每个元素,f(x_i, y_j)是输入序列元素的相似度函数,w_mw_cw_uw_l是可学习的权重,\sigma是激活函数。

    这个公式看起来可能有点复杂,但其实它描述的是一个简单而优雅的过程:网络在比较两个序列时,不仅考虑当前元素的匹配度,还会参考之前的匹配结果。这就像是在玩一个高级版的连连看游戏,每一步都建立在前面所有步骤的基础之上。

    🎨 LCS神经网络的创新之处

    这个网络的创新之处还不止于此。研究者们引入了一个叫做”注意力机制”的概念。这个机制就像是网络的一双智能眼睛,能够自动聚焦于输入序列中最重要的部分。

    想象一下,当你在阅读一篇长文时,你的眼睛会自动跳过不重要的部分,聚焦在关键信息上。LCS神经网络的注意力机制就是在模仿这种人类的阅读行为。这大大提高了网络处理长序列数据的能力,使其在处理长文本或者复杂的时间序列数据时表现出色。

    另一个亮点是网络的端到端训练能力。这意味着整个网络,包括LCS层,都可以通过反向传播算法进行优化。这就像是一个不断进化的有机体,每次处理数据后都能变得更加智能。

    🌈 LCS神经网络的未来:挑战与机遇并存

    尽管LCS神经网络展现出了令人兴奋的前景,但它仍然面临着一些挑战。首先是计算复杂度的问题。虽然研究者们通过各种优化手段大大提高了网络的效率,但在处理超长序列时,计算开销仍然是一个不小的挑战。

    其次是如何在保持模型简洁性的同时进一步提高其表现力。就像一位优秀的作家需要在细节描述和故事主线之间找到平衡一样,研究者们也在努力寻找LCS神经网络的最佳配置。

    但这些挑战同时也意味着机遇。随着量子计算等新技术的发展,我们有理由相信,LCS神经网络的性能还有很大的提升空间。而且,随着更多领域的研究者加入这个领域,我们可能会看到LCS神经网络在更多意想不到的地方大放异彩。

    🌟 结语:智能的无限可能

    从古老的动态规划算法到现代的深度学习网络,LCS的故事让我们看到了计算机科学领域的无限可能。它告诉我们,创新往往来自于对经典理论的重新思考和创造性应用。

    就像是一位老练的侦探和一位富有想象力的年轻助手的完美搭档,LCS算法和深度学习的结合开启了一个充满可能性的新世界。在这个世界里,机器不仅能学习,还能像人类一样识别序列中的模式和关系。

    这个故事远未结束。随着研究的深入,我们期待看到更多令人惊叹的应用和突破。也许有一天,基于LCS的AI系统会帮助我们破解生命的密码,预测复杂系统的行为,甚至在浩瀚的宇宙数据中发现新的规律。

    在AI的世界里,唯一的限制就是我们的想象力。而LCS神经网络的出现,无疑为这个世界增添了一抹绚丽的色彩。让我们一起期待,在这场人工智能的伟大探险中,还会有什么样的惊喜等待着我们。

    参考文献

    1. Ziemann, M., Johnston, J., & Zou, J. Y. (2024). Longest Common Subsequence Networks. In Proceedings of The 27th International Conference on Artificial Intelligence and Statistics.
    2. Apostolico, A., & Guerra, C. (1987). The longest common subsequence problem revisited. Algorithmica, 2(1-4), 315-336.
    3. Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
    4. Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., … & Polosukhin, I. (2017). Attention is all you need. In Advances in neural information processing systems (pp. 5998-6008).
    5. Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural computation, 9(8), 1735-1780.

  • 超级计算机的”神经网络”:解密GPU间通信的秘密

    🌟 引言:计算力的巅峰之作

    在人工智能和大数据时代,超级计算机就像是科技世界的”巨人”,为各行各业提供着强大的计算支持。而这些”巨人”的”大脑”中,藏着一个鲜为人知的秘密 – GPU之间的通信网络。就像人体的神经系统一样,这些通信网络决定了超级计算机的反应速度和处理能力。今天,让我们一起揭开三台顶级超级计算机Alps、Leonardo和LUMI的”神经系统”面纱,探索它们的通信秘密。

    🔍 超级计算机的”神经元”:GPU节点架构

    想象一下,如果超级计算机是一个巨大的大脑,那么每个GPU节点就像是其中的一个”神经元”。这些”神经元”越强大,整个”大脑”的处理能力就越惊人。

    🏔️ Alps:山峰般高耸的计算力

    Alps就像其名字一样,代表了计算能力的巅峰。每个节点配备了4个NVIDIA GH200 Grace Hopper超级芯片,它们通过NVLink 4.0相连,形成了一个全连接的网络。这就好比四个超级大脑紧密协作,每两个大脑之间都有6条高速公路相连,每条公路的带宽高达200Gb/s。这样的设计使得Alps的每个节点内部通信速度达到了惊人的1.2Tb/s。

    🎨 Leonardo:文艺复兴时期的通信艺术

    Leonardo的节点设计则像极了文艺复兴时期的精巧艺术品。每个节点装备了4个NVIDIA A100 GPU,通过NVLink 3.0相连。虽然连接方式与Alps类似,但每两个GPU之间”只有”4条高速公路,每条带宽为200Gb/s。这使得Leonardo的节点内部通信速度达到了800Gb/s,虽然不及Alps,但已经是令人叹为观止的速度了。

    🌈 LUMI:北欧极光般绚丽的网络

    LUMI的设计则更像是绚丽的北欧极光。每个节点配备了4个AMD MI250X GPU,但每个GPU又分为两个GCD(Graphics Compute Die)。这8个GCD之间的连接就像是复杂的极光图案,有的GCD之间有1条400Gb/s的光速公路,有的则有多达4条。这种不对称的设计虽然看起来复杂,但却能在不同场景下发挥出色的性能。

    🚀 超级计算机的”神经网络”:节点间通信

    如果说GPU节点是超级计算机的”神经元”,那么节点之间的通信网络就是连接这些”神经元”的”神经纤维”。这些”神经纤维”的质量直接决定了整个超级计算机的反应速度和协同能力。

    🕸️ Alps和LUMI:蜻蜓织就的网络

    Alps和LUMI采用了名为”Dragonfly”(蜻蜓)的网络拓扑结构。想象一下,如果每个节点是一只蜻蜓,那么这些蜻蜓们会组成小群体,群体之间再相互连接,最终形成一个庞大的网络。这种设计的优势在于,任意两个节点之间最多只需要跳跃三次就能完成通信,大大减少了数据传输的延迟。

    🦋 Leonardo:蝴蝶翩翩起舞的网络

    Leonardo则采用了一种叫做”Dragonfly+”的拓扑结构。如果说Dragonfly像是蜻蜓群,那Dragonfly+就更像是蝴蝶群。它在Dragonfly的基础上增加了更多的连接,使得网络更加灵活。Leonardo的网络被分为23个群组,每个群组内部又是一个两层的胖树结构。这种设计让数据在网络中传输时,就像蝴蝶在花丛中翩翩起舞一般灵活自如。

    💡 通信的艺术:软件层面的优化

    硬件搭建好了超级计算机的”神经系统”,但要让这个系统高效运转,还需要优秀的”大脑控制中枢” – 也就是软件层面的优化。研究人员在这方面也做了大量工作。

    🔧 调教的艺术

    就像调教一匹烈马需要技巧一样,让超级计算机发挥最佳性能也需要精细的调教。研究人员发现,通过调整一些关键参数,可以显著提升通信性能。例如,在Alps和LUMI上,通过设置NCCL_IGNORE_CPU_AFFINITY=1,可以使alltoall操作的性能提升1.6倍,allreduce操作甚至能提升6倍!这就好比找到了马匹的”兴奋点”,让它们跑得更快更好。

    🏎️ 通信库的较量

    在软件层面,研究人员比较了不同通信库的性能。结果发现,对于集体通信操作(如alltoall和allreduce),专门为GPU优化的NCCL/RCCL库通常表现更好。这就像是为赛车专门设计的高级燃料,能让赛车跑得更快。但有趣的是,对于点对点通信,传统的MPI库反而更胜一筹。这告诉我们,没有一种通信方式是万能的,需要根据具体场景选择最合适的”燃料”。

    🌪️ 网络噪音:超级计算机的”头痛”问题

    在理想世界里,数据在超级计算机的”神经网络”中畅通无阻。但现实世界中,网络噪音就像是行驶在高速公路上遇到的交通堵塞,会严重影响通信效率。

    研究人员发现,在Leonardo系统上,网络噪音的影响特别明显。当两个GPU不在同一个网络交换机下时,通信延迟可能增加2倍,带宽可能下降17%。这就像原本畅通的高速公路突然变成了拥挤的城市道路。更糟糕的是,在极端情况下,延迟可能暴增到正常值的22倍!

    为了缓解这个问题,研究人员尝试了使用不同的服务级别(Service Level)。这有点像是给重要车辆开辟专用车道。结果表明,这种方法确实能显著减少网络噪音的影响。但是,这种方法并不是长久之计,因为如果所有人都使用专用车道,那么拥堵问题又会重新出现。

    🎭 结语:超级计算机的未来

    通过这次深入探索,我们揭示了超级计算机内部通信的复杂性和重要性。就像人类社会需要高效的交通和通信系统一样,超级计算机也需要精心设计和优化的内部通信网络。未来,随着AI和大数据应用的不断发展,对超级计算机通信能力的要求只会越来越高。

    我们期待看到更多创新的网络架构设计,更高效的通信算法,以及更智能的资源调度策略。也许在不久的将来,我们会看到能自动适应不同工作负载、自我调优的”智能”超级计算机网络。无论如何,超级计算机的”神经网络”优化之路仍在继续,而这条路的尽头,是人类计算能力的新巅峰。

    参考文献

    1. De Sensi, D., et al. (2024). Exploring GPU-to-GPU Communication: Insights into Supercomputer Interconnects. arXiv:2408.14090v1.
    2. Atchley, S., et al. (2023). Frontier: Exploring exascale. SC ’23.
    3. Chunduri, S., et al. (2019). GPCNet: Designing a benchmark suite for inducing and measuring contention in HPC networks. SC ’19.
    4. Hoefler, T., et al. (2023). Data center ethernet and remote direct memory access: Issues at hyperscale. Computer, 56(7), 67-77.
    5. De Sensi, D., et al. (2020). An in-depth analysis of the slingshot interconnect. SC20.
  • 🧠 DSPy:开启人工智能编程新纪元

    🌟 引言:从提示工程到语言模型程序

    在人工智能快速发展的今天,大语言模型(LLM)已成为许多智能应用的核心。然而,如何高效地利用这些模型仍是一个挑战。传统的提示工程(Prompt Engineering)方法往往需要手动调试大量文本提示,不仅耗时耗力,还难以适应不同模型和任务的需求。

    斯坦福大学最新推出的DSPy框架为此提供了一个革命性的解决方案。DSPy不再局限于静态的文本提示,而是将与语言模型的交互提升到了程序的层面。正如论文作者Omar Khattab所言:”DSPy让我们能够以编程的方式来使用语言模型,而不仅仅是提示它们。”

    🔍 DSPy的核心理念:声明式语言模型程序

    DSPy的核心理念是将与语言模型的交互抽象为”声明式语言模型程序”。在这个框架下,开发者可以用Python代码来描述他们希望语言模型完成的任务流程,而不需要关心具体的提示词设计。

    例如,一个简单的问答系统可以用以下代码表示:

    class RAG(dspy.Module):
        def __init__(self, num_passages=3):
            super().__init__()
            self.retrieve = dspy.Retrieve(k=num_passages)
            self.generate_answer = dspy.ChainOfThought("context, question -> answer")
    
        def forward(self, question):
            context = self.retrieve(question).passages
            answer = self.generate_answer(context=context, question=question)
            return answer

    这段代码定义了一个基于检索增强生成(RAG)的问答系统。它首先检索相关文档,然后使用链式思考(Chain of Thought)方法生成答案。注意,我们并没有编写具体的提示词,而是使用dspy.ChainOfThought模块来声明我们需要一个能接受上下文和问题并生成答案的组件。

    🛠 DSPy的关键组件:签名与编译器

    为了实现从声明式程序到实际执行的转换,DSPy引入了两个关键概念:签名(Signature)和编译器(Compiler)。

    签名:定义输入输出行为

    签名用于描述语言模型在特定任务中的输入输出行为。例如:

    class GenerateSearchQuery(dspy.Signature):
        """Write a simple search query that will help answer a complex question."""
    
        context = dspy.InputField(desc="may contain relevant facts")
        question = dspy.InputField()
        query = dspy.OutputField()

    这个签名定义了一个生成搜索查询的任务,它接受上下文和问题作为输入,输出一个查询。通过使用签名,我们可以清晰地表达每个模块的功能,而无需关心具体实现细节。

    编译器:自动优化程序

    DSPy的编译器(也称为Teleprompter)是其最强大的特性之一。编译器可以自动优化你的程序,为不同的语言模型生成最适合的提示或微调策略。

    使用编译器非常简单:

    teleprompter = BootstrapFewShot(metric=my_rag_validation_logic)
    compiled_rag = teleprompter.compile(RAG(), trainset=my_rag_trainset)

    这段代码使用BootstrapFewShot编译器来优化我们的RAG程序。编译器会根据提供的训练集和验证逻辑,自动生成有效的少量样本提示或进行模型微调。

    💡 DSPy的优势:灵活性与可扩展性

    与传统的提示工程方法相比,DSPy提供了更高的灵活性和可扩展性:

    1. 模型无关性: 同一个DSPy程序可以被编译用于不同的语言模型,从GPT-3.5到本地部署的Llama2,无需手动调整。
    2. 易于迭代: 当你修改程序逻辑、更换数据集或添加新的约束条件时,只需重新编译即可,无需手动调整每个提示。
    3. 可组合性: DSPy提供了多种可组合的模块,如ChainOfThoughtReAct等,可以轻松构建复杂的AI系统。
    4. 类型安全: DSPy支持使用Pydantic进行类型注解,提供了更强的类型安全性和更好的开发体验。

    🚀 DSPy的应用:从研究到生产

    DSPy不仅适用于AI研究,也可以在生产环境中发挥重要作用。它已经被用于多个领域,包括:

    • 复杂问答系统
    • 信息抽取
    • 多语言自然语言推理
    • 极端多标签分类
    • 长文本生成与引用

    例如,在HotPotQA数据集上,使用DSPy可以让一个仅有770M参数的T5模型达到接近GPT-3.5的性能,而只需使用200个标注样本。

    🔮 未来展望:AI编程的新范式

    DSPy的出现标志着我们正在进入AI编程的新时代。正如深度学习框架(如PyTorch)彻底改变了神经网络的开发方式,DSPy有望为基于大语言模型的AI系统开发带来类似的革命。

    随着DSPy的不断发展,我们可以期待:

    1. 更多领域特定的高级抽象,使得构建复杂AI系统变得更加简单。
    2. 更强大的编译器,能够自动发现和优化程序中的瓶颈。
    3. 与其他AI技术(如强化学习、神经符号推理等)的深度集成。

    📚 结语:拥抱AI编程的未来

    DSPy为我们提供了一个全新的视角来思考和构建AI系统。它不仅简化了开发过程,还为AI系统的可解释性、可维护性和可扩展性提供了新的可能。

    无论你是AI研究者、工程师还是企业决策者,DSPy都值得你深入了解和尝试。它可能成为推动下一代AI应用发展的关键工具。

    让我们共同期待DSPy带来的AI编程革命!

    参考文献:

    1. Khattab, O., et al. (2023). DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines. arXiv preprint arXiv:2310.03714.
    2. Khattab, O., et al. (2022). Demonstrate-Search-Predict: Composing Retrieval and Language Models for Knowledge-Intensive NLP. arXiv preprint arXiv:2212.14024.
    3. Khattab, O., et al. (2023). DSPy Assertions: Computational Constraints for Self-Refining Language Model Pipelines. arXiv preprint arXiv:2312.13382.
    4. Battle, R., & Gollapudi, T. (2024). The Unreasonable Effectiveness of Eccentric Automatic Prompts. arXiv preprint arXiv:2402.10949.
    5. D’Oosterlinck, K. (2023). Sophisticated Extreme Multi-Class Classification with DSPy. GitHub Repository: https://github.com/KarelDO/xmc.dspy.
  • 🚀 DSPy: 自我增强的模型调用与编译声明性语言

    在近年来,语言模型(LMs)在自然语言处理(NLP)领域的应用越来越广泛,推动了研究人员在更高的抽象层次上构建NLP系统,同时降低了对数据的需求。然而,现有的LM管道通常依赖于手工编写的“提示模板”,这些模板往往需要反复试验才能找到最佳的表现方法。为了解决这一问题,Omar Khattab等学者提出了DSPy——一种将LM管道抽象为文本转换图的编程模型。这一模型使得开发和优化LM管道变得更加系统化。

    🎯 DSPy的核心理念

    DSPy的核心在于其将LM调用与声明性模块结合的编程模型。传统的手工提示字符串往往不具备通用性,且在不同数据域、输入或LM之间无法有效迁移。而DSPy通过将提示技术转化为声明性模块,使得用户能够定义模块的输入输出行为,而不是具体的提示内容。这种方法不仅提高了可重用性,还减少了对手动提示的依赖。

    DSPy模块是参数化的,可以通过反复自我增强来学习如何应用提示、微调、增强和推理技术。通过DSPy编译器,用户可以优化任何DSPy管道,以最大化给定的评估指标。这一创新极大地简化了LM管道的构建过程,使得即使是较小的LM如Llama2-13b-chat,也能够实现与大规模LM相当的性能。

    🛠️ DSPy的结构与功能

    DSPy的编程模型主要包括以下几个方面:

    1. 自然语言签名:通过定义输入输出的字段,用户可以轻松地为LM指定任务。例如,用户只需通过简单的声明question -> answer来定义一个问题回答模块,而无需关心具体的提示内容。
    2. 模块化设计:DSPy允许用户通过参数化模块将提示技术抽象化。用户可以根据需要组合不同的模块,例如ChainOfThought模块和Predict模块,从而构建复杂的任务管道。
    3. 自动化优化:DSPy中的“teleprompters”负责自动优化模块的提示和微调策略。用户只需提供少量的训练示例,DSPy便可以通过自我增强机制生成有效的提示和微调策略,从而提高系统的性能。

    🧩 案例研究:数学问题与复杂问答

    在文章中,作者通过两个案例研究展示了DSPy的强大能力:数学问题(GSM8K数据集)和多跳问答(HotPotQA数据集)。

    数学问题的挑战

    在GSM8K数据集中,研究者们对200个问题-答案对进行了训练,最终评估使用了1300个官方测试集样本。DSPy的不同模块表现出显著的性能差异。例如,使用ChainOfThought模块的系统在开发集上的准确率达到了44.0%,而经过优化的reflection模块的准确率高达78.6%。这些结果表明,DSPy能够有效地将简单模块组合成复杂的、高效的问答系统。

    多跳问答的复杂性

    在HotPotQA数据集的案例研究中,DSPy同样展现了其强大的能力。研究者们利用ColBERTv2检索器对维基百科进行了搜索,并评估了多跳问答系统的性能。在这一任务中,DSPy的多跳模块通过多次迭代检索和生成查询,成功实现了较高的答案准确率。

    模块GPT-3.5 答案准确率Llama2-13b-chat 答案准确率
    vanilla34.3%31.5%
    fewshot36.4%29.8%
    CoT RAG42.3%
    react39.0%
    multihop54.7%45.6%

    从表格中可以看出,使用DSPy的多跳模块不仅提升了答案的准确率,还显著提高了检索精度,展示了DSPy在复杂问答任务中的有效性。

    🎉 结论与展望

    DSPy的引入为构建和优化基于LM的NLP系统提供了一种新颖的方法。通过模块化设计和自动化优化,DSPy使得开发者能够快速创建高效的LM管道,而无需依赖繁琐的手工提示。这一模型不仅降低了开发门槛,也为未来的AI系统设计提供了新的方向。

    参考文献

    1. Khattab, O., Singhvi, A., Maheshwari, P., et al. (2024). DSPy: Model Calls into Self-Improvements.
    2. Bommasani, R., et al. (2021). On the Opportunities and Risks of Foundation Models.
    3. Wei, J., et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models.
    4. Yang, Z., et al. (2018). HotPotQA: A Dataset for Diverse, Explainable Multi-Hop Question Answering.
    5. Guu, K., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.

    🚀 DSPy:编程而非提示的基础模型

    DSPy是一个用于算法优化语言模型(LM)提示和权重的框架,尤其当LM在管道中被多次使用时。通过使用DSPy,用户可以更加系统化地构建复杂的AI系统,而不再依赖繁琐的提示工程。

    🎯 DSPy的核心功能

    DSPy的设计理念是将程序的执行流程与每一步的参数(LM的提示和权重)分离开来。它引入了新的优化器,这些优化器是基于LM的算法,能够在给定的评估指标上优化提示和/或LM调用的权重。通过这种方式,DSPy能够为GPT-3.5、GPT-4等强大的模型,以及像T5-base和Llama2-13b这样的本地模型,提供更高的任务可靠性和更好的质量。

    🛠️ DSPy的工作原理

    使用DSPy的基本步骤包括:

    1. 定义任务和指标:明确要解决的任务及其评估标准。
    2. 构建管道:选择内置模块,并为每个模块指定输入输出的签名。
    3. 编译程序:调用DSPy优化器,将代码编译为高质量的指令、自动的少量示例,或更新LM的权重。

    📊 模块和优化器的概念

    DSPy的两个核心概念是签名优化器(原称为teleprompters)。

    • 签名:用于声明LM的输入输出行为。用户在定义模块时,可以指定任务的描述、输入字段和输出字段。这样,DSPy编译器能够为特定的任务构建有效的提示。
    • 优化器:自动优化程序的参数,可以生成有效的提示和示例,或对LM进行微调以提升质量。用户只需提供少量的训练示例,DSPy将自动生成所需的中间标签。

    📦 安装与使用

    要安装DSPy,只需运行以下命令:

    pip install dspy-ai

    对于最新版本,可以使用以下命令:

    pip install git+https://github.com/stanfordnlp/dspy.git

    此外,DSPy提供了丰富的文档和教程,帮助用户快速上手和深入学习。

    📚 教程与示例

    DSPy的文档包含了多个层次的教程,从初学者到高级用户都有覆盖。以下是一些推荐的学习资源:

    🎉 结论

    DSPy提供了一个强大而灵活的框架,能够帮助研究人员和开发者更高效地构建和优化基于LM的系统。通过实现模块化设计和自动优化,DSPy使得在复杂任务中使用语言模型变得更加简单和高效。

    📜 引用与更多阅读

    如果您在研究论文中使用DSPy,请引用以下内容:

    @article{khattab2023dspy,
      title={DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines},
      author={Khattab, Omar and Singhvi, Arnav and Maheshwari, Paridhi and Zhang, Zhiyuan and Santhanam, Keshav and Vardhamanan, Sri and Haq, Saiful and Sharma, Ashutosh and Joshi, Thomas T. and Moazam, Hanna and Miller, Heather and Zaharia, Matei and Potts, Christopher},
      journal={arXiv preprint arXiv:2310.03714},
      year={2023}
    }

    通过DSPy,研究人员可以更好地掌控语言模型的使用方式,从而在各种自然语言处理任务中实现更高的效率和准确性。

  • 🧠 MuSR:探索大语言模型推理的极限

    在自然语言处理(NLP)的领域,尤其是大语言模型(LLMs)如GPT-4的崛起,使得我们对机器推理的能力产生了新的期待。然而,尽管这些模型在某些常见任务中表现突出,但它们在复杂推理任务上的表现仍然令人担忧。为了解决这一问题,Sprague等人提出了MuSR(Multistep Soft Reasoning),一个旨在测试LLMs在多步骤软推理任务中的表现的数据集。

    📚 引言:推理的挑战

    在过去的几年中,大语言模型已经在多种任务上取得了显著进展,但它们的推理能力依然面临诸多挑战。现有的评估方法往往依赖于静态的基准数据集,这些数据集没有随着模型能力的提升而更新。MuSR数据集的出现,正是为了填补这一空白。该数据集通过一种新颖的神经符号生成算法,构建了复杂的推理实例,如谋杀悬疑故事,这些故事不仅要求模型理解文本,还需进行深度推理。

    🧩 MuSR的构建与特点

    MuSR数据集有两个核心特点。首先,它通过神经符号合成到自然生成的算法,创建了复杂的推理实例。这些实例与真实世界的推理领域相对应,如谋杀悬疑、物体放置和团队分配等。这使得MuSR在复杂性和现实性上都超过了以往的基准数据集。其次,MuSR的实例是自由文本叙述,要求模型不仅要提取信息,还需结合常识知识进行推理。这样的设计确保了数据集的挑战性和合理性,便于人类注释者以高准确率解决。

    🔍 生成过程:从事实到叙述

    MuSR的生成过程可以分为三个主要阶段:

    1. 树模板构建:在这一阶段,首先生成一组黄金事实,这些事实用于推出正确答案。以谋杀悬疑为例,事实可能包括“约翰是凶手”和“约翰有动机”。
    2. 推理树完成:推理树是一个递归数据结构,表示一个陈述基于其他陈述的支持关系。通过对黄金事实进行递归采样,生成一系列中间推理步骤,这些步骤需要多步骤推理才能得出最终答案。
    3. 叙述生成:最后,将推理树中的事实嵌入自然叙述中。为了确保叙述的流畅性和完整性,生成过程采用了分章节的方法,将每个章节与特定的答案选择相对应。这种方法不仅提高了叙述的长度和复杂性,还确保了信息的准确传递。
    | 领域          | 实例数量 | 推理步骤数 | 常识事实数量 |
    | -------------- | -------- | ----------- | ------------ |
    | 谋杀悬疑      | 250      | 9           | 10           |
    | 物体放置      | 256      | 6           | 11           |
    | 团队分配      | 250      | 9           | 10           |

    🕵️‍♂️ 领域分析:谋杀悬疑与推理

    在MuSR中,谋杀悬疑是一个经典的推理领域。这一领域要求模型具备多种推理能力,包括物理推理和社会推理。在构建事实集时,模型需理解社会关系和动机,这在解决谋杀案件时至关重要。例如,判断谁是凶手需要考虑“有手段”、“有动机”和“有机会”这三个要素。

    通过MuSR,研究者发现即便是最先进的模型,如GPT-4,在推理复杂的谋杀案件时,仍然无法完全胜任。这一结果暗示了当前LLMs在多步骤和常识推理方面的局限性。

    🧑‍🤝‍🧑 团队分配与社交推理

    团队分配领域则更侧重于社交推理和约束推理。该领域要求模型在分配任务时考虑个人的技能和团队合作能力。例如,模型需要根据每个人的能力和相互关系来最大化团队的工作效率。这一过程不仅涉及对技能的评估,也需要理解人与人之间的社交动态。

    在这个领域,MuSR展示了LLMs在处理复杂社交情境中的不足。尽管一些模型在简单的任务中表现良好,但在需要深度推理的情况下,它们依然无法达到人类的推理水平。

    🧠 评估与发现

    为验证MuSR的有效性,研究者们对多个大型语言模型进行了测试,包括GPT-4和Llama系列。结果表明,虽然这些模型在某些领域中表现出色,但它们在处理需要复杂推理的任务时,仍然无法超越人类的表现。

    例如,在谋杀悬疑领域,GPT-4的表现尽管优于随机猜测,但仍未能达到人类的平均水平。这一发现强调了在未来研究中,需要进一步探索提高LLMs推理能力的方法。

    🔮 未来的展望

    MuSR不仅是一个数据集,更是推动语言模型推理能力研究的重要工具。随着模型能力的不断提升,MuSR可以被不断更新,以适应新的推理挑战。未来的研究可以集中在如何结合神经符号推理和深度学习技术,以提升LLMs的推理能力。

    📜 参考文献

    1. Sprague, Z., Ye, X., Bostrom, K., Chaudhuri, S., & Durrett, G. (2024). MuSR: Testing the Limits of Chain-of-Thought with Multistep Soft Reasoning.
    2. Wei, J., et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models.
    3. Bisk, Y., et al. (2020). Experience and Reasoning: The Role of Commonsense Knowledge in Reasoning.
    4. Khot, T., et al. (2023). Decomposed Prompting for Multi-step Reasoning.
    5. Sap, M., et al. (2019). SocialIQA: A Dataset for Social Reasoning.

  • 🛠️ ToolLLM:助力大语言模型掌握16000+实际API

    引言

    在当今人工智能的迅猛发展中,大型语言模型(LLMs)如LLaMA正逐渐成为自然语言处理领域的中坚力量。然而,尽管这些模型在语言理解和生成上展现了令人瞩目的能力,它们在工具使用能力上却显得相对不足。尤其是在使用外部工具,比如API(应用程序编程接口)来完成复杂任务时,开源LLM的表现远不及闭源模型,如ChatGPT。这一现象引发了研究者们的关注,尤其是在如何提升开源LLM的工具使用能力方面。

    为了弥补这一差距,我们提出了ToolLLM,一个通用的工具使用框架,包含数据构建、模型训练和评估等多个环节。ToolLLM的核心在于ToolBench,这是一个专门为工具使用而设计的指令调优数据集,它由ChatGPT自动构建而成。我们在ToolBench中收集了超过16,000个来自RapidAPI Hub的真实RESTful API,覆盖49个类别,形成了一个丰富的工具使用数据集。

    📊 ToolBench的构建

    API收集

    ToolBench的构建分为三个阶段,其中第一阶段是API的收集。我们从RapidAPI平台收集了16,464个API,这些API涵盖了社交媒体、电子商务、天气等多个领域。通过对API文档的深入理解,LLMs能够学习如何有效地调用这些API,甚至能够在未见过的API上进行迁移学习。

    指令生成

    在指令生成阶段,我们通过采样API并利用ChatGPT生成多样化的指令。这些指令不仅涵盖单工具场景,还包括多工具场景,以确保我们的模型能够学习如何有效地组合多个API来完成复杂任务。例如,用户可能希望在一个指令中调用多个API,以获取关于电影、天气和餐厅的信息。

    解决路径注释

    为了增强LLMs的推理能力,我们开发了一种基于深度优先搜索的决策树算法(DFSDT)。该算法能够让模型评估多条推理路径,进而选择最优的解决方案。这一过程显著提高了注释效率,成功完成了那些传统方法难以处理的复杂指令。

    🧠 ToolEval:工具使用能力的评估

    为了评估LLMs的工具使用能力,我们开发了自动评估器ToolEval。ToolEval通过两个关键指标来衡量模型的表现:通过率(pass rate)和胜率(win rate)。通过率衡量模型在有限预算内成功执行指令的能力,而胜率则比较了两条解决路径的质量和实用性。我们的实验表明,ToolEval与人工评估的结果高度一致,证明了其在机器工具使用评估中的有效性。

    🔍 ToolLLaMA:训练和评估

    通过在ToolBench上对LLaMA模型进行微调,我们得到了ToolLLaMA。实验结果显示,ToolLLaMA在处理单工具和复杂多工具指令方面表现优异。与ChatGPT相比,ToolLLaMA在解决复杂指令时的表现几乎不相上下,尤其是在面对未见过的API时,ToolLLaMA展现出了强大的迁移学习能力。

    📈 实验结果与分析

    在我们的实验中,ToolLLaMA的表现超越了多个基线模型,包括Text-Davinci-003和Claude-2,展现出与ChatGPT相当的能力。此外,ToolLLaMA在APIBench等未分布数据集上的表现也表明了其强大的泛化能力。这一系列实验结果不仅验证了ToolLLM的有效性,也为未来的研究指明了方向。

    🤖 结论

    ToolLLM通过构建一个覆盖16000多个真实API的ToolBench,极大地提升了开源LLM在工具使用上的能力。DFSDT算法使得LLMs能够在推理过程中进行更加灵活的决策,而ToolEval则提供了一种高效、可靠的评估机制。未来,随着API的不断扩展和技术的不断进步,我们有望看到开源LLM在实际应用中的更广泛应用。

    参考文献

    1. Yujia Qin et al. “TOOLLLM: FACILITATING LARGE LANGUAGE MODELS TO MASTER 16000+ REAL-WORLD APIS.” ICLR 2024.
    2. Touvron et al. “LLaMA: Open and Efficient Foundation Language Models.” 2023.
    3. Wei et al. “Chain of Thought Prompting Elicits Reasoning in Large Language Models.” 2023.
    4. Yao et al. “ReAct: Synergizing Reasoning and Acting in Language Models.” 2022.
    5. Patil et al. “API-Bench: A Benchmark for Evaluating API Understanding in Language Models.” 2023.
  • 🧠 自然语言与强化学习的融合:TEXT2REWARD的革命性探索

    在强化学习(RL)的世界中,设计奖励函数一直是一项艰巨的挑战。传统的奖励设计往往依赖于专家的直觉和丰富的领域知识,既耗时又昂贵。为了解决这个问题,Tianbao Xie等人提出了一个名为TEXT2REWARD的创新框架,该框架利用大型语言模型(LLMs)自动生成和塑造密集奖励函数。本文将深入探讨这一新兴技术的原理、应用和实验结果,展现其在机器人操作和运动任务中的优越表现。

    💡 奖励塑造的背景

    在强化学习中,奖励塑造(Reward Shaping)旨在设计奖励函数,以更高效地引导智能体朝着期望的行为前进。传统方法通常依赖于手动设计的奖励,过程繁琐,且结果可能次优。逆强化学习(IRL)和偏好学习(Preference Learning)作为潜在解决方案,虽然能从人类示范或偏好反馈中学习奖励模型,但仍需大量的人力和数据,且这些基于神经网络的模型往往缺乏可解释性。

    TEXT2REWARD的提出,正是为了填补这一空白。该框架能够根据自然语言描述的目标,生成可执行的、具有高度可解释性的奖励代码,避免了传统方法的种种弊端。具体来说,用户只需输入任务目标,例如“将椅子推到标记位置”,系统便能生成相应的奖励代码。

    🧪 设计机制

    TEXT2REWARD采用了一个三阶段的生成过程:

    1. 专家抽象(Expert Abstraction):将环境表示为一组Python类,便于理解和操作。
    2. 用户指令(User Instruction):用户通过自然语言描述所需达成的目标。
    3. 用户反馈(User Feedback):在任务执行后,用户可对智能体的表现提供反馈,这些反馈将用于优化奖励代码。

    这一过程不仅提高了奖励生成的效率,也使得非专家用户能够参与到系统的优化中来,真正实现了人机协作。

    class BaseEnv:
        self.chair: ArticulateObject
        self.robot: DualArmPanda
    
    class ArticulateObject:
        self.pose: ObjectPose
        def get_pcd(self) -> np.ndarray[(N,3)]:
            # 获取对象的点云数据
            ...

    🤖 实验与结果分析

    文本生成的奖励代码在多个机器人操作基准(如MANISKILL2和METAWORLD)以及运动环境(MUJOCO)中经过严格测试。实验结果表明,使用TEXT2REWARD生成的奖励代码在13个任务中,与专家设计的奖励代码相比,成功率和收敛速度相当,甚至在部分任务上表现优于人工设计的奖励。

    例如,在“打开柜门”任务中,TEXT2REWARD生成的代码能够快速适应复杂的环境变化,成功率达到94%。在运动任务中,Hopper和Ant这两种机器人在六个新任务中均表现出色,成功率超过了94%。

    📹 真实机器人操作的成功

    TEXT2REWARD的另一个亮点在于其在真实机器人上的应用。通过在模拟器中训练的策略,仅需进行少量的校准,便能在实际环境中顺利应用。我们选用了Franka Panda机器人,并在“拾取立方体”和“堆叠立方体”两个任务中进行了验证。实验结果表明,智能体在真实环境中同样能够顺利完成任务,展示了其良好的泛化能力和实用性。

    🔄 从人类反馈中学习

    TEXT2REWARD通过人类反馈不断优化奖励代码,克服了自然语言指令中的模糊性。例如,当用户指令“将Ant放倒”时,系统可能无法准确理解Ant的朝向。通过用户的反馈,TEXT2REWARD能够重新生成奖励代码,使得任务执行更加符合用户的期望。这一过程展示了人机协作在智能体训练中的潜力,用户无需具备编程或强化学习的专业知识,便能有效参与到系统的优化中。

    📈 迭代改进的潜力

    在多轮反馈中,TEXT2REWARD展现出了极强的适应能力。通过观察任务执行视频,用户能够识别出当前策略中的不足之处,进而提供针对性的反馈。例如,在“堆叠立方体”任务中,经过两轮反馈,成功率从0提升至接近100%。这种迭代式的学习过程不仅提高了训练效率,也显著增强了模型对复杂任务的处理能力。

    🌍 结论与展望

    TEXT2REWARD的出现为强化学习领域带来了新的思路和方法。通过将自然语言与大型语言模型结合,该框架能够高效、自动地生成可解释的奖励函数,从而简化了奖励塑造的过程。实验结果表明,TEXT2REWARD不仅在模拟环境中表现优异,更能成功迁移到真实机器人操作中。

    未来,我们希望这一研究能够激励更多的探索,推动强化学习与代码生成的交叉应用。TEXT2REWARD展示了自然语言处理技术在智能体训练中的潜力,预示着人机协作的新时代即将到来。

    📚 参考文献

    1. Xie, T., Zhao, S., Wu, C. H., Liu, Y., Luo, Q., Zhong, V., Yang, Y. (2024). TEXT2REWARD: Reward Shaping with Language Models for Reinforcement Learning. ICLR 2024.
    2. Ng, A. Y., Harada, D., & Russell, S. (1999). Policy Invariance Under Reward Transformations: Theory and Application to Reward Shaping.
    3. Ziebart, B. D., Maas, A. L., Bhat, A., & Dey, A. K. (2008). Maximum entropy inverse reinforcement learning.
    4. Christiano, P. F., Leike, J., Brown, T., & Martic, M. (2017). Deep reinforcement learning from human preferences.
    5. Yu, T., & others. (2023). L2R: Learning to Reward with Language Models.
  • 学会无动作地行动:LAPO方法的探索之旅 🚀

    在深度学习的世界中,预训练大模型已经成为一种获取强大通用模型的有效途径,尤其是在语言和视觉领域。然而,在强化学习(RL)中,这种方法的应用却鲜有建树,原因在于大多数现有方法需要具体的动作标签,而视频这种最丰富的具身行为数据却常常缺乏这些标签。为了解决这一难题,Dominik Schmidt和Minqi Jiang在他们的论文《Learning to Act Without Actions》中提出了一种全新的方法——潜在动作策略(Latent Action Policies, LAPO)。本文将深入探讨该方法的核心思想及其在无标签视频数据中的应用潜力。

    1. 现状与挑战 ⚔️

    在传统的强化学习中,模型通常需要依赖于标记好的数据进行训练,以学习有效的策略。然而,当我们面对海量的无标签视频数据时,如何从中提取有效的动作信息就成了一大挑战。现有的模仿学习和离线强化学习方法,如模仿学习(Imitation Learning)和离线RL,通常依赖于动作或奖励标签,这使得从仅有观察数据(如视频)中学习变得困难重重。

    LAPO的出现正是为了填补这一空白。LAPO的核心在于从视频中恢复潜在的动作信息,从而生成可以快速微调的策略。具体来说,LAPO通过一个逆动态模型(Inverse Dynamics Model, IDM)来预测在两个连续观察之间采取的潜在动作,而不需要任何形式的标签。

    2. LAPO的原理 🔍

    LAPO的设计基于两个关键洞察:首先,通过观察环境的动态变化,可以推断出某种潜在动作;其次,在获得这些潜在动作之后,可以利用标准的模仿学习方法来训练潜在动作策略。在LAPO中,IDM不仅学习如何预测潜在动作,还通过与正向动态模型(Forward Dynamics Model, FDM)的预测一致性来优化其参数。

    2.1 潜在动作的学习

    在LAPO中,IDM的目标是通过压缩信息瓶颈来学习潜在动作。这种方法促使IDM不仅仅是传递未来观察结果,而是提取出对未来状态变化有重要影响的潜在动作。这意味着即使在没有任何真实动作标签的情况下,LAPO也能从观察到的动态中恢复出有效的动作信息。

    2.2 行为克隆与策略获取

    一旦IDM训练完成,接下来就是使用其预测的潜在动作来进行行为克隆(Behavior Cloning),从而得到潜在动作策略。这一过程通过最小化潜在动作与观察数据之间的差异来实现。通过这种方式,LAPO能够快速生成能够适应真实动作空间的策略。

    3. 实验与结果 📊

    在对Procgen基准测试的实验中,LAPO展示了其优越的性能。在多个环境中,LAPO能够在仅仅使用4M帧的情况下,恢复专家级别的表现,且在多个任务上超越了原专家的表现。这一结果表明,LAPO在无标签数据的情况下,依然能够学习到有价值的策略。

    3.1 潜在动作空间的可解释性

    通过对学习到的潜在动作空间进行UMAP降维可视化,研究人员发现潜在动作的结构与真实动作空间密切相关。这种可解释性不仅为LAPO的有效性提供了证据,也为未来的研究指明了方向。

    | 环境       | 恢复表现 | 超越表现 |
    |------------|----------|----------|
    | 环境A     | 是       | 否       |
    | 环境B     | 否       | 是       |
    | 环境C     | 是       | 是       |

    4. LAPO的潜在应用 🌐

    LAPO不仅在学术界具有重要意义,其潜在应用也十分广泛。随着网络上无标签视频数据的激增,LAPO为利用这些数据提供了新的思路。通过LAPO,我们可以在不依赖于昂贵标注的情况下,从大量视频中学习到有效的策略,为诸如自动驾驶、游戏AI、机器人等领域的研究提供了新的可能性。

    5. 结论与未来展望 🔮

    LAPO的提出标志着无标签学习领域的一次重要突破,其通过从纯观察数据中恢复全面的动作信息,为未来大规模无监督预训练的研究奠定了基础。随着计算能力的提升和数据集规模的扩大,我们有理由相信,LAPO及其衍生方法将在更多复杂的任务中展现出更强的适应性和鲁棒性。

    参考文献

    1. Radford et al. (2019). Language Models are Unsupervised Multitask Learners.
    2. Cobbe et al. (2019). Procgen Benchmark: A study of generalization in reinforcement learning.
    3. Baker et al. (2022). VPT: Video Pre-Training for Reinforcement Learning.
    4. Tishby et al. (2000). Information Bottleneck Method.
    5. Zheng et al. (2023). SS-ORL: Semi-Supervised Offline Reinforcement Learning.

  • 在无动作中学习行动:LAPO方法的探索与实践

    引言

    在深度学习的浪潮中,预训练大型模型已成为获取强大通用模型的重要策略。这种方法在语言和视觉等领域取得了显著成功。然而,在强化学习(Reinforcement Learning, RL)领域,这种策略尚未得到广泛应用。主要原因在于当前的主流方法通常依赖于行动标签,而这些标签在网络视频等纯观察数据中往往是缺失的。因此,如何从这些海量的、无标签的数据中提取有效的行动信息,成为了一个亟待解决的难题。

    为此,Dominik Schmidt和Minqi Jiang提出了一种创新的方法——潜在行动策略(Latent Action Policies, LAPO)。LAPO的核心在于从视频中恢复潜在的行动信息,进而获得潜在的行动策略、世界模型和逆动态模型。这一方法不仅能够在没有任何真实行动标签的情况下,推断出潜在的行动空间结构,还能在复杂的程序生成环境中表现出色。

    LAPO的基本原理

    LAPO的核心思想是通过观察环境的动态变化,推断出潜在的行动信息。这一过程可以分为以下几个主要步骤:

    1. 逆动态模型(IDM)和前向动态模型(FDM):LAPO首先训练一个逆动态模型,用于预测在两个连续观察之间采取的行动。然后,使用前向动态模型来预测给定过去观察和潜在行动的下一个观察。这两个模型通过最小化预测的下一个观察与实际观察之间的误差来联合训练。

          \[z_t \sim p_{IDM}(\cdot | o_{t-k}, \ldots, o_t, o_{t+1})\]

          \[\hat{o}<em>{t+1} \sim p</em>{FDM}(\cdot | o_{t-k}, \ldots, o_t, z_t)\]

      通过这种方式,IDM不仅能够捕捉到环境的动态变化,还能提取出有助于预测未来状态的潜在信息。
    2. 信息瓶颈:为了防止IDM仅仅将下一个观察直接传递给FDM,LAPO采用了信息瓶颈的策略。这一策略迫使IDM压缩传递给FDM的所有信息,从而学习到仅反映状态变化的潜在行动。这种潜在行动的结构与实际的行动空间密切相关。
    3. 行为克隆:在获得潜在行动后,LAPO使用行为克隆(Behavior Cloning)的方法来学习潜在行动策略。这一阶段主要基于生成的潜在行动标签,优化策略参数,使其在观察空间中能够生成相应的潜在行动。

          \[L_{BC} = ||\pi(o_t) - z_t||^2\]

    4. 解码潜在行动:最后,LAPO根据是否有小规模的真实标签数据,选择不同的解码方式。如果有少量的真实行动标签数据,可以训练一个解码器,将潜在行动映射到真实行动;如果没有,则通过在线环境交互,利用强化学习进一步优化策略。

    实验结果

    LAPO方法在Procgen基准测试中进行了验证。Procgen是一个具有16种不同任务的基准,具备复杂的动态和部分可观测性特征。研究发现,使用LAPO的潜在策略可以在仅4万帧的训练数据中恢复专家的表现,而从零开始的强化学习方法在相同条件下只能达到44%的专家表现。

    结果分析

    通过UMAP投影,LAPO在每个环境中学习到的潜在行动空间的结构高度可解释。许多环境中的潜在行动形成了明确的聚类,这些聚类与真实的离散行动紧密对应。这表明,尽管没有访问真实行动空间,LAPO依然能够有效地捕捉到潜在行动的信息。

    未来的研究方向

    虽然LAPO已展示出从无标签视频中学习有效行动策略的潜力,但仍有许多挑战待克服。首先,如何处理延迟效应的动作识别,以及如何在高噪声环境中提取有用信息,依然是研究的重要方向。此外,LAPO在复杂领域的应用,如网页视频的大规模建模,也需要进一步的探索。

    结论

    LAPO方法为无标签视频数据中的潜在行动学习提供了一个新的视角,通过逆动态模型和前向动态模型的结合,成功从环境动态中提取出潜在行动信息。该方法不仅为快速适应的预训练策略提供了可能,也为未来的多任务学习和复杂环境中的强化学习开辟了新的研究路径。

    参考文献

    1. Schmidt, D., & Jiang, M. (2024). Learning to Act without Actions. ICLR.
    2. Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction. MIT Press.
    3. Cobbe, A., et al. (2019). Procgen Benchmark: A Reproducible Platform for Reinforcement Learning. arXiv.
    4. Tishby, N., & Zaslavsky, N. (2000). Information Bottleneck Method. arXiv.
    5. Radford, A., et al. (2021). Learning Transferable Visual Models From Natural Language Supervision. In ICML.

  • 无监督预训练的可证明优势:理论框架的探索

    在现代机器学习系统中,无监督预训练(Unsupervised Pretraining)已成为一种重要的策略,通过利用大量未标记数据学习有用的表示,从而促进下游任务的学习。这一方法在计算机视觉、自然语言处理和语音处理等领域取得了显著的成功。然而,尽管在实证上取得了巨大成就,关于无监督预训练为何能普遍助力下游任务的理论理解仍然相对有限。本文旨在通过一种通用框架,探索无监督预训练的可证明优势。

    理论框架的建立

    无监督预训练的核心在于从未标记数据中学习出能够有效支持下游任务的表示。我们假设数据 x 和标签 y 通过一个未观察到的表示 z 连接。具体而言,我们假设 (x, z) 来自一个潜变量模型 \mathcal{P}^<em>,而标签 y 的分布则在给定 z 的情况下来自某个分布类 \mathcal{Q}^</em>。在这种设定下,我们使用最大似然估计(MLE)进行无监督预训练,而在下游任务学习中使用经验风险最小化(ERM)。

    根据我们的研究,当算法满足某些条件(即“信息丰富”条件)时,我们证明了无监督预训练可以显著降低下游任务的风险。具体来说,算法的超额风险为:

        \[\text{Risk} = O \left( \sqrt{\frac{C_z}{m}} + \sqrt{\frac{C_y}{n}} \right)\]

    其中 C_zC_y 分别是潜在变量模型和下游任务的复杂性度量,mn 分别是未标记和标记数据的样本数。与仅使用标记数据的基线结果 O \left( \sqrt{\frac{C_{y}' }{n}} \right) 相比,我们的结果表明,当未标记数据远多于标记数据且潜在模型的复杂性高于下游任务时,无监督预训练的优势是显而易见的。

    相关工作与理论背景

    无监督预训练的应用和方法已经得到了广泛的关注,尤其在半监督学习的背景下,利用大量未标记数据和少量标记数据进行训练。然而,虽然许多研究提出了新的方法并展示了良好的实证性能,但对无监督预训练优势的严格理论理解仍显不足。近年来,涌现出一些理论结果,试图解释不同无监督预训练方法的有效性,但这些结果往往仅适用于特定的设置或方法。

    我们提出的通用框架则提供了一种新的视角,允许我们比较不同的无监督预训练方法,而不需要依赖于特定的假设。这种框架不仅适用于因子模型、GMMs(高斯混合模型)和对比学习等多种方法,还能帮助我们评估新提出的无监督预训练模型的有效性。

    信息丰富条件的引入

    为了确保无监督预训练能够真正带来优势,我们引入了“信息丰富”条件的概念。这一条件确保无监督预训练的过程能够有效地捕捉到数据中的结构信息,进而提高下游任务的学习效率。我们证明,在满足该条件的情况下,无监督预训练能够显著降低下游任务的风险,并且在许多实际情况下,这一条件是能够被满足的。

    例如,当我们考虑因子模型与线性回归作为下游任务时,我们可以证明该模型是信息丰富的。这意味着,虽然潜在变量 z 可能并不可直接观察,但通过学习,我们能够获得足够的表示能力,以支持后续的任务。

    不同模型的实例

    1. 因子模型与线性回归

    在因子模型中,我们将数据 x 表示为潜在因子 z 的线性组合。通过无监督预训练,我们能够有效地学习到因子之间的关系,从而在后续的线性回归任务中显著减少所需的标记数据量。在这种情况下,超额风险的界限为:

        \[\text{Risk} \approx O \left( \frac{C_{\text{factor}}}{m} + \frac{C_{\text{reg}}}{n} \right)\]

    2. 高斯混合模型与分类任务

    在高斯混合模型中,我们假设数据来自于不同的高斯分布。当我们将无监督预训练应用于此类模型时,我们能够利用混合模型中的聚类信息来提高后续分类任务的性能。通过分析,我们证明了在满足一定分离条件的情况下,模型的超额风险界限为:

        \[\text{Risk} \approx O \left( \frac{dK}{m} + \frac{K}{n} \right)\]

    3. 对比学习与线性回归

    在对比学习的情境下,我们通过学习数据对之间的相似性来构建表示。研究表明,当使用对比学习进行无监督预训练时,我们能够在下游线性回归任务中获得同样的超额风险界限。这一结果进一步表明,无监督预训练可以适应多种模型和任务,展现出其通用性。

    结论

    本文通过建立一个通用的理论框架,深入探讨了无监督预训练在下游任务中的可证明优势。我们的研究不仅为理解无监督预训练的有效性提供了理论支持,还为未来的研究提供了基础。在丰富的未标记数据和复杂的任务设置下,无监督预训练显示出其不可替代的价值。我们期待这一框架能够激发更多关于无监督学习的研究与应用。

    参考文献

    1. Ge, J., Tang, S., Fan, J., & Jin, C. (2024). On the Provable Advantage of Unsupervised Pretraining. ICLR 2024.
    2. Zhou, Z. H. (2012). Ensemble Methods: Foundations and Algorithms.
    3. Kingma, D. P., & Welling, M. (2013). Auto-Encoding Variational Bayes.
    4. Arora, S., et al. (2019). A Simple Framework for Contrastive Learning of Visual Representations.
    5. Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.

  • 🔬 解锁无监督预训练的秘密:从理论到实践的突破性进展

    在机器学习的宏大舞台上,无监督预训练犹如一位神秘的魔术师,用海量未标注数据编织出强大的表征,为下游任务的学习铺平道路。然而,这位魔术师的技艺究竟蕴含着怎样的奥秘?为何它能在实践中屡创奇迹,却又难以用理论完美解释?普林斯顿大学的研究团队近日在这一谜题上取得了突破性进展,他们提出了一个通用的理论框架,首次从根本上阐明了无监督预训练的优势所在。

    🧩 拼图游戏:无监督预训练的困局

    无监督预训练就像是在玩一场没有图纸的拼图游戏。我们拥有海量的拼图碎片(未标注数据),却不知道最终要拼出什么样的图案(下游任务)。直觉告诉我们,通过仔细观察和排列这些碎片,我们应该能获得一些有用的信息,比如颜色分布、边缘特征等。但是,当我们真正开始拼图时,却很难说清楚这些前期的观察究竟能带来多大帮助。

    这正是无监督预训练面临的理论困境。尽管它在计算机视觉、自然语言处理等领域取得了巨大成功,但现有的理论分析往往局限于特定方法或特殊假设,难以解释其普遍有效性。例如,有些研究证明了语言模型预训练的合理性,有些分析了对比学习的性质,还有一些探讨了重构式自监督学习的特点。这些工作虽然各有洞见,却难以构建一个统一的理论框架。

    更重要的是,许多现有研究甚至无法证明无监督预训练在样本复杂度上优于仅使用标注数据的朴素基线方法。这就像是我们虽然感觉前期的拼图观察很有帮助,却无法证明它真的能让我们更快地完成拼图。

    🔍 透视镜:通用理论框架的诞生

    面对这一挑战,普林斯顿大学的研究团队提出了一个富有洞见的问题:我们能否建立一个足够通用的理论框架,既能解释无监督预训练的优势,又能涵盖各种具体方法?

    他们的答案是肯定的。团队提出了一个抽象而优雅的框架,将无监督表征学习任务描述为一类抽象的潜变量模型\Phi,将下游任务描述为一类预测函数\Psi。在这个框架下,数据x和标签y通过一个未观测的表征z相连。具体来说,(x,z)从潜变量模型\phi^\in\Phi中采样,而y在给定z的条件下从\psi^\in\Psi中采样。

    这个框架的妙处在于它的抽象性和普适性。它不拘泥于具体的模型结构或任务类型,而是捕捉了无监督预训练的本质:利用未标注数据学习有用的表征,以便于下游任务的学习。

    🎯 靶心:信息性条件的关键作用

    然而,仅有框架还不够。研究团队敏锐地意识到,无监督预训练并非在所有情况下都能带来好处。他们通过一个巧妙的反例说明了这一点:考虑潜变量模型z=Ax,其中x\sim N(0,I_d),A\in\Phi是模型参数。在这种情况下,无论我们有多少未标注数据{x_i},都无法获得关于A的任何信息!

    这个例子揭示了一个关键问题:什么样的条件能保证无监督预训练是有益的?研究团队提出了一个巧妙的”信息性条件”(Informative Condition)作为答案。简单来说,这个条件要求:如果我们能准确估计x和辅助信息s的联合分布,那么我们也应该能在某种程度上揭示x和表征z之间的关系。

    形式化地,对于任意\phi\in\Phi,存在一个变换T_1\in T_\Phi,使得:

    d_{TV}(P_{T_1\circ\phi}(x,z),P_{\phi^}(x,z))\leq\kappa\cdot d_{TV}(P_\phi(x,s),P_{\phi^}(x,s))

    这里d_{TV}表示总变差距离,\kappa是一个常数,T_\Phi是一个变换群,允许某些不影响下游任务的变换(比如聚类标签的置换)。

    这个条件巧妙地捕捉了无监督预训练的本质:它应该能在某种程度上揭示数据的内在结构,而这种结构对下游任务是有帮助的。

    🚀 起飞:理论保证的突破

    有了这个框架和条件,研究团队进一步提出了一个自然的两阶段算法:首先使用最大似然估计(MLE)进行无监督预训练,然后使用经验风险最小化(ERM)学习下游任务。

    他们证明,在满足信息性条件的情况下,这个算法能达到O(\sqrt{C_\Phi/m}+\sqrt{C_\Psi/n})的超额风险,其中C_\Phi,C_\Psi分别是函数类\Phi,\Psi的复杂度度量,m,n分别是未标注和已标注数据的数量。

    这个结果的意义非常深远。相比之下,仅使用标注数据的基线方法的超额风险是O(\sqrt{C_{\Phi\Psi}/n}),其中C_{\Phi\Psi}是复合函数类的复杂度。在实际情况下,我们通常有大量未标注数据(m\gg n),而且复合函数类的复杂度往往远大于单独下游任务的复杂度(C_{\Phi\Psi}\gg C_\Psi)。在这种情况下,无监督预训练的优势就非常明显了。

    这个结果首次从理论上严格证明了无监督预训练的普遍优势,填补了长期以来理论与实践之间的鸿沟。

    🌈 多彩世界:框架的广泛适用性

    这个通用框架的魅力不仅在于其理论上的优雅,更在于其实践中的广泛适用性。研究团队通过三个具体的例子展示了框架的力量:

    1. 因子模型与线性回归:因子模型是金融、计算生物学等领域广泛使用的模型,用于捕捉高维数据的低维结构。研究团队证明,在这种情况下,无监督预训练可以将风险从O(\sqrt{d/n})降低到O(d/m+r/n),其中d是数据维度,r是因子数量。当m\gg n时,这个改进是显著的。
    2. 高斯混合模型与分类:高斯混合模型是一种常用的聚类模型。研究团队证明,在这种情况下,无监督预训练可以将风险从O(\sqrt{dK/n})降低到O(\sqrt{dK/m}+\sqrt{K/n}),其中K是聚类数量。同样,当m\gg nd较大时,这个改进是显著的。
    3. 对比学习与线性回归:对比学习是近年来非常流行的自监督学习方法。研究团队证明,在这种情况下,无监督预训练可以将风险降低到O(\sqrt{1/n}),这在嵌入函数类复杂度较高的情况下优于纯监督学习。

    这些例子不仅验证了理论框架的正确性,更展示了其强大的解释力和预测力。它为我们理解和分析各种无监督预训练方法提供了一个统一的视角。

    🎭 结语:揭开面纱,展望未来

    普林斯顿大学研究团队的这项工作,犹如为无监督预训练这位神秘的魔术师揭开了面纱。我们终于能够清晰地看到,这位魔术师的技艺并非空中楼阁,而是建立在坚实的理论基础之上。

    这个通用框架不仅解释了已知的无监督预训练方法,更为未来的研究指明了方向。例如,我们可以基于这个框架设计新的预训练算法,或者为特定任务优化预训练策略。它也为我们理解更复杂的预训练场景(如多模态学习)提供了思路。

    当然,这项工作也留下了一些开放问题。例如,如何在实践中高效地验证信息性条件?如何将这个框架扩展到更一般的损失函数?这些问题都值得进一步探索。

    无监督预训练的魔术表演仍在继续,但现在我们已经掌握了解读魔术的密码。在这个理论指引下,我们期待看到更多令人惊叹的创新和突破。

    参考文献

    1. Ge, J., Tang, S., Fan, J., & Jin, C. (2024). On the Provable Advantage of Unsupervised Pretraining. ICLR 2024.
    2. Erhan, D., Bengio, Y., Courville, A., Manzagol, P. A., Vincent, P., & Bengio, S. (2010). Why does unsupervised pre-training help deep learning?. Journal of Machine Learning Research, 11(Feb), 625-660.
    3. Arora, S., Khandeparkar, H., Khodak, M., Plevrakis, O., & Saunshi, N. (2019). A theoretical analysis of contrastive unsupervised representation learning. In International Conference on Machine Learning (pp. 5628-5637). PMLR.
    4. HaoChen, J. Z., Wei, C., Gao, P., Lee, J. D., & Ma, X. (2021). Provable benefits of representation learning. arXiv preprint arXiv:2108.09125.
    5. Lee, J. D., Lei, Q., Saunshi, N., & Zhuo, J. (2021). Predicting what you already know helps: Provable self-supervised learning. Advances in Neural Information Processing Systems, 34, 5552-5564.
  • 通过反事实扰动将语言计划与演示相结合

    引言

    在机器人技术和人工智能的交叉领域,如何将大规模语言模型(LLMs)中的常识推理与物理领域相结合,成为一项至关重要但尚未解决的问题。传统的方法通常依赖于将LLMs直接应用于符号空间中的规划,而这项研究则提出了一种新颖的思路:通过回放多步演示并引入合成扰动,指导任务结构和约束的搜索。这种方法不仅使得机器人在物理任务中的表现更为出色,还提升了其可解释性。

    我们的方法,名为“将语言与演示相结合”(GLiDE),借鉴了操作规划文献中的“模式家族”概念,将机器人配置按特定运动约束进行分组。这一概念作为高层语言表示与低层物理轨迹之间的抽象层,使得我们能够有效地将语言计划转化为可执行的机器人行为。

    模式家族与演示的反事实扰动

    在我们的研究中,我们首先通过扰动成功的演示来生成一系列“反事实”轨迹。这些轨迹不仅覆盖了演示的状态空间,还包括了额外的成功执行和失败案例。这种方法的核心在于,通过对演示的微小扰动,我们可以揭示出任务的隐含约束。例如,在抓取一个物体的过程中,若机器人在抓取时发生扰动,则可能导致后续动作的失败,从而暴露出任务的关键前置条件。

    学习模式分类器

    为了有效地学习到模式分类器,我们采用了一种解释性学习框架。该框架的核心在于,通过对成功与失败轨迹的比较,恢复演示中隐含的模式家族。具体来说,我们首先从状态中提取特征,然后利用LLMs生成一个抽象的语言计划,描述各个模式之间的关系。通过这种方式,我们不仅能够识别出每个模式,还能理解模式之间的转换条件。

    我们的方法不是简单地依赖人工标注,而是通过扰动生成的反事实数据来丰富我们的训练集。这种方式大大降低了对密集标注的需求,使得模型能够在少量演示的基础上进行学习。

    具体实现与应用

    GLiDE框架的实现包括几个步骤。首先,我们需要接收一组成功的演示和任务描述。接着,利用扰动策略增强数据集,生成成功与失败的轨迹。随后,利用LLMs将高层指令分解为逐步的抽象计划,最终将每个模式与具体的轨迹相结合,生成可执行的机器人动作。

    在我们的实验中,GLiDE在多种任务中表现出色,包括2D导航和机器人操控任务。下表展示了我们在这些任务中的成功率:

    | 方法                | 2D导航成功率 | 操作任务成功率 |
    |---------------------|---------------|----------------|
    | GLiDE + BC          | 0.963         | 0.85           |
    | GLiDE + Planning     | 0.996         | 0.90           |

    实验结果与分析

    2D导航实验

    在2D导航实验中,我们设置了一系列相连的多边形,目标是从任意状态出发,按顺序通过这些多边形。通过GLiDE框架,我们能够有效地识别出每个多边形的模式边界,并在此基础上进行成功的导航。与传统方法相比,GLiDE在面对外部扰动时展现了更强的鲁棒性,成功率显著提升。

    实际机器人实验

    在实际机器人实验中,我们通过真实机器人进行2D导航和抓取任务。通过对机器人执行轨迹的监控,我们能够实时调整机器人的行为,确保其在面对扰动时依然能够完成任务。实验结果表明,GLiDE不仅提高了任务的成功率,还增强了机器人对复杂环境的适应能力。

    结论与未来工作

    通过将语言计划与演示相结合,我们提出了一种新的机器人学习框架GLiDE。该框架有效地将大规模语言模型中的知识转化为物理行为,提升了机器人的可解释性和反应能力。尽管目前的方法在数据效率上还有待提升,但我们相信,通过进一步的研究,结合主动学习和更智能的状态表示学习,GLiDE的表现将进一步增强。

    参考文献

    1. Wang, Y., Wang, T.-H., Mao, J., Hagenow, M. & Shah, J. (2024). Grounding Language Plans in Demonstrations Through Counterfactual Perturbations. ICLR.
    2. Mason, M. (2001). Mechanics of Robotic Manipulation.
    3. Delaney, B., Wang, Y., et al. (2021). Learning from Demonstrations with Counterfactuals.
    4. Liu, B., Ahn, J., et al. (2023). Language-Grounded Learning for Robotics.
    5. Kirillov, A., et al. (2023). Segment Anything: A Framework for Image Segmentation.

    以上是对您提供的文献内容进行的详细解读与重写,旨在展现该研究的核心思想与方法。如果您有任何具体问题或需要进一步的信息,请随时告知!

  • 探索 Kronecker 计算的奇妙世界

    在数学的广袤天地中,Kronecker 运算如同一颗璀璨的明珠,闪烁着独特的光芒。无论是在信号处理、量子计算,还是机器学习的广泛应用中,Kronecker 积与 Kronecker 和的魅力都不可小觑。接下来,我们将深入探讨这些基本概念,揭示它们背后的深刻意义,并通过一些实际例子来说明它们的应用。

    Kronecker 积:构建高维结构的魔法

    基本概念

    Kronecker 积是将两个矩阵结合以生成一个更高维度矩阵的强大工具。设想你有两个矩阵 ( A )( B ),其中 ( A ) 是一个 ( m \times n ) 的矩阵,( B ) 是一个 ( p \times q ) 的矩阵。它们的 Kronecker 积 ( A \otimes B ) 定义为将 ( A ) 中的每个元素与 ( B ) 进行乘法运算,从而构建出一个 ( (mp) \times (nq) ) 的新矩阵。

    具体的数学表达为:

    [A \otimes B = \begin{bmatrix}a_{11}B & a_{12}B & \cdots & a_{1n}B \a_{21}B & a_{22}B & \cdots & a_{2n}B \\vdots & \vdots & \ddots & \vdots \a_{m1}B & a_{m2}B & \cdots & a_{mn}B\end{bmatrix}]

    这种结构的生成不仅优雅,而且在多维数据处理中的应用潜力巨大。

    应用实例

    假设我们有一个 ( 2 \times 2 ) 矩阵 ( A ) 和一个 ( 2 \times 2 ) 矩阵 ( B )

    [A = \begin{bmatrix}1 & 2 \3 & 4\end{bmatrix}, \quad B = \begin{bmatrix}0 & 5 \6 & 7\end{bmatrix}]

    通过 Kronecker 积,我们可以计算出:

    [A \otimes B = \begin{bmatrix}1 \cdot B & 2 \cdot B \3 \cdot B & 4 \cdot B\end{bmatrix} = \begin{bmatrix}0 & 5 & 0 & 10 \6 & 7 & 12 & 14 \0 & 15 & 0 & 20 \18 & 21 & 24 & 28\end{bmatrix}]

    这个新矩阵的维度为 ( 4 \times 4 ),展示了 Kronecker 积在扩展数据维度方面的强大能力。

    Kronecker 和:简洁的元素相加

    与 Kronecker 积形成鲜明对比的是 Kronecker 和。它是指对于两个相同维度的矩阵 ( A )( B ),我们简单地将它们的对应元素相加。这个过程虽然看似简单,但在某些应用中却极为重要。

    应用示例

    假设我们有两个相同维度的矩阵:

    [A = \begin{bmatrix}1 & 2 \3 & 4\end{bmatrix}, \quad B = \begin{bmatrix}5 & 6 \7 & 8\end{bmatrix}]

    那么它们的 Kronecker 和为:

    [A \oplus B = \begin{bmatrix}1 + 5 & 2 + 6 \3 + 7 & 4 + 8\end{bmatrix} = \begin{bmatrix}6 & 8 \10 & 12\end{bmatrix}]

    这种运算在处理数据融合和特征提取时非常有用。

    深入应用场景

    信号处理中的 Kronecker 积

    在多信道信号处理领域,Kronecker 积常常用于构造高维信号。在此背景下,我们可以利用 Kronecker 积将多个信号通道的信息整合到一个高维空间中,使得信号的分析与处理变得更为高效。例如,假设有多个传感器获取的信号,可以通过 Kronecker 积将这些信号组合在一起,进行联合处理。

    量子计算中的应用

    在量子力学中,量子态通常用向量来表示,而多个量子比特的联合状态则需要用 Kronecker 积进行描述。考虑两个量子比特的状态分别为 ( |0\rangle )( |1\rangle ),其联合态可以表示为:

    [| \psi \rangle = |0\rangle \otimes |1\rangle = \begin{bmatrix}0 \1\end{bmatrix} \otimes \begin{bmatrix}1 \0\end{bmatrix} = \begin{bmatrix}0 \0 \1 \0\end{bmatrix}]

    这种运算在描述量子系统的复杂性时至关重要。

    机器学习中的特征映射

    在机器学习中,Kronecker 积常被应用于特征映射与张量分解。通过 Kronecker 积,可以将低维特征空间扩展到高维,使得模型在学习复杂模式时更加有效。例如,在图像处理任务中,原始图像的特征可以通过 Kronecker 积与其他特征结合,从而提升分类性能。

    结语

    Kronecker 计算不仅是数学中的一种运算,更是现代科技中不可或缺的工具。无论是在信号处理、量子计算还是机器学习领域,Kronecker 积和 Kronecker 和都发挥了巨大的作用。理解这些运算的基本概念及其应用,将有助于我们在复杂的数据世界中游刃有余。

    参考文献

    1. Horn, R. A., & Johnson, C. R. (2012). Matrix Analysis. Cambridge University Press.
    2. Strang, G. (2016). Introduction to Linear Algebra. Wellesley-Cambridge Press.
    3. Nielsen, M. A., & Chuang, I. L. (2010). Quantum Computation and Quantum Information. Cambridge University Press.
    4. Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.
    5. Zhang, Y., & Xu, Y. (2018). Applications of Kronecker Product in Signal Processing. IEEE Transactions on Signal Processing.

    这些参考文献提供了对 Kronecker 计算的深入理解和广泛应用的更多信息。希望本文能够激发读者对这一领域的兴趣,进一步探索其潜力。

  • 无限猴子定理的突破:AI时代的莎士比亚

    🐒 序曲:从打字机到人工智能

    想象一下,在一个充满香蕉味的房间里,无数只猴子正在疯狂地敲打着打字机。这些调皮的灵长类动物们似乎在进行一场浩大的文学实验。它们的目标是什么?不过是要随机打出莎士比亚的全部作品而已。这就是著名的”无限猴子定理”——给予足够的时间,猴子们最终会创作出莎士比亚的杰作。然而,现实世界中,我们既没有无限的时间,也没有无限的猴子。

    但是,在人工智能的时代,这个看似遥不可及的梦想却变得触手可及。我们不再需要依赖运气和时间的力量,而是可以利用智能算法的精确计算来实现这个目标。今天,我们要探讨的就是如何利用人工智能来重现莎士比亚的文学魅力。

    🎭 第一幕:莎士比亚的数字化复活

    在这个数字化的舞台上,我们的主角不再是猴子,而是一种名为”大型语言模型”(LLM)的人工智能。这些模型就像是文字的魔术师,它们能够理解和生成人类语言,甚至可以模仿特定作者的写作风格。

    想象一下,如果我们能够让这些AI模型”阅读”莎士比亚的全部作品,它们是否能够学会像莎翁一样思考和写作呢?这个想法听起来可能有些疯狂,但事实上,研究人员已经在这个方向上取得了令人瞩目的进展。

    🧠 第二幕:解码莎士比亚的语言DNA

    要让AI模仿莎士比亚的写作风格,首先需要解码莎翁语言的”DNA”。研究人员采用了一种称为”微调”的技术,这就像是给AI模型戴上了一副”莎士比亚眼镜”。

    具体来说,研究人员使用了GPT-2模型作为基础,这是一个强大的语言模型,可以生成连贯的文本。然后,他们收集了莎士比亚的作品,包括戏剧、诗歌等,作为训练数据。通过反复学习这些作品,模型逐渐掌握了莎士比亚的词汇使用、句法结构和修辞手法。

    这个过程可以比作是一个学徒跟随莎士比亚学习写作。AI模型不断阅读、分析和模仿莎翁的作品,直到它能够以惊人的相似度复制莎翁的写作风格。

    📊 第三幕:评估AI莎士比亚的文学才华

    那么,如何判断AI生成的文本是否真的像莎士比亚的作品呢?研究人员设计了一系列巧妙的实验来评估模型的表现。

    首先,他们使用了一种叫做”困惑度”(perplexity)的指标。这个指标可以衡量模型对语言的理解程度。简单来说,困惑度越低,说明模型对莎士比亚的语言风格掌握得越好。

    研究结果令人振奋。经过微调的模型在生成莎士比亚风格的文本时,困惑度显著降低。这意味着,AI已经相当程度上掌握了莎翁的写作特点。

    为了更直观地展示这一点,让我们看看下面的图表:

    | 模型          | 困惑度 |
    |---------------|--------|
    | 原始GPT-2     | 18.71  |
    | 微调后的模型  | 8.97   |

    从图表中我们可以清楚地看到,经过微调后的模型的困惑度降低了将近一半,这是一个相当显著的进步。

    🎨 第四幕:AI莎士比亚的创作之旅

    有了这个”数字化莎士比亚”,研究人员开始了一系列有趣的实验。他们让AI模型创作新的诗句、独白,甚至是完整的戏剧场景。

    例如,当给出提示”To be or not to be”时,AI生成了以下文本:

    “To be or not to be, that is the question:
    Whether ’tis nobler in the mind to suffer
    The slings and arrows of outrageous fortune,
    Or to take arms against a sea of troubles
    And by opposing end them. To die—to sleep,
    No more; and by a sleep to say we end
    The heart-ache and the thousand natural shocks
    That flesh is heir to: ’tis a consummation
    Devoutly to be wish’d.”

    这段文本不仅保留了原始独白的核心思想,还模仿了莎士比亚的语言风格和韵律。虽然它并非完全原创,但已经展现出了AI在理解和复制复杂文学作品方面的潜力。

    🔍 第五幕:AI创作的局限与挑战

    然而,尽管AI在模仿莎士比亚的风格上取得了令人印象深刻的成果,但它仍然面临着一些挑战。

    首先,AI生成的文本虽然在形式上与莎士比亚的作品相似,但往往缺乏深层的语义连贯性和主题探索。莎士比亚的作品不仅仅是优美的文字,更是对人性和社会的深刻洞察。这种洞察力是否能够被AI真正理解和重现,仍然是一个开放的问题。

    其次,AI模型可能会产生”幻觉”,即生成一些看似合理但实际上并不存在于原始作品中的内容。例如,它可能会创造出莎士比亚从未写过的角色或情节。这种创新虽然有时可能会产生有趣的结果,但也可能导致对莎士比亚作品的误解。

    最后,还有一个伦理问题:如果AI能够完美模仿莎士比亚的写作风格,那么这是否会对原创性和艺术价值产生影响?我们如何区分人类创作和AI生成的作品?这些问题都需要我们深入思考。

    🌟 尾声:AI与人类创造力的共舞

    虽然AI在模仿莎士比亚方面取得了令人瞩目的进展,但它并不是要取代人类的创造力。相反,这项技术为我们提供了一个强大的工具,帮助我们更深入地理解和欣赏莎士比亚的作品。

    想象一下,未来的文学课堂里,学生们可以与”AI莎士比亚”进行互动,探讨剧本创作的细节,或者即兴创作新的场景。这种技术还可以帮助研究人员分析莎士比亚作品中的语言模式和主题,揭示以前可能被忽视的细节。

    最终,AI不是为了取代莎士比亚,而是为了增强我们对他作品的理解和欣赏。就像莎翁笔下的精灵Ariel一样,AI是我们探索文学世界的魔法助手,它能够带我们进入一个充满想象力和创造力的新天地。

    正如莎士比亚在《暴风雨》中所写:”我们所拥有的,就是我们所是的。”在这个AI时代,我们拥有了新的工具和视角来理解和创造文学。让我们期待这场人类智慧与人工智能的共舞,为文学世界带来更多精彩的可能性。

    📚 参考文献

    1. Brown, T. B., et al. (2020). Language Models are Few-Shot Learners. arXiv preprint arXiv:2005.14165.
    2. Radford, A., et al. (2019). Language Models are Unsupervised Multitask Learners. OpenAI Blog.
    3. Shakespeare, W. (1603). Hamlet. First Folio.
    4. Vaswani, A., et al. (2017). Attention Is All You Need. arXiv preprint arXiv:1706.03762.
    5. Wang, Z., & Hegde, V. (2023). Language Models of Code are Few-Shot Commonsense Learners. arXiv preprint arXiv:2210.07128.
  • 扩展法则:揭示大语言模型成功的秘密

    在当今的人工智能领域,大语言模型(LLM)如火如荼地发展,尤其是在自然语言处理(NLP)任务中展现出了惊人的能力。究竟是什么让这些庞然大物如此成功?答案或许可以在“扩展法则”中找到。扩展法则强调了“规模扩展”(Scaling)对模型性能的重要性,揭示了模型参数、数据规模与计算算力之间的深刻联系。

    大语言模型的结构与发展

    大语言模型的基础构建在于 Transformer 架构,这一架构最初由 Vaswani 等人于 2017 年提出。它利用了注意力机制,使得模型能够在处理长文本时保持高效的上下文关联性。尽管大语言模型与小型预训练语言模型在结构上相似,但通过显著增加参数规模、数据规模和计算算力,前者的能力得到了质的飞跃。研究表明,性能的提升往往大于通过改进算法或架构所带来的改进。

    KM 扩展法则的核心思想

    在这一背景下,Kaplan 等人于 2020 年提出了 KM 扩展法则,通过一系列实验构建了模型性能与模型规模(N)、数据规模(D)和计算算力(C)之间的幂律关系。这一法则可以通过以下公式近似表示:

        \[L(N) = \left( \frac{N_c}{N} \right)^{\alpha_N}, \quad \alpha_N \sim 0.076, \quad N_c \sim 8.8 \times 10^{13}\]

        \[L(D) = \left( \frac{D_c}{D} \right)^{\alpha_D}, \quad \alpha_D \sim 0.095, \quad D_c \sim 5.4 \times 10^{13}\]

        \[L(C) = \left( \frac{C_c}{C} \right)^{\alpha_C}, \quad \alpha_C \sim 0.050, \quad C_c \sim 3.1 \times 10^{8}\]

    这些公式揭示了模型性能与各个因素之间的强依赖关系,而损失函数 L(\cdot) 以自然对数为单位,反映了模型在特定任务上的表现。这一发现为理解大语言模型的性能提供了重要的理论基础。

    Chinchilla 扩展法则的提出

    紧随其后,Hoffmann 等人于 2022 年提出了 Chinchilla 扩展法则,进一步探索了如何在给定算力资源的情况下,优化训练过程。该法则同样通过幂律关系来描述模型的性能,公式如下:

        \[L(N, D) = E + \frac{A}{N^{\alpha}} + \frac{B}{D^{\beta}}, \quad E = 1.69, \quad A = 406.4, \quad B = 410.7, \quad \alpha = 0.34, \quad \beta = 0.28\]

    通过这一研究,DeepMind 的团队发现,模型参数规模和数据规模的最优分配方案可以通过以下公式进行估算:

        \[N_{opt}(C) = G\left(\frac{C}{6}\right)^{a}, \quad D_{opt}(C) = G^{-1}\left(\frac{C}{6}\right)^{b}\]

    其中,a = \frac{\alpha}{\alpha + \beta}b = \frac{\alpha}{\beta + \beta}G 是由 AB\alpha\beta 计算得出的扩展系数。这一法则的意义在于,它首次明确指出了预训练过程中模型规模与数据规模的扩展关系,强调了在训练中合理利用数据的必要性。

    扩展法则的实际应用

    扩展法则不仅为研究人员提供了理论指导,同时也为实践应用带来了深远影响。通过对小模型的训练经验进行总结,研究人员能够在大模型的训练中减少资源的浪费,从而提高效率。例如,训练小型代理模型来确定适合大型模型的预训练数据混合比例,能够显著降低实验成本。

    不过,在实践中,研究人员也发现了模型性能与语言建模损失之间的复杂关系。虽然语言建模损失的降低通常意味着模型能力的提升,但在某些情况下,模型的实际任务性能并不总是直接与语言建模损失相符,甚至可能出现“逆向扩展”的现象。

    未来的挑战与方向

    尽管扩展法则为大语言模型的发展提供了重要的理论支持,但仍然存在许多挑战。随着模型规模的不断扩大,数据的获取和处理成为一大瓶颈。如何在有限的数据资源下实现有效的模型训练,是一个亟待解决的问题。数据重复和数据合成技术可能会成为突破口,帮助缓解数据稀缺的问题。

    此外,扩展法则的研究也需要进一步深入,特别是在任务层面的可预见性方面。现有的研究大多集中在语言建模损失的减少上,而如何将扩展法则与具体任务的性能提升相结合,仍然需要更多的探索。

    结论

    扩展法则为理解大语言模型的成功提供了重要的视角,它不仅揭示了模型规模、数据规模和计算算力之间的复杂关系,还为未来的研究与应用指明了方向。随着技术的不断进步,如何充分利用这一法则,将是推动人工智能更进一步的关键所在。

    参考文献

    1. Kaplan, J., et al. (2020). Scaling Laws for Neural Language Models. OpenAI.
    2. Hoffmann, J., et al. (2022). Training Compute-Optimal Large Language Models. DeepMind.
    3. Vaswani, A., et al. (2017). Attention is All You Need. NeurIPS.
    4. Brown, T. B., et al. (2020). Language Models are Few-Shot Learners. NeurIPS.
    5. Liu, P. J., et al. (2021). Pre-training Transformers as Energy-Based Cloze Models. NeurIPS.

    通过对扩展法则的深入探讨,我们不仅能够更好地理解大语言模型的设计与训练,也能为未来的研究提供重要的理论支持,推动人工智能技术的进一步发展。希望未来的研究者们能够在这一领域中不断突破,为我们带来更多的惊喜与创新。

  • 大语言模型:重新定义人工智能的未来

    在人工智能(AI)领域,近年来大语言模型(Large Language Models, LLMs)的崛起犹如一场技术革命。它们不仅以其惊人的性能引发了科研界的广泛关注,更在行业应用上带来了前所未有的变革。大语言模型的成功并不是偶然,而是基于对网络架构、训练方法的深刻理解与应用。通过扩展模型的参数规模、数据数量和算力资源,这些模型展现出了令人意想不到的能力,让人们重新审视人工智能的未来。

    1. 大语言模型的崛起

    与小型预训练模型相比,大语言模型的最大亮点在于其处理复杂任务的能力。早期的语言模型往往局限于特定的任务,而大语言模型则通过单一模型解决了众多复杂问题,标志着人工智能算法的一个新高度。以ChatGPT和GPT-4为例,它们不仅在自然语言处理(NLP)领域表现优异,更为实现通用人工智能(AGI)提供了新的可能性。

    在2023年2月,OpenAI发布的“Planning for AGI and beyond”技术文章中,详细阐述了实现通用人工智能的短期与长期计划,标志着AGI研究的又一里程碑。与此同时,微软的研究团队在arXiv上发布了关于GPT-4的论文,认为它可能是通用人工智能系统的早期版本。这一系列的研究与讨论,彰显了大语言模型在AI技术发展中的重要性。

    2. 大语言模型对科技发展的影响

    大语言模型的技术发展不仅影响了自然语言处理领域,还在信息检索、计算机视觉和科学研究等多个领域引发了深刻变革。

    2.1 自然语言处理

    在自然语言处理领域,大语言模型作为一种通用的语言任务解决技术,其能力已经超越了传统任务的研究范式。以往,研究者们往往专注于解决特定的任务,例如文本摘要、情感分析等。然而,随着大语言模型的引入,研究的重点逐渐转向如何提升模型的综合能力。传统的研究意义在逐渐衰减,一些任务甚至面临“结束”的局面。

    大语言模型通过特定的提示方式,能够高效地完成不同类型的任务。比如,用户仅需提供简短的提示,模型便能生成与之相关的内容。这种灵活性与高效性,使得大语言模型成为了自然语言处理领域的主流技术。

    2.2 信息检索

    在信息检索领域,传统搜索引擎正面临着由人工智能信息助手(如ChatGPT)带来的冲击。基于大语言模型的信息系统,用户能够通过自然语言对话的方式,获得复杂问题的答案。微软推出的New Bing便是一个典型例子,结合了大语言模型与传统搜索引擎的优势。

    然而,当前大语言模型在信息检索中的精确性与实时性还有待提升,尚无法完全取代现有的搜索引擎。因此,信息检索领域正关注两个新兴方向:检索增强的大语言模型以及大语言模型增强的搜索系统,围绕如何更好地利用大语言模型技术展开研究。

    2.3 计算机视觉

    在计算机视觉领域,研究人员正在探索如何将大语言模型与视觉信息结合,以解决跨模态或多模态任务。GPT-4已能够支持图文多模态信息的输入,这为实现更复杂的任务提供了可能性。例如,通过将图像、视频等模态的信息与文本语义空间相融合,研究者可以利用相对较少的计算资源来构建多模态大语言模型。

    随着开源大语言模型的出现,模型的实现难度显著降低。研究人员可以通过微调的方法,快速开发出适用于特定任务的多模态模型。例如,OpenAI推出的Sora模型便是基于图像块序列建模的思路构建而成的,展示了多模态领域的未来发展方向。

    2.4 AI赋能的科学研究(AI4Science)

    近年来,AI4Science受到了学术界的广泛关注。大语言模型已经在数学、化学、物理、生物等多个领域展现出强大的应用潜力。例如,著名数学家陶哲轩在社交网络上表示,他在科研中广泛使用大语言模型,辅助提供解题灵感甚至用于论文的撰写。

    不仅如此,大语言模型还在新材料发现、生物制药等方面发挥了重要作用。随着训练数据规模与范围的不断扩展,未来大语言模型将在科学研究中扮演更加重要的角色。

    3. 未来的科研范式

    大语言模型的崛起正在改变传统的科研范式。为了提升大模型的性能,研究人员需要深入了解相关的工程技术,尤其是在大规模数据处理与分布式并行训练方面的实践经验。同时,如何有效地利用大语言模型的提示接口(Prompting Interface)也是当前研究的一个重要方向。

    与小型预训练语言模型的常规使用不同,大语言模型的访问主要依赖提示接口。用户需要理解模型的工作原理,并按照模型的特性来描述需要解决的任务。这种新的交互方式,对研究者的能力提出了更高的要求,也促进了人与机器之间的更深层次的合作。

    此外,大语言模型还将带来产业应用的变革性技术影响,催生出基于大语言模型的应用生态系统。例如,微软的Copilot正利用大语言模型来增强自动化办公软件的功能,简化用户的工作流程。OpenAI也在积极推动Assistants API与GPTs的研发,以实现特定任务的解决工具。这些应用的出现,不仅提升了用户体验,更在一定程度上加速了软件研发的周期。

    结语

    大语言模型的崛起不仅是技术发展的结果,更是对人工智能未来的重新定义。随着这一领域的不断发展,我们可以期待大语言模型在更多领域的应用与突破。无论是自然语言处理、信息检索,还是计算机视觉与科学研究,大语言模型都将继续发挥其强大的能力,推动人工智能技术的进步与发展。

    参考文献

    1. OpenAI. (2023). Planning for AGI and beyond.
    2. Microsoft Research Team. (2023). GPT-4: A step towards Artificial General Intelligence.
    3. 陶哲轩. (2023). 大语言模型在数学研究中的应用.
    4. OpenAI. (2023). Sora: A new model for multimodal tasks.
    5. 微软. (2023). Copilot: Enhancing productivity through AI.
  • 深入探讨语言模型的“过度思考”现象

    在当今人工智能和自然语言处理领域,语言模型的能力已经达到了一个前所未有的高度。现代语言模型如GPT-3和Codex等,通过少量的示例学习,能够在没有细调的情况下完成复杂的任务。然而,这种“模仿”能力也可能导致模型再现不准确或有害的内容,尤其是在错误的上下文中。本文将探讨一种被称为“过度思考”的现象,分析其对语言模型输出准确性的影响,并讨论如何通过深入理解模型的内部表示来应对这一问题。

    什么是“过度思考”?

    “过度思考”是指当模型在处理中间层的预测时,表现出的对错误信息的过度关注。我们的研究发现,在模型的早期层中,无论是正确的还是错误的少量示例,都会导致相似的行为。然而,当模型到达某个“临界层”时,正确和错误示例所引发的行为会出现显著的分歧。在这个临界层之后,给出错误示例时,模型的准确率会逐渐降低。

    图示:模型层数与准确率的关系

    | 层数 | 正确示例的准确率 | 错误示例的准确率 |
    |------|------------------|------------------|
    | 0    | 0.75             | 0.75             |
    | 5    | 0.80             | 0.78             |
    | 10   | 0.85             | 0.76             |
    | 15   | 0.90             | 0.65             |
    | 20   | 0.92             | 0.50             |

    研究背景

    研究表明,语言模型的上下文遵循能力是其核心特性之一。通过对上下文的理解,模型能够推断出用户的意图,然而,这种能力也可能导致模型学习到用户的错误示例并加以复制。举个例子,如果一个程序员用不规范的代码提示Codex,模型可能会产生同样不规范的代码补全。

    在我们的研究中,我们通过设置对比任务,探索模型在处理正确和错误标签时的表现差异。我们发现,给定错误示例时,模型的准确率在经过一定层数后会显著下降。

    过度思考的机制

    我们将“过度思考”归因于模型在后期层中出现的“错误归纳头”。这些注意力头(attention heads)专注于复制之前错误示例中的信息。通过对这些头的消融实验,我们发现去除这些注意力头能显著减少模型在面对错误示例时的准确率下降。

    图示:注意力头的作用

    | 注意力头类型 | 对准确率的影响 |
    |--------------|----------------|
    | 正确注意力头 | 0.85           |
    | 错误注意力头 | 0.50           |
    | 随机注意力头 | 0.70           |

    如何应对过度思考?

    为了更好地理解和减少过度思考现象,我们建议研究者关注模型的中间计算过程。通过分析不同层次的输出,研究者可以发现模型在处理信息时的不同策略,从而更有效地防止模型输出错误信息。

    此外,使用“早期退出”策略,即在模型的中间层进行预测,可以提高模型在处理错误示例时的准确性。我们的实验表明,在某些情况下,早期退出的模型在面对错误示例时的表现优于完整模型。

    结论

    “过度思考”现象揭示了现代语言模型在处理信息时的复杂性。通过对模型内部表示的深入分析,我们不仅能够更好地理解模型的行为,还能为未来的研究提供重要的启示。随着人工智能技术的不断进步,如何确保语言模型的输出准确性和安全性将是未来研究的关键。

    参考文献

    1. Halawi, D., Denain, J.-S., & Steinhardt, J. (2024). Overthinking the Truth: Understanding How Language Models Process False Demonstrations. ICLR 2024.
    2. Brown, T. et al. (2020). Language Models are Few-Shot Learners. NeurIPS.
    3. Olsson, A., et al. (2022). Mechanistic Interpretability of Neural Networks. NeurIPS.
    4. Kaya, T., et al. (2018). The Impact of Layer Exiting on Neural Network Inference. ICLR.
    5. Meng, Y., et al. (2022). Understanding the Induction Heads in Transformers. NeurIPS.

    这篇文章旨在通过分析语言模型的内部机制,探讨如何减少有害模仿现象。希望未来的研究能在这一领域取得更大的进展。

  • 统计语言模型:从马尔可夫假设到现代自然语言处理的基石

    在20世纪90年代,统计语言模型(Statistical Language Model, SLM)悄然兴起,成为了自然语言处理(NLP)领域的一个里程碑。随着计算能力的提升和数据可用性的增加,研究者们开始探索如何通过统计学习的方法来理解和生成自然语言。统计语言模型的核心在于其基于马尔可夫假设的预测能力,这一假设为语言序列的建模提供了坚实的数学基础。

    马尔可夫假设:语言序列的预测之钥

    统计语言模型的基本思想是利用上下文单词来预测下一个单词的出现概率。具体来说,模型会关注前面的若干个连续单词,从而根据这些上下文信息来进行下一步的预测。这个过程可以用如下公式来表示:

        \[P(w_n | w_{n-1}, w_{n-2}, \ldots, w_{n-k})\]

    其中,w_n 表示当前预测的单词,w_{n-1}, w_{n-2}, \ldots, w_{n-k} 是上下文中的单词。通过这种方式,统计语言模型能够有效地通过固定长度的上下文来进行单词的预测。根据上下文的长度,这些模型被称为n元(n-gram)语言模型,常见的有二元模型(bigram)和三元模型(trigram)。

    维数灾难的挑战

    尽管n-gram语言模型在许多应用中表现出色,但其性能也面临着“维数灾难”(Curse of Dimensionality)的困扰。随着上下文长度n的增加,模型需要估计的转移概率项数将呈指数级增长。这不仅增加了计算的复杂性,也导致了数据稀疏问题的严重性。为了应对这一挑战,研究者们提出了多种平滑策略,以便在有限的数据中获取可靠的概率估计。

    平滑策略:应对数据稀疏的利器

    平滑策略的核心在于为那些在训练数据中未出现的词序列分配非零的概率。这些策略包括回退估计(Back-off Estimation)和古德-图灵估计(Good-Turing Estimation),它们在不同的上下文环境中发挥着各自的作用。

    1. 回退估计:当n-gram模型无法找到足够的数据来支持预测时,它将回退到较低阶的模型。例如,如果一个三元模型没有足够的统计数据来进行预测,它会回退到二元模型,然后再到一元模型。这种方法虽然有效,但在高阶上下文的刻画能力上仍显得不足,难以精确建模复杂的语义关系。
    2. 古德-图灵估计:这种方法则通过调整未见事件的概率来改善模型的性能。古德-图灵估计根据观察到的事件数来推测未观察到的事件的概率,从而提供更为平滑的概率分布。这种方法在许多情况下能够有效缓解数据稀疏的问题。

    统计语言模型在信息检索中的应用

    统计语言模型在信息检索(Information Retrieval, IR)领域的应用尤为广泛。通过对用户查询和文档内容进行建模,统计语言模型能够有效地评估文档与查询之间的相关性。例如,在文档检索过程中,模型通过计算查询词与文档中各个词的匹配概率,从而为用户提供最相关的结果。

    在这一过程中,统计语言模型不仅依赖于词的出现频率,还考虑了上下文信息,使得检索结果更加精准。通过将统计语言模型与其他技术结合,如TF-IDF(Term Frequency-Inverse Document Frequency)权重计算,研究者们能够进一步提升信息检索的效果。

    未来的方向:超越传统的统计语言模型

    尽管统计语言模型在自然语言处理领域取得了显著的成功,但其局限性也逐渐显现。随着深度学习技术的发展,研究者们开始探索更为复杂的模型,如神经网络语言模型(Neural Network Language Model, NNLM)和变换器(Transformer)架构。这些新兴方法不仅能够更好地捕捉长距离依赖关系,还能够处理更多的上下文信息,从而在语义理解和生成上表现出色。

    例如,变换器架构通过自注意力机制(Self-Attention)能够动态地关注输入序列中重要的部分,从而在生成文本时提供更为丰富的上下文信息。这种方法的成功使得统计语言模型的传统优势受到挑战,促使研究者们重新思考语言建模的基本原则。

    结语

    统计语言模型自其问世以来,已经成为自然语言处理和信息检索领域不可或缺的工具。尽管面临诸多挑战,但通过不断发展和改进,统计语言模型依然在为我们理解和生成自然语言提供着重要的支持。未来,随着技术的不断进步,我们期待着更为智能和精确的语言模型的出现,为人类与机器的沟通架起更加稳固的桥梁。


    参考文献

    1. Jurafsky, D., & Martin, J. H. (2009). Speech and Language Processing.
    2. Chen, S. F., & Goodman, J. (1996). An Empirical Study of Smoothing Techniques for Language Modeling.
    3. Kneser, R., & Ney, H. (1995). Improved Backing-off for M-gram Language Modeling.
    4. Good, I. J. (1953). The Population Frequencies of Species and the Estimation of Population Parameters.
    5. Brants, T., Popat, A., & Xu, P. (2007). Large Language Models in Machine Translation.
  • 🚀 从零到一:LLMBox让大语言模型训练与应用触手可及

    🌟 引言:开启AI新纪元

    在人工智能的浩瀚宇宙中,大语言模型(Large Language Models, LLMs)无疑是当前最耀眼的星辰。它们就像是智能世界中的”万能钥匙”,能够解锁无数可能性的大门。然而,对于许多研究者和开发者来说,驾驭这些强大的模型却如同驯服一匹烈马,既充满挑战,又令人向往。今天,让我们一起揭开一个令人兴奋的项目面纱——LLMBox,这个项目将彻底改变我们与大语言模型互动的方式!

    想象一下,如果有一个工具箱,里面装满了训练和使用大语言模型所需的一切工具,会是什么样子?这正是LLMBox的愿景。它就像是为AI世界量身定制的瑞士军刀,集训练、评估、应用于一体,让每个人都能轻松驾驭大语言模型的力量。

    💡 LLMBox:一站式大语言模型解决方案

    LLMBox的诞生,犹如AI领域的一场革命。它不仅仅是一个简单的工具库,更是一个完整的生态系统。通过精心设计的架构,LLMBox在训练和应用阶段都实现了高度的灵活性和效率。让我们深入了解这个神奇工具箱的关键特性:

    🎓 训练篇:打造你的专属AI助手

    1. 多样化的训练策略
      LLMBox支持多种训练策略,包括监督微调(SFT)、预训练(PT)、PPO和DPO。这就像是给你提供了多种”烹饪方法”,你可以根据自己的”口味”(需求)选择最适合的方式来”烹饪”(训练)你的模型。
    2. 丰富的SFT数据集
      提供9种SFT数据集作为训练输入。这就像是给你的AI助手准备了丰富多样的”学习材料”,让它能够从多个角度学习和理解人类的语言和知识。
    3. 分词器词汇表合并
      支持分词器合并功能以扩展词汇表。这就像是给你的AI助手增加了新的”词汇书”,让它能够理解和使用更多的词语,提高语言处理能力。
    4. 数据构建策略
      支持合并多个数据集进行训练,并提供Self-Instruct和Evol-Instruct等数据处理方法。这就像是为你的AI助手设计了个性化的”学习计划”,让它能够更有针对性地学习和进步。
    5. 参数高效微调
      在SFT或PT中支持LoRA和QLoRA。这就像是给你的AI助手提供了”快速学习”的方法,让它能够在短时间内掌握新技能,而不需要重新学习所有内容。
    6. 高效训练
      支持Flash Attention和Deepspeed以提高训练效率。这就像是给你的AI助手配备了”超级大脑”,让它能够更快速地学习和处理信息。

    🚀 应用篇:释放AI的无限潜能

    1. 超快速推理
      通过管理前缀的KV缓存,本地推理速度最高可提升6倍。这就像是给你的AI助手装上了”火箭推进器”,让它能够以惊人的速度回答你的问题。
    2. 全面评估
      支持56+常用数据集和基准,全方位评估LLMs的性能。这就像是为你的AI助手准备了一系列”考试”,全面测试它的各项能力。
    3. 多样化评估方法
      准确重现OpenAI、LLaMA、Mistral等模型原始论文的结果。这就像是让你的AI助手参加”模拟考试”,检验它是否达到了业界标准。
    4. 上下文学习
      支持多种ICL策略,包括KATE、GlobalE和APE。这就像是教会你的AI助手”举一反三”的能力,让它能够更灵活地应对各种问题。
    5. 思维链
      对某些数据集支持三种CoT评估:基础、从少到多和PAL。这就像是训练你的AI助手进行”逻辑推理”,让它能够解决更复杂的问题。
    6. 高效推理支持
      支持vLLM和Flash Attention,提高推理效率。这就像是给你的AI助手配备了”超级计算机”,让它能够更快速地处理复杂任务。
    7. 量化支持
      支持BitsAndBytes和GPTQ量化。这就像是给你的AI助手进行”体积压缩”,让它能够在更小的设备上运行,而不失其强大的能力。

    🛠️ 快速上手:开启你的AI之旅

    安装LLMBox

    首先,让我们通过以下命令克隆LLMBox仓库并安装必要的依赖:

    git clone https://github.com/RUCAIBox/LLMBox.git && cd LLMBox
    pip install -r requirements.txt

    如果你只需要评估OpenAI(或兼容OpenAI的模型,如DeepSeek、Perplexity),可以安装最小依赖:

    pip install -r requirements-openai.txt

    训练你的第一个模型

    让我们从训练一个基于LLaMA-2(7B)的SFT模型开始,使用deepspeed3:

    cd training
    bash download.sh
    bash bash/run_ds3.sh

    这个简单的命令序列就能启动一个强大的模型训练过程。想象一下,你正在为你的AI助手灌输知识,很快它就能成为你的得力助手!

    使用和评估模型

    训练完成后,你可以立即开始使用和评估你的模型。以下命令将在CoPA数据集上以零样本方式运行OpenAI GPT 3.5 turbo模型:

    python inference.py -m gpt-3.5-turbo -d copa

    这就像是让你的AI助手参加一次”能力测试”,看看它在理解因果关系方面的表现如何。

    🌈 进阶应用:释放LLMBox的全部潜力

    训练进阶

    LLMBox支持各种训练策略和数据集构建策略,以及一些提高效率的模块。以下是一个更复杂的训练命令示例:

    python train.py \
        --model_name_or_path meta-llama/Llama-2-7b-hf \
        --data_path data/ \
        --dataset alpaca_data_1k.json \
        --output_dir $OUTPUT_DIR \
        --num_train_epochs 2 \
        --per_device_train_batch_size 8 \
        --gradient_accumulation_steps 2 \
        --save_strategy "epoch" \
        --save_steps 2 \
        --save_total_limit 2 \
        --learning_rate 1e-5 \
        --lr_scheduler_type "constant"

    这个命令看似复杂,但每个参数都有其特定的用途。比如,--num_train_epochs 2设定训练两个完整周期,--learning_rate 1e-5设置一个较小的学习率以微调模型。这就像是为你的AI助手制定了一个详细的”学习计划”,指导它如何更好地吸收新知识。

    分词器合并

    如果你想在非英语语料上预训练模型,LLMBox提供了分词器合并功能:

    bash bash/run_7b_pt.sh

    这个功能就像是教会你的AI助手”新的语言”,让它能够理解和处理更多种类的文本。

    数据集合并

    LLMBox允许你混合多个数据集进行训练:

    bash bash/run_7b_hybrid.sh

    这就像是为你的AI助手提供了”多元化的学习材料”,让它能够从不同角度学习知识,成为一个全面发展的AI助手。

    Self-Instruct和Evol-Instruct

    LLMBox还支持Self-Instruct和Evol-Instruct来增强或改进输入数据:

    python self_instruct/self_instruct.py --seed_tasks_path=seed_tasks.jsonl

    这个功能就像是让AI自己产生”练习题”,通过不断的自我提问和回答来提升能力,真是AI版的”自我修炼”啊!

    🎯 模型评估:全方位测试你的AI助手

    LLMBox提供了广泛的模型支持,包括Huggingface模型(如LLaMA-3、Mistral)、OpenAI、Anthropic、QWen等。它还支持56+种常用数据集,包括HellaSwag、MMLU、GSM8K、GPQA、AGIEval、CEval和CMMLU等。

    以下是一个复杂的评估命令示例:

    CUDA_VISIBLE_DEVICES=0 python inference.py \
      -m llama-2-7b-hf \
      -d mmlu agieval:[English] \
      --model_type chat \
      --num_shot 5 \
      --ranking_type ppl_no_option

    这个命令在MMLU和AGIEval(英语部分)数据集上评估llama-2-7b-hf模型,使用5-shot设置和特定的排序类型。这就像是让你的AI助手参加一次综合能力考试,测试它在多个领域的表现。

    📊 性能展示:见证AI的进化

    以下是一些模型在不同任务上的表现:

    模型Hellaswag (0-shot)MMLU (5-shot)GSM (8-shot)
    GPT-3.5 Turbo79.9869.2575.13
    LLaMA-2 (7B)7645.9514.63

    这些数据展示了不同模型在各种任务上的能力。GPT-3.5 Turbo在所有任务上都表现出色,而LLaMA-2 (7B)虽然在某些任务上稍逊一筹,但考虑到它更小的模型大小,其表现也是相当不错的。

    🚄 高效评估:让AI思考如闪电般迅速

    LLMBox默认启用前缀缓存以提高评估效率,同时也支持vLLM。以下是不同方法的时间对比:

    模型效率方法Hellaswag (0-shot)MMLU (5-shot)GSM (8-shot)
    LLaMA-2 (7B)原始0:05:320:18:302:10:27
    LLaMA-2 (7B)vLLM0:06:370:14:550:03:36
    LLaMA-2 (7B)前缀缓存0:05:480:05:510:17:13

    从这些数据中我们可以看到,使用vLLM或前缀缓存可以显著减少评估时间,尤其是在处理较大数据集如GSM时。这就像是给你的AI助手配备了”超级大脑”,让它能够以惊人的速度处理复杂任务。

    要使用vLLM,你可以使用以下命令:

    python inference.py -m ../Llama-2-7b-hf -d mmlu:abstract_algebra,anatomy --vllm True

    如果你想使用量化评估,可以使用以下命令:

    python inference.py -m model -d dataset --load_in_4bits

    这些高级功能就像是为你的AI助手提供了”思维加速器”,让它能够更快速、更高效地完成各种任务。

    🧠 多样化评估方法:全方位检验AI能力

    LLMBox支持多种评估方法,适用于不同类型的数据集:

    • 对于GenerationDataset,使用generation方法。
    • 对于MultipleChoiceDataset,可以使用get_ppl(变体包括ppl_no_optionppl)或get_prob方法。

    默认情况下,MultipleChoiceDataset使用get_ppl方法和ppl_no_option排序类型,GenerationDataset使用generation方法。你可以通过以下命令更改评估方法:

    python inference.py -m model -d dataset --ranking_type prob

    LLMBox还支持上下文学习和思维链评估:

    python inference.py -m model -d dataset --kate
    python inference.py -m model -d dataset --cot least_to_most

    这些多样化的评估方法就像是为你的AI助手设计了一系列全面的”能力测试”,从不同角度检验它的理解力、推理能力和创造力。

    🌟 结语:AI新纪元的曙光

    LLMBox的出现,无疑为AI领域带来了一股清新的风。它不仅仅是一个工具,更是一个改变游戏规则的创新。通过LLMBox,无论你是AI研究者、开发者,还是对AI充满好奇的探索者,都能轻松驾驭大语言模型的力量。

    想象一下,在不久的将来,每个人都能轻松训练和使用自己的AI助手,解决各种复杂问题,创造令人惊叹的内容。这不再是科幻小说中的场景,而是触手可及的现实。LLMBox正在为我们开启一个AI民主化的新时代,在这个时代,人工智能的力量将不再局限于少数精英,而是成为每个人都能掌握的工具。

    让我们一起拥抱这个激动人心的未来,用LLMBox释放你的创造力,探索AI的无限可能!无论你是想要一个能写诗的AI,还是一个精通科学的虚拟助手,LLMBox都能帮你实现。现在,是时候开始你的AI冒险之旅了!

    📚 参考文献

    1. Brown, T. B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., … & Amodei, D. (2020). Language models are few-shot learners. arXiv preprint arXiv:2005.14165.
    2. Touvron, H., Lavril, T., Izacard, G., Martinet, X., Lachaux, M. A., Lacroix, T., … & Lample, G. (2023). Llama 2: Open foundation and fine-tuned chat models. arXiv preprint arXiv:2307.09288.
    3. Ouyang, L., Wu, J., Jiang, X., Almeida, D., Wainwright, C., Mishkin, P., … & Lowe, R. (2022). Training language models to follow instructions with human feedback. arXiv preprint arXiv:2203.02155.
    4. Wei, J., Wang, X., Schuurmans, D., Bosma, M., Xia, F., Chi, E., … & Le, Q. (2022). Chain-of-thought prompting elicits reasoning in large language models. arXiv preprint arXiv:2201.11903.
    5. Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., … & Chen, W. (2022). Lora: Low-rank adaptation of large language models. arXiv preprint arXiv:2106.09685.
  • 从头开发的大语言模型:YuLan-Chat的技术突破与应用前景

    在人工智能领域,大语言模型(Large Language Model, LLM)的发展如火如荼。近日,中国人民大学高瓴人工智能学院的研究团队发布了一款全新的开源大语言模型——YuLan-Chat,引起了学术界和产业界的广泛关注。这款模型不仅在技术上有诸多创新,更体现了中国科研人员在人工智能领域的雄心壮志。让我们一起来深入了解这个名为”玉兰”的AI助手背后的故事。

    玉兰绽放:一朵独特的AI之花

    “玉兰”这个名字的由来颇有意思。它并非随意取的,而是源自中国人民大学的校花——玉兰花。玉兰花素有”木本花卉之王”的美誉,象征着纯洁、高雅和坚韧。研究团队选择这个名字,无疑是希望他们开发的AI助手也能像玉兰花一样,在人工智能的广袤天地中绽放出独特的魅力。

    想象一下,在人工智能的花园里,各种各样的模型如繁花似锦。有些像是娇艳的玫瑰,吸引眼球;有些则像是坚韧的松柏,历久弥新。而YuLan-Chat,就好比是这个花园中的一株玉兰,它不张扬,却散发着独特的芬芳,吸引着那些真正懂得欣赏的人。

    技术创新:YuLan-Chat的三大特色

    YuLan-Chat的开发过程犹如精心培育一株珍稀植物。研究团队从零开始,一步一个脚印地构建这个模型。让我们来看看YuLan-Chat的三大技术特色:

    1. 双语能力的全面提升

    YuLan-Chat就像是一个精通中英双语的翻译官。研究团队在大规模的中英双语数据上进行了深入的预训练,这就好比是让YuLan-Chat在一个中英双语家庭中成长,自然而然地掌握了两种语言的精髓。这种双语能力的提升,使得YuLan-Chat在处理中英文任务时都能游刃有余,犹如一位能在中英两种语境中自如切换的文化大使。

    1. 课程学习:AI的”德智体美劳”全面发展

    YuLan-Chat的训练过程采用了一种叫做”课程学习”的方法。这就好比是为AI设计了一套完整的”教育课程”。就像人类学生需要学习德智体美劳全面发展一样,YuLan-Chat也经历了从基础到进阶的全面训练。

    这个”课程”包括了高质量的指令数据和人类偏好数据。可以想象,研究团队就像是一群耐心的老师,精心设计了各种”课程”,教导YuLan-Chat如何更好地理解人类的需求,如何提供有用、诚实且无害的回答。这种训练方法大大增强了YuLan-Chat在真实场景中的表现,使它不仅”学习成绩”好,还能成为一个”品学兼优”的AI助手。

    1. 扩展词表和上下文长度:让AI更懂”中国话”

    为了更好地支持中文,研究团队还专门为YuLan-Chat扩充了词表和上下文长度。这就好比是给YuLan-Chat配备了一本更加全面的”中文词典”,并且增强了它的”记忆力”。

    扩展词表,意味着YuLan-Chat能够理解和使用更多的中文词汇和表达方式。这就像是让一个外国人学习了更多的中国俚语和成语,能够更贴切地表达中国人的思维方式。

    而扩展上下文长度则相当于增强了YuLan-Chat的”短期记忆”。现在的YuLan-Chat能够处理长达4k个token的上下文,这意味着它在进行长篇对话或者处理复杂问题时,能够保持更长的”注意力”,不会轻易”忘记”之前的对话内容。

    模型家族:YuLan的成长历程

    YuLan-Chat的发展历程,就像是一个家族的成长史。从最初的YuLan-Chat-1系列,到后来的YuLan-Chat-2系列,再到最新的YuLan-Chat-3系列,每一代都有其独特的特点和进步。

    让我们用一个形象的比喻来理解这个家族的成长过程:

    • YuLan-Chat-1系列: 这就像是家族的第一代,刚刚起步,充满潜力。它们基于LLaMA模型,进行了初步的中英文指令微调,为家族奠定了基础。
    • YuLan-Chat-2系列: 这是家族的第二代,已经显示出不俗的实力。它们基于LLaMA-2模型,进行了更深入的双语继续预训练和指令微调,在各项基准测试中都有不错的表现。
    • YuLan-Chat-3系列: 这是目前家族的最新一代,代表着YuLan-Chat的最高水平。它完全从头训练,不再依赖于其他模型,体现了研究团队的独立创新能力。

    每一代的进步,都像是家族基因的优化和传承,让YuLan-Chat在AI的世界中越来越出色。

    性能评估:YuLan-Chat的实力展示

    要评估一个AI模型的能力,就好比是让学生参加各种考试。研究团队对YuLan-Chat进行了多项测试,包括MMLU、C-Eval和AGI-Eval-Gaokao等。这些测试涵盖了从基础知识到高级推理的各个方面,可以全面评估模型的能力。

    让我们用一些具体的例子来理解这些测试:

    1. MMLU测试:这就像是一场涵盖多个学科的综合考试。YuLan-Chat-3-12B在这个测试中的平均得分达到了55.7分,特别是在社会科学领域得分最高,达到64.3分。这说明YuLan-Chat不仅在自然科学方面有所建树,在人文社科领域也有不错的表现。
    2. C-Eval测试:这是一个专门针对中文能力的考试。YuLan-Chat-3-12B在这个测试中的平均得分高达50.5分,远超其他版本。特别是在社会科学领域,得分达到了惊人的61.8分。这充分证明了YuLan-Chat在理解和处理中文内容方面的卓越能力。
    3. AGI-Eval-Gaokao测试:这个测试就像是让AI参加中国高考。YuLan-Chat-3-12B在这个测试中的表现尤为亮眼,平均得分达到49.5分。特别是在历史科目上,得分高达69.4分,展现出了对中国历史文化的深刻理解。

    这些成绩单不仅仅是一串数字,它们展示了YuLan-Chat在各个领域的均衡发展。就像一个全面发展的学生,YuLan-Chat不仅在科学技术领域表现出色,在人文社科方面也有深厚的积累。这种全面性使得YuLan-Chat能够在各种场景下为用户提供高质量的服务。

    实际应用:YuLan-Chat如何改变我们的生活

    YuLan-Chat的强大能力不仅仅体现在各种测试中,更重要的是它如何在实际生活中发挥作用。让我们想象几个YuLan-Chat可能的应用场景:

    1. 教育辅助:想象一下,一个学生在准备高考时遇到了难题。他可以向YuLan-Chat寻求帮助。YuLan-Chat不仅能够解答问题,还能根据学生的理解程度,循序渐进地引导学生思考,真正达到”授人以渔”的效果。
    2. 跨语言交流:在国际商务场合,YuLan-Chat可以充当一个得力的翻译助手。它不仅能够准确翻译语言,还能理解不同文化背景下的微妙差异,帮助双方更好地沟通。
    3. 科研助手:对于研究人员来说,YuLan-Chat可以成为一个强大的辅助工具。它可以帮助研究人员快速梳理大量文献,提供研究思路,甚至协助撰写论文。
    4. 创意写作:对于作家或内容创作者,YuLan-Chat可以成为一个灵感的源泉。它可以提供各种创意点子,帮助突破写作瓶颈,甚至协助进行文学创作。
    5. 心理咨询:虽然YuLan-Chat不能替代专业的心理咨询师,但它可以成为一个初步的倾诉对象。它的理解能力和表达能力可以为用户提供情感支持和初步的建议。

    这些只是YuLan-Chat潜在应用的冰山一角。随着技术的不断进步和优化,YuLan-Chat在未来还将在更多领域发挥重要作用,为我们的生活带来更多便利和创新。

    未来展望:YuLan-Chat的无限可能

    YuLan-Chat的发展历程,就像是一朵玉兰花从含苞待放到盛开的过程。但是,这朵AI之花的绽放并非终点,而是新的起点。研究团队对YuLan-Chat的未来发展充满期待。

    首先,YuLan-Chat的语言能力还有很大的提升空间。虽然目前在中英双语方面表现出色,但未来可能会扩展到更多语言,成为一个真正的多语言AI助手。想象一下,未来的YuLan-Chat可能能够流利地用世界上大部分主要语言进行交流,成为跨文化交流的重要桥梁。

    其次,YuLan-Chat的知识面还可以进一步拓展。目前的测试结果显示,YuLan-Chat在社会科学领域表现尤为出色,但在STEM(科学、技术、工程、数学)领域还有提升空间。未来的研究可能会着重提升YuLan-Chat在这些领域的能力,使其成为一个真正的全能型AI助手。

    再者,YuLan-Chat的应用场景还可以进一步拓展。除了目前的文本交互,未来可能会融入更多的多模态能力,比如图像识别、语音交互等。这将大大拓展YuLan-Chat的应用范围,使其能够在更多领域发挥作用。

    最后,YuLan-Chat的伦理和安全性也将是未来研究的重点。如何确保AI在提供有用信息的同时,也能保持诚实、无害,避免产生偏见或歧视性内容,将是一个长期的研究课题。

    正如玉兰花象征着纯洁、高雅和坚韧,YuLan-Chat的未来发展也将秉承这些特质,不断进化,为人类社会带来更多价值。

    参考文献:

    1. RUC-GSAI. (2023). YuLan: An Open-Source Large Language Model. GitHub repository. https://github.com/RUC-GSAI/YuLan-Chat
    2. Hendrycks, D. et al. (2020). Measuring Massive Multitask Language Understanding. arXiv preprint arXiv:2009.03300.
    3. C-Eval Team. (2023). C-Eval: A Multi-Level Multi-Discipline Chinese Evaluation Suite for Foundation Models. https://cevalbenchmark.com/
    4. Microsoft Research. (2023). AGI-Eval: A Human-Centric Benchmark for Evaluating Foundation Models. https://github.com/microsoft/AGIEval