博客

  • OpenAI的迷失和微软的收获

    大家好,今天,我们将讨论OpenAI的迷失和微软的收获。

    OpenAI是一家非营利性人工智能研究公司,由埃隆·马斯克、山姆·阿尔特曼等人在2015年创立。OpenAI的使命是确保安全的人工通用智能的开发,并使全人类受益。

    然而,OpenAI的非营利性结构却导致了其内部的权力斗争。OpenAI的董事会认为,首席执行官山姆·阿尔特曼没有始终如一地与董事会坦诚沟通,因此在2023年11月将其解雇。

    微软是OpenAI的主要合作伙伴之一,它获得了OpenAI的所有知识产权的永久许可,包括源代码和模型权重。微软还向OpenAI提供了大量的资金和计算资源。

    OpenAI和微软的合作关系本应是互惠互利的,但由于OpenAI的内部问题,这种合作关系受到了影响。微软需要确保OpenAI能够继续开发其人工智能技术,而OpenAI则需要微软的资金和计算资源来支持其研究。

    在OpenAI的董事会解雇了阿尔特曼之后,微软迅速采取行动,与阿尔特曼和OpenAI的其他高管达成了协议,将他们招致麾下。

    微软的这一举动引起了业界的广泛关注。有人认为,微软这是捡了个大便宜,因为它获得了OpenAI的所有知识产权,而无需支付任何费用。也有人认为,微软的这一举动将进一步加剧人工智能领域的垄断。

    无论如何,微软的这一举动都将对人工智能领域的格局产生深远的影响。

    要点

    • OpenAI是一家非营利性人工智能研究公司,由埃隆·马斯克、山姆·阿尔特曼等人在2015年创立。
    • OpenAI的使命是确保安全的人工通用智能的开发,并使全人类受益。
    • OpenAI的非营利性结构导致了其内部的权力斗争。
    • OpenAI的董事会认为,首席执行官山姆·阿尔特曼没有始终如一地与董事会坦诚沟通,因此在2023年11月将其解雇。
    • 微软是OpenAI的主要合作伙伴之一,它获得了OpenAI的所有知识产权的永久许可,包括源代码和模型权重。
    • 微软还向OpenAI提供了大量的资金和计算资源。
    • OpenAI和微软的合作关系本应是互惠互利的,但由于OpenAI的内部问题,这种合作关系受到了影响。
    • 微软需要确保OpenAI能够继续开发其人工智能技术,而OpenAI则需要微软的资金和计算资源来支持其研究。
    • 在OpenAI的董事会解雇了阿尔特曼之后,微软迅速采取行动,与阿尔特曼和OpenAI的其他高管达成了协议,将他们招致麾下。
    • 微软的这一举动引起了业界的广泛关注。有人认为,微软这是捡了个大便宜,因为它获得了OpenAI的所有知识产权,而无需支付任何费用。也有人认为,微软的这一举动将进一步加剧人工智能领域的垄断。
    • 无论如何,微软的这一举动都将对人工智能领域的格局产生深远的影响。
  • 破解AI模型速度瓶颈:一种全新的“分组查询注意力”方法

    你是否曾经对人工智能模型的运算速度感到不耐烦,同时又希望它能保持高质量的预测结果?这可能听起来像是一个无法两全的问题,但科研人员们并没有停下探索的脚步。今天,我们要介绍的这篇研究报告,就给出了一个行之有效的解决方案。这篇研究名为 “GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints”,由来自Google Research的团队所撰写。他们提出了一种称为“分组查询注意力(Grouped-query attention, GQA)”的新方法,旨在解决Transformer模型中的一个关键问题,即如何在保持预测质量的同时,提高模型的运算速度。

    首先,让我们理解一下这个问题的背景。在Transformer模型中,一个关键的计算过程就是自回归解码器推理。这个过程需要大量的内存带宽来加载解码器权重和所有注意力键值,这就大大限制了模型的运算速度。为了解决这个问题,研究者们提出了多查询注意力(Multi-query attention, MQA)方法,它只使用一个键值对来大幅度提高解码器推理的速度。然而,MQA方法可能会导致预测质量下降,而且也不太适合用于训练单独的模型以提高推理速度。

    在这样的背景下,Google Research的团队提出了两个重要的贡献。首先,他们发现,可以使用少量的原始训练计算来将具有多头注意力(Multi-head attention, MHA)的语言模型检查点进行升级训练,使其能够使用MQA,这是一种非常成本有效的方法,可以同时获得高速的MQA和高质量的MHA检查点。其次,他们提出了分组查询注意力(GQA)的概念,这是一种在多头注意力和多查询注意力之间的插值方法,它为每组查询头部共享一个键和值头部。

    GQA的工作原理是将查询头部分成若干组,每组共享一个键头和值头。具有G组的GQA被称为GQA-G。GQA-1(具有一个组,因此具有一个键和值头)等同于MQA,而具有等于头部数量的组的GQA-H等同于MHA。通过使用中间数量的组,GQA可以产生一个质量比MQA高,但速度比MHA快的插值模型。此外,对于大型模型,GQA的优势更加明显,因此,我们期待GQA能在大型模型中提供一个特别好的权衡方案。

    在实验部分,研究者们使用了基于T5.1.1架构的所有模型,并对T5 Large和XXL的多头注意力版本,以及使用多查询和分组查询注意力的升级版T5 XXL进行了主要实验。实验结果表明,使用GQA的T5-XXL模型在各种不同的数据集上,包括CNN/Daily Mail, arXiv, PubMed, MediaSum, 和 MultiNews等新闻摘要数据集,以及WMT英德翻译数据集和TriviaQA问答数据集上,都保持了与多头注意力模型相近的质量,同时又具有与多查询注意力模型相近的速度。

    在AI领域,我们一直在寻找提高效率和质量的方法,而GQA的出现无疑为我们提供了一个新的可能。它不仅提高了模型的运算速度,而且还成功地保持了预测的质量。这使得GQA成为了提高AI模型性能的一种有力工具,我们有理由期待,这种方法将在未来的AI应用中发挥更大的作用。

    总的来说,这项研究的重要性在于,它不仅提供了一种提高AI模型速度的有效方法,而且这种方法还能保持模型的预测质量。这使得我们可以在实际应用中实现更快、更准确的AI模型,从而在各种场景中提供更好的服务。

    这就是今天的分享,希望你们能从中获取到有用的信息。我们将继续关注更多的人工智能研究,并与大家分享。感谢你们的倾听,我们下次见!

  • 从 LLAMA 到 LLAMA2:开源模型的进化之路

    大家好,欢迎来到我的博客!今天,我们要聊一聊有关两个开源语言模型的故事,它们分别是 LLAMA 和 LLAMA2。正如在科技世界里常见的,这两个模型的出现,都代表着一次重要的突破和进化。那么,它们是如何超越自身,再次突破技术瓶颈的呢?让我们一起探索吧。

    1. LLaMA:以开放和高效为目标的基础语言模型

    首先,我们来看看第一个主角 LLAMA。它仅仅使用公开可用的数据(数量高达数万亿 tokens)就训练出了效果超越 GPT-3 和 Chinchilla-70B PaLM-540B 的模型。最让人惊奇的是,它的体积比 GPT-3 小十倍,但效果更好。这是怎么做到的呢?

    LLaMA 的开发者们发现,给定一定的计算量预算,我们可以通过在较小的模型上训练更多的数据来获取最好的效果。这就是 LLAMA 所依据的尺度原则。

    为了训练 LLAMA,开发者们使用了多种来源的预训练数据,包括英文 CommonCrawl, Github, Wikipedia 等。每一种数据都经过了严格的清洗和筛选,以确保模型训练的质量。在训练时,每个 token 只训练一次,除了 Wikipedia 和 Books,训练了两次。

    LLaMA 的模型结构基于 transformer,在 GPT3、PaLM、GPTNeo 的基础上做出了改良。其中包括使用 RMSNorm 进行 Pre-normalization,使用 SwiGLU 替换 ReLU 作为激活函数,舍弃绝对位置编码,使用旋转位置编码等一系列创新手段。

    2. LLaMa 2:基础和微调并进的聊天模型

    接下来,我们来了解一下 LLAMA 的升级版本——LLAMA2。虽然 LLAMA1 的效果已经非常优秀,但是与闭源的“产品级”模型相比,如 ChatGPT、BARD、Claude,仍有一定的差距。因此 LLAMA2 的目标就是要尽可能地提升模型的性能,使其更符合人类的偏好。

    LLAMA2 的训练数据量增加了40%,达到了2万亿 tokens。同时,上下文长度翻倍,引入了 grouped-query attention 的新技术。这些改变使得 LLAMA2 在长数据的效果明显提升,而在短数据上的性能则没有下降。

    LLAMA2 在微调上也做了很多工作。它引用了 LLAMA1 中的 SFT 数据集设置,对模型进行了精细的调整。在收集数据时,采用了课程策略,逐渐将问题复杂化,使得模型能够更好地适应和处理各种问题。

    结语

    总的来说,LLAMA 和 LLAMA2 的出现,代表了开源模型的重大进步。他们的成功,得益于严谨的数据处理,创新的模型结构,以及精细的模型调整。这些都是我们在探索人工智能的道路上,值得学习和借鉴的经验。

    希望这篇博客能给你带来一些启发和灵感。我们下次再见!

  • 创新解决大模型长上下文计算挑战:HyperAttention解读

    大家好,我相信你们在使用人工智能应用的过程中,一定对其中的语言处理功能印象深刻。它们可以帮助我们理解复杂的文本,生成文章甚至进行对话。但你可能不知道,这背后有一种重要的模型叫做“大型语言模型”。近日,一项名为“HyperAttention”的研究引起了我的注意,其主旨在于改善这些大型语言模型处理长篇文章时的效率。这个方法超越了既有技术限制,实现了近线性时间的长文本处理。听起来是不是很神奇?接下来,让我们一起深入了解一下。

    首先,我们需要明白一点,就是处理长上下文的计算挑战。大型语言模型(LLMs)在处理长文本时,必须应对着一个诸多复杂因素的大矩阵,这个矩阵的计算和存储需求都是巨大的。就像你试图一口气读完一本厚厚的百科全书,不仅费时费力,还需要巨大的记忆力。这就是大型语言模型面临的挑战。

    为了迎接这个挑战,研究人员提出了一种新颖的近似注意力机制,被命名为“HyperAttention”。这个方法的核心是引入了两个参数,用来衡量矩阵的复杂度。并且,HyperAttention的设计非常模块化,易于与其他快速低水平实现进行整合,特别是FlashAttention。根据实验结果,HyperAttention在处理长篇章数据集时,表现出了显著的速度优势。

    研究者们用一个例子来证明这种优势:在一个名为ChatGLM的模型中,使用HyperAttention后,处理长达32k的文本所需的时间减少了50%,而生成的文本复杂度只是从5.6提高到6.3。当处理更长的文本,例如长度为131k的文本时,HyperAttention甚至能在单个注意力层上提供5倍的速度提升。

    HyperAttention的出现,不仅解决了大型语言模型处理长文本时的速度问题,还开启了新的研究方向。对于那些需要处理大量文本数据的应用,比如自动翻译、文章生成等,HyperAttention无疑将带来巨大的改变。

  • HyperAttention:长上下文友好、LLM推理提速50%

    大家好,欢迎收听本期节目。今天,我们将一起走进 HyperAttention 的奇妙世界,了解这种全新近似注意力机制如何让大型语言模型在长上下文下也能飞速推理。

    什么是 HyperAttention?

    HyperAttention 是一种近似注意力机制,它可以显著提升大型语言模型在长上下文下的推理速度。传统的注意力机制在计算时需要遍历整个输入序列,这使得计算成本非常高。而 HyperAttention 则通过对注意力矩阵进行近似,从而大幅降低计算成本。

    HyperAttention 的工作原理

    HyperAttention 的工作原理并不复杂。它首先会对注意力矩阵进行分解,然后对每个子矩阵进行近似。最后,将所有子矩阵的近似结果组合起来,得到最终的注意力矩阵。

    HyperAttention 的优势

    HyperAttention 的优势非常明显。它可以显著提升大型语言模型在长上下文下的推理速度,同时还能保持较高的准确率。在某些情况下,HyperAttention 甚至可以将推理速度提升 50% 以上。

    HyperAttention 的应用

    HyperAttention 可以广泛应用于各种自然语言处理任务,如机器翻译、问答系统、文本摘要等。它可以帮助这些任务在处理长上下文数据时获得更高的效率和准确率。

    HyperAttention 的未来

    HyperAttention 是一种非常有潜力的近似注意力机制,它有望在未来得到更广泛的应用。随着研究的不断深入,HyperAttention 的性能还将进一步提升,从而为大型语言模型的应用开辟新的可能性。

  • 《机器学习实战中文版》带你轻松入门机器学习

    AAAMLP 中译版 (ytzfhqs.github.io)

    大家好,欢迎收听本期播客。今天,我们将介绍一本关于机器学习的书籍:《机器学习实战中文版》。

    《机器学习实战》介绍

    《机器学习实战》是由Abhishek Thakur所著的一本关于机器学习的书籍。Abhishek Thakur是挪威boost公司首席数据科学家,在Kaggle上取得过辉煌的成绩。

    这本书的英文原版于2017年出版,一经推出便受到了广大读者的喜爱。中文版由电子工业出版社出版,于2023年9月正式上市。

    《机器学习实战》的内容

    《机器学习实战》共12章,内容涵盖了机器学习的基础知识、算法、实战技巧等。

    前4章介绍了机器学习的基础知识,包括准备环境、有监督和无监督学习、交叉检验和评估指标。

    第5章到第10章介绍了机器学习的各种算法,包括处理分类变量、特征工程、特征选择、超参数优化、图像分类和分割方法、文本分类或回归方法。

    最后2章介绍了机器学习的实战技巧,包括组合和堆叠方法、可重复代码和模型方法。

    《机器学习实战》的特点

    《机器学习实战》的特点是内容全面、深入浅出、实战性强。

    • 内容全面:本书涵盖了机器学习的基础知识、算法、实战技巧等各个方面,是一本全面的机器学习教程。
    • 深入浅出:本书的语言通俗易懂,即使是没有任何机器学习基础的读者也能轻松入门。
    • 实战性强:本书提供了大量的代码示例,读者可以边学边练,快速掌握机器学习的实战技巧。

    《机器学习实战》的意义

    《机器学习实战》是一本非常适合机器学习初学者阅读的书籍。它内容全面、深入浅出、实战性强,能够帮助读者快速入门机器学习。

    如果你想学习机器学习,那么《机器学习实战》绝对是你不容错过的书籍。

    结语

    好了,以上就是本期播客的内容。感谢您的收听。我们下期再见。

    ytzfhqs/AAAMLP-CN: Approaching (Almost) Any Machine Learning Problem中译版,在线文档地址:https://ytzfhqs.github.io/AAAMLP-CN/

  • “PrivateGPT”:您的私人文档助手

    大家好,今天,我们要向大家介绍的是一款非常实用的AI工具——“PrivateGPT”。它可以帮助您以100%的私密性,利用大型语言模型(LLMs)的力量来处理您的文档。

    PrivateGPT的诞生

    “PrivateGPT”的诞生源于一个明确的需求:在当今社会,生成式AI技术正在飞速发展,但由于隐私问题,许多公司和行业,比如医疗或法律领域,无法充分利用这项技术。

    PrivateGPT的优势

    “PrivateGPT”的优势在于,它完全离线运行,这意味着您的数据始终处于您的控制之下,不会泄露给任何第三方。

    PrivateGPT的功能

    “PrivateGPT”提供了一个API,包含了构建私有、语境感知AI应用程序所需的所有基本功能。它遵循并扩展了OpenAI的API标准,支持普通和流式响应。

    PrivateGPT的未来

    “PrivateGPT”正在不断发展,目标是成为生成式AI模型和原语的网关,包括补全、文档嵌入、RAG管道和其他低级构建块。

    如何使用PrivateGPT

    有关“PrivateGPT”的更多信息,包括安装、依赖项、配置、运行服务器、部署选项、嵌入本地文档、API详细信息和UI功能,请访问我们的官方文档网站。

    结语

    “PrivateGPT”是一款功能强大且易于使用的工具,可以帮助您以100%的私密性来处理您的文档。如果您正在寻找一种安全可靠的方式来利用生成式AI技术,那么“PrivateGPT”绝对是您的最佳选择。

  • 让 PHP 跑的更快

    1. HipHop Virtual Machine (HHVM)

    HHVM 是一个开源的 PHP 编译器,可以将 PHP 代码编译成字节码,然后由虚拟机执行。它可以显著提高 PHP 的执行速度,并且支持多种语言特性,例如类型检查和协程。

    2. Phalanger

    Phalanger 是一个将 PHP 编译成 .NET 程序集的编译器。它可以显著提高 PHP 的执行速度,并且支持多种语言特性,例如类型检查和泛型。

    3. Quercus

    Quercus 是一个将 PHP 编译成 Java 字节码的编译器。它可以显著提高 PHP 的执行速度,并且支持多种语言特性,例如类型检查和异常处理。

    4. Peachpie

    Peachpie 是一个将 PHP 编译成 C# 程序集的编译器。它可以显著提高 PHP 的执行速度,并且支持多种语言特性,例如类型检查和泛型。

    5. Swoole

    Swoole 是一个高性能的 PHP 协程库,可以显著提高 PHP 的并发能力。它支持多种语言特性,例如协程、事件驱动和非阻塞 I/O。

    这些编译工具可以帮助您提高 PHP 的执行速度,并且支持多种语言特性。您可以根据自己的需要选择合适的编译工具。

  • 人工智能的新篇章:从 RAG 到 Self-RAG

    欢迎来到这个关于人工智能进步的奇妙旅程!今天,让我们一起探索从 RAG (Retrieval Augmented Generation) 到 Self-RAG 的知识增强过程。这其中蕴含的深刻原理和广阔应用,将带你领略新一波 AI 风暴的来临。

    RAG:知识增强的先驱

    RAG,或称检索增强生成,是一种先进的机器学习技术。在回答问题或生成文本时,它会先从大量文档中检索出相关的信息,然后基于这些信息生成回答或文本,从而提高预测质量。这意味着开发者无需为每一个特定任务重新训练整个大模型,只需要接入知识库即可。

    RAG 对于知识密集型的任务尤为有用。那么,你可能会问,如果我们已经有了强大的语言模型(LLM),为什么还需要 RAG 呢?其实,RAG 主要解决了 LLM 所面临的三个问题:

    1. 幻觉问题:LLM 在生成文本时,有可能会产生“一本正经的胡说八道”的现象。
    2. 时效性问题:大模型训练的周期较长,因此无法处理具有时效性的数据,例如“帮我推荐几部正在热映的电影?”。
    3. 数据安全问题:通用的 LLM 无法使用企业内部数据和用户数据,因此企业在使用 LLM 时,需要将数据全部放在本地,保护数据安全。

    RAG 与 SFT:两者的比较

    那么,对于 LLM 的上述问题,我们是否有其他解决办法呢?SFT 确实是一种常见的解决方案,但是 RAG 和 SFT 在多个维度上都有各自的优点和弱点。例如,RAG 能够使用动态数据,并且能够利用外部资源增强 LLM 的能力。相较之下,SFT 更适合处理静态数据,它可以对 LLM 进行微调,但对于频繁变动的数据源来说可能不太实用。

    当然,RAG 和 SFT 并非非此即彼,合理的做法是根据业务需求,结合两者的优点进行使用。在这个过程中,我们也可以发现 RAG 具有以下优点:

    • 可扩展性:降低模型大小和训练成本,并允许轻松扩展知识。
    • 准确性:模型基于事实并减少幻觉。
    • 可控性:允许更新或定制知识。
    • 可解释性:检索到的项目作为模型预测中来源的参考。
    • 多功能性:RAG 可以针对多种任务进行微调和定制,包括 QA、文本摘要、对话系统等。

    RAG:实现步骤与应用案例

    RAG 的实现主要包括三个步骤:数据索引、检索和生成。而数据索引的构建又可以进一步分为数据提取、分块和向量化三个阶段。这些步骤中涉及到的数据处理、文本分块以及数据向量化等技术,都是人工智能领域的重要基础。

    让我们在这个令人兴奋的 AI 旅程中继续前进。通过 RAG,我们可以实现一系列应用,包括但不限于:

    • 问答系统:基于检索增强生成的问答系统可以从大量的知识库中找到最相关的答案,提供准确的信息。
    • 文本生成:利用 RAG,我们可以生成具有深度和广度的文章,丰富读者的阅读体验。
    • 对话系统:RAG 可以让对话系统更加智能,更好地理解和满足用户的需求。

    结语:向 Self-RAG 的未来

    RAG 无疑是一种强大的工具,但我们也看到了它的一些局限性。比如,它依赖于手动标注的知识库,且在遇到大量数据时,可能会面临检索效率低下的问题。因此,我们需要更进一步,探索如何实现自我增强的 RAG,即 Self-RAG。

    在这个正在快速发展的 AI 时代,一种新的技术或模型的出现,可能会引发一场革命。对于我们来说,最重要的是理解并掌握这些新技术,以便在未来的 AI 风暴中立于不败之地。

    这就是我们今天的内容,希望你能从中获得启发和收获。在人工智能的海洋中,让我们一起乘风破浪,探索更多的可能!

  • 人工智能的新篇章:从 RAG 到 Self-RAG

    你可能听说过人工智能、机器学习、深度学习等概念,但你知道 RAG(Retrieval Augmented Generation,检索增强生成)和 Self-RAG 吗?今天,我们就一起深入了解一下这两个新兴的人工智能领域概念。

    RAG:提升人工智能的知识增强能力

    RAG 是一种让大型语言模型 (LLM) 在回答问题或生成文本时,先从大量文档中检索出相关的信息,然后基于这些信息生成回答或文本的方法。这种方法提高了预测的质量,使得开发者不必为每一个特定的任务重新训练整个大型模型,只需要外挂上知识库,即可为模型提供额外的信息输入,提高其回答的准确性。RAG 模型尤其适合知识密集型的任务。

    然而,尽管 LLM 具有强大的能力,仍然存在一些问题需要 RAG 解决。例如,LLM 在生成文本时,可能会产生一些幻觉问题;大型模型的训练成本高,更新周期长,对于时效性强的数据处理能力有限;通用的 LLM 没有企业内部数据和用户数据,如何在保证数据安全的同时使用 LLM 成为了一个问题。

    RAG 与 SFT:两种方法的对比

    实际上,SFT(Supervised Fine-Tuning,监督微调)是解决 LLM 存在问题的另一种常见方法。比较起来,RAG 和 SFT 各有特长。RAG 适合动态数据,擅长利用外部资源,适用于知识密集型任务,而 SFT 可以对 LLM 进行微调以对齐预训练学到的外部知识,优于定制模型的行为或写作风格。两者并非相互排斥,而是可以根据业务需要,结合使用。

    RAG 的应用及挑战

    RAG 具有诸多优点,例如可扩展性、准确性、可控性、可解释性以及多功能性。例如,ChatPDF 就是一个典型的 RAG 应用案例,该系统首先读取 PDF 文件,将其转换为可处理的文本格式,然后对提取出来的文本进行清理和标准化。当用户提出问题时,ChatPDF 使用 OpenAI 的 Embeddings API 将问题转换为一个向量,并与每个分段的向量进行比较,以找到最相似的分段。最后,ChatPDF 会将 ChatGPT 生成的答案返回给用户,完成一次查询。

    然而,RAG 也面临一些挑战。例如,检索效果依赖 embedding 和检索算法,目前可能检索到无关信息,反而对输出有负面影响;大模型如何利用检索到的信息仍是黑盒的,可能仍存在不准确(甚至生成的文本与检索信息相冲突)。

    Self-RAG:主动智能的新篇章

    与 RAG 不同,Self-RAG 是更加主动和智能的实现方式。它会首先判断是否需要额外检索事实性信息,当有需要时才进行检索,并对检索到的所有任务进行评估,最后生成结果会引用相关片段,以便于查证事实。Self-RAG 的这种自我反思和主动检索的方式,有助于提高模型的准确性和可靠性。

    Self-RAG 的一个重要创新是反思字符,这些特殊标记用于检查模型的输出。它们分为 Retrieve 和 Critique 两种类型,用于判断是否需要检索更多信息,以及检索到的信息与输出之间的关系。

    训练 Self-RAG 的过程中,我们需要让模型学会生成带有反思字符的文本。这种训练过程需要在一个包含预测的检索段落和反思字符的语料库上进行。在训练结束后,我们得到的模型可以自我评估输出,并在推理过程中自我调整,以达到更精细的输出生成。

    一个简单的例子

    让我们来看一个 Self-RAG 的例子,帮助我们更好地理解其工作原理。我们假设有一个问题:”Can you tell me the difference between llamas and alpacas?”,以及一个检索到的段落:”The alpaca (Lama pacos) is a species of South American camelid mammal. It is similar to, and often confused with, the llama. Alpacas are considerably smaller than llamas, and unlike llamas, they were not bred to be working animals, but were bred specifically for their fiber.”。

    首先,我们把问题和段落作为提示输入到模型中,然后让模型生成返回结果。此时,Self-RAG 就会使用反思字符来自我评估输出,使其在推理过程中具有适应性。根据任务的不同,可以定制模型,通过检索更多段落来优先考虑事实准确性,或强调开放式任务的创造力。

    结语

    RAG 和 Self-RAG 的出现,进一步拓展了人工智能的边界,使得我们的机器能够更好地理解世界,更准确地回答问题。然而,这还只是开始,人工智能的未来还有无数的可能性等待我们去探索。让我们一起期待未来的到来,期待人工智能能为我们的生活带来更多的便利和惊喜。

    +参考资料:原文链接 https://mp.weixin.qq.com/s/tpAJww8gs8uurEidRWSmwA

  • 【重磅】从 RAG 到 Self-RAG:LLM 的知识增强

    大家好,欢迎来到「AI与算法学习」!今天,我们将一起探索 LLM(大型语言模型)知识增强的新篇章——从 RAG 到 Self-RAG。

    RAG:检索增强生成

    RAG(Retrieval Augmented Generation)是一种将检索与生成相结合的技术,旨在提高 LLM 的准确性和可靠性。RAG 的工作原理是:先从大量文档中检索出与给定问题相关的片段,然后将这些片段作为输入,由 LLM 生成最终的回答。

    Self-RAG:自我反思检索生成

    Self-RAG 是 RAG 的一个改进版本,它通过引入「反思字符」来实现自我评估和输出控制。反思字符是一种特殊的标记,可以帮助模型判断输出是否相关、完整,以及是否需要额外的检索。

    Self-RAG 的优势

    与传统的 RAG 方法相比,Self-RAG 具有以下优势:

    • 更主动和智能:Self-RAG 可以根据任务的不同,主动决定是否需要检索额外的信息,以及检索哪些信息。
    • 更灵活和可控:Self-RAG 可以通过调整反思字符的权重来定制模型的行为,使其更加符合特定的需求。
    • 更具解释性:Self-RAG 通过反思字符来解释模型的输出,使我们能够更好地理解模型的决策过程。

    Self-RAG 的应用

    Self-RAG 可以应用于各种各样的任务,包括:

    • 问答:Self-RAG 可以从外部文档中检索事实信息,并将其与 LLM 的输出相结合,生成更准确和完整的回答。
    • 文本摘要:Self-RAG 可以从长篇文档中提取关键信息,并将其浓缩成更短、更易读的摘要。
    • 对话系统:Self-RAG 可以利用外部知识来生成更智能、更人性化的对话。

    结语

    RAG 和 Self-RAG 是 LLM 知识增强领域的重要技术。它们通过将检索与生成相结合,显著提高了 LLM 的准确性和可靠性。随着这些技术的不断发展,我们将看到 LLM 在越来越多的领域发挥作用。

    扩展阅读

  • Elon Musk的新项目XAI “Gork”: 强大的人工智能系统

    大家好!今天我们要来了解一个引人注目的话题,那就是科技创新巨头Elon Musk的全新项目——XAI “Gork”。这是一款全新的人工智能系统,其目标竟然是与OpenAI的ChatGPT一较高下。现在就和我一起,深入了解这款即将改变AI领域格局的产品。

    首先,我们来看看Gork的基础。它基于神经网络和强化学习,这是Musk的另一家公司Neuralink在脑-机接口领域的重大突破。这种集成使Gork能够实时感知用户的思维和情绪,从而对用户有更为微妙的理解。

    Gork的特性真是令人惊叹。首先,它具有卓越的多模态能力,可以理解并生成文本、图像,甚至音频。这一特性无疑将为内容生成、虚拟现实等领域带来深远影响。其次,Gork拥有庞大的知识库,能实时从互联网更新信息,为用户提供准确且最新的回应。此外,Gork的对话技巧可以媲美,甚至超越ChatGPT,它能进行自然且连贯的对话,成为聊天机器人、客户服务和其他交互应用的理想选择。最后,Gork允许用户对其行为和回应进行微调,使开发者能够根据特定任务或行业进行定制。

    Gork的潜在影响也是不可忽视的。首先,Gork的出现可能会打破AI市场的格局,对已有模型形成挑战,推动该领域的竞争和创新。其次,Gork的多模态能力为新应用开启了大门,例如,具有人类理解上下文能力的虚拟助手,以及能同时生成文本、图像和音频的内容创作工具。然而,任何先进的AI系统都会引发伦理问题。Gork的模仿人类对话的能力和其广泛的知识库可能会被用于传播错误信息或进行有害活动。此外,依赖AI的行业,如医疗、金融和教育,可能会对Gork的定制功能感到非常满意,这可能会促使这些行业快速采用并将该模型集成到各个领域。

    让我们再深入了解一下Gork的技术特点。Gork的架构融合了深度学习和神经网络的最新进展。它采用了与ChatGPT类似的基于Transformer的模型,但加入了一些独特的元素。它使用了一种专有的Transformer架构变体,即“GorkNet”,该架构旨在增强上下文理解和多模态能力。

    Gork的训练方法也与ChatGPT有所不同。同时,Gork的大量数据源也引发了关于数据隐私和伦理问题的争论。然而,Musk公开表示,Gork的训练哲学是以“Neural Lace”为中心,这是一个他一直与之相关联的概念。这种哲学旨在确保Gork的学习过程紧密模拟人脑,使其比竞争对手更具适应性和对上下文的理解。


    Elon Musk的XAI “Gork” 是一个雄心勃勃的项目,旨在推动人工智能领域的发展,挑战已有的AI模型,并开启新的应用可能性。无论你是AI开发者,还是对AI技术感兴趣的观察者,Gork的出现都值得我们密切关注。随着Gork的进一步开发和改进,我们有理由期待它将在未来改变我们与AI的交互方式,并推动AI技术的进一步创新。

  • 【已翻车】零一万物领跑AI新纪元:Yi系列大模型首发,刷新中英文处理能力新高度

    号称全球最强的国产 AI 模型竟然套壳LLaMA!


    大家好,有一份重磅新闻要分享给大家!零一万物,这个在AI领域深耕多年的公司,刚刚发布了他们的首款开源大模型:Yi系列。这一系列的模型包括Yi-34B和Yi-6B,其中Yi-34B的表现更是令人瞩目。

    首先,让我们看看这两款模型的强大之处。你有没有想过人工智能可以一次理解两本《三体》那么长的小说,或者超过1000页的PDF文档呢?Yi-34B做到了。它有200K的上下文窗口,可以处理大约40万汉字的超长文本输入。对于需要处理长篇中文文档、书籍或报告的场景,Yi-34B无疑是一个强大的工具。

    而在中英文处理能力方面,Yi-34B更是达到了一个新的高度。在Hugging Face英文测试榜单中,Yi-34B位列第一。在中文方面,Yi-34B在C-Eval中文能力排行榜上超越了所有开源模型,包括GPT-4。无论是在CMMLU、E-Eval、Gaokao等中文评测指标上,还是在BooIQ、OBQA两个中文问答指标上,Yi-34B和Yi-6B的表现都无愧于它们的名字。

    这样的成绩,离不开零一万物的技术创新。他们自主研发的规模化训练实验平台和智能数据处理管线,以及强大的AI基础设施,都为Yi系列的训练提供了坚实的支撑。

    但零一万物并没有就此止步。他们正在积极研究专门处理数学问题的大模型MammoTH。同时,未来的Yi系列还将推出专长代码和数学的继续训练模型。

    Yi系列的发布,无疑是人工智能领域的一大里程碑。它展示了零一万物的技术实力,也为我们揭示了人工智能的无限可能性。让我们期待Yi系列在未来能带来更多的惊喜和突破!

    01-ai/Yi-34B-200K · Hugging Face

  • 让我们一起探索 WordPress 插件开发的神秘之旅 — 钩子(Hooks)

    你是一名 WordPress 开发者,或者是一个对 WordPress 插件开发充满好奇的新手吗?如果是,那么你来对了地方。让我们一起踏上探索 WordPress 插件开发的神秘之旅。今天我们将重点了解一个关键的概念 — 钩子(Hooks)。

    在插件开发的世界中,钩子就像是一条纽带,它将你的代码与 WordPress 的核心代码相连接,使之成为 WordPress 功能的一部分,而无需直接修改核心代码。这种设计使得用户可以方便地升级到 WordPress 的新版本,而无需修改任何代码。

    钩子是如何工作的?

    钩子的工作原理非常简单:当 WordPress 的工作流程到达某一点时,它会检查是否有任何函数需要”钩入”(即插入)到这一点。如果有,这些函数就会被执行。这就是所谓的“动作钩子”。

    另一种类型的钩子是“过滤器钩子”。这种钩子允许你修改 WordPress 生成的数据,然后返回修改后的数据。这使得你可以在不改变原始数据的情况下,改变数据的显示方式。

    钩子在插件开发中的重要性

    没有钩子,插件就无法改变 WordPress 的功能。钩子系统贯穿整个插件开发过程,几乎每一个插件的开发中都会用到。在你学会了钩子的用法后,你就会明白为什么 WordPress 这个平台这么强大,并有上千个插件供几百万用户使用了。

    如何在插件中使用钩子?

    在你的插件中使用钩子非常简单。首先,你需要确定你需要在何处插入代码。然后,你需要创建一个函数,这个函数将包含你需要执行的代码。最后,你需要告诉 WordPress 在何时执行你的函数,这就是你需要使用的动作钩子。

    过滤器钩子的使用方式几乎相同。你需要创建一个函数,这个函数会接收原始数据,修改它,然后返回。然后,你需要告诉 WordPress 在何时执行你的函数,这就是你需要使用的过滤器钩子。

    如何在类中使用钩子?

    在类中使用钩子与在函数中使用钩子非常相似。你只需要在添加动作或过滤器时,将函数名替换为一个数组,数组的第一个元素是类的实例(通常是 $this),第二个元素是方法名。

    在 WordPress 中,过滤器钩子(Filter Hook)是一种用于修改或过滤数据的机制。它允许开发者在特定的时间点拦截和修改数据,并返回修改后的结果。过滤器钩子广泛应用于 WordPress 的核心功能和插件开发中,提供了一种灵活的方式来自定义和扩展 WordPress 的行为。

    过滤器钩子包含两个关键元素:钩子名称和回调函数。钩子名称是用来标识特定的过滤器的字符串,而回调函数则是在钩子触发时执行的代码。回调函数接受一个或多个参数,并返回经过修改后的数据。

    下面是一个示例,演示了如何创建并使用一个过滤器钩子:

    // 创建一个过滤器钩子
    function my_custom_filter( $data ) {
        // 修改数据
        $modified_data = $data . ' (Modified)';
        
        // 返回修改后的结果
        return $modified_data;
    }
    add_filter( 'my_custom_filter_hook', 'my_custom_filter' );
    
    // 在钩子触发时调用回调函数
    $data = 'Hello';
    $filtered_data = apply_filters( 'my_custom_filter_hook', $data );
    
    // 输出修改后的结果
    echo $filtered_data; // 输出:Hello (Modified)
    

    在上面的示例中,我们首先定义了一个名为 my_custom_filter 的回调函数,它接受一个参数 $data 并返回修改后的结果。然后,我们使用 add_filter 函数将这个回调函数添加到名为 my_custom_filter_hook 的过滤器钩子上。

    最后,我们使用 apply_filters 函数来触发钩子并调用回调函数。我们将字符串 'Hello' 作为参数传递给 apply_filters 函数,然后它将调用 my_custom_filter 函数并返回修改后的结果。最后,我们将修改后的结果输出到屏幕上。

    通过使用过滤器钩子,您可以在 WordPress 中的许多地方拦截和修改数据。这使得您能够以非常灵活的方式自定义和扩展 WordPress 的功能,无需修改核心代码或插件的源代码。

    创建自定义钩子

    作为插件开发者,你不仅可以使用 WordPress 内置的钩子,还可以创建自己的钩子,供其他插件和模板使用。这使得你的插件更灵活,更易于扩展。

    在哪里可以找到钩子?

    你可以在 WordPress 的核心代码中找到所有的钩子,或者在网上查找钩子的参考列表。你也可以搜索如 “do_action”、”do_action_ref_array”、”apply_filters”、”apply_filters_ref_array” 等关键字,以找到更多的钩子。

    掌握了钩子的使用,你就拥有了改变 WordPress 功能的强大工具。所以,让我们一起开始这段神奇的插件开发之旅吧!希望你在这个过程中找到乐趣,并拥有一次丰富的学习体验。

  • 钩子(Hooks):WordPress 插件开发的神器

    各位WordPress的同仁们,你们是否曾被插件开发中的一些问题困扰,想要修改WordPress的工作流程却又不敢动核心代码?今天,我要给大家介绍一个强大的工具,那就是我们的主角——钩子(Hooks)。它就如同一把神奇的钥匙,能让我们无需直接修改核心代码,就可以改变WordPress的工作方式。这将使得我们在升级WordPress时无需担心代码的兼容问题。

    钩子:WordPress的精髓

    钩子是WordPress的精髓所在,它允许我们在插件开发中插入代码,改变WordPress的工作流程。这样,我们就可以在不直接修改核心代码的情况下,方便的升级WordPress的新版本,而不需要修改任何代码。

    如果我们直接修改了核心代码,那么在下一次WordPress升级时,所有的改动就会被覆盖掉。而使用钩子,我们可以在核心目录之外单独开发插件,这样就保证了代码在升级时的安全性。

    没有钩子,插件就无法改变WordPress的功能。钩子系统会贯穿整个插件的开发过程,而且在几乎每一个插件的开发中都会用到。掌握了钩子的用法,你就会明白为什么WordPress这个平台这么强大,并有上千个插件供几百万用户使用。

    两类钩子:动作钩子和过滤器钩子

    WordPress主要有两种类型的钩子:动作钩子和过滤器钩子。动作钩子(Action Hooks)让我们可以在特定的时刻执行一个函数,而过滤器钩子(Filter Hooks)则让我们可以操作通过钩子的输出。这两种钩子都是开发插件时的重要工具。

    动作钩子让你可以在WordPress加载过程中或者当某个事件发生的特定时刻触发一个函数。比如,你可能想要在WordPress加载一个页面或者保存一篇文章时执行一个函数。

    过滤器钩子则让你可以对通过钩子的数据进行修改。比如,你可以修改文章的内容,或者更改网站的标题等。

    钩子的使用

    要使用钩子,我们需要使用到 do_action() 和 add_action() 这两个函数。do_action() 是触发一个动作钩子,而 add_action() 是向一个动作钩子添加一个函数。

    例如,我们可以在前台的 <head> 里面添加一个名为 wp_head 的钩子,这个钩子经常被用来添加 meta 信息,样式表,和 js 脚本。

      do_action('wp_head');
    

    当这段代码在WordPress中执行时,它会寻找任何为 wp_head 动作钩子注册的动作,然后按照特定顺序执行它们。

    要向一个动作钩子添加一个函数,我们需要使用 add_action() 函数。例如,我们可以向 wp_footer 钩子添加一个函数,这个函数会在每次页面加载时执行。

    add_action( 'wp_footer', 'your_function' );
    

    其中,'wp_footer' 是你的函数执行时的动作钩子的名称,'your_function' 是你希望WordPress调用的函数名。

    结语

    钩子是WordPress插件开发中的一个强大工具,它让我们能在不改变核心代码的情况下,改变WordPress的工作流程。

  • AgentVerse:开启多智能体交互的新篇章

    欢迎来到AgentVerse!在这个充满可能性的世界中,我们致力于为大型语言模型(LLMs)提供一个自定义的多智能体环境。那么什么是AgentVerse呢?它是一个强大的框架,旨在简化为LLMs创建自定义多智能体环境的过程。这里,你可以快速、低成本地开发和定制你所需的环境,专注于你的研究,而不被实现细节所困扰。

    AgentVerse的特色

    AgentVerse的主要优势在于其高效的环境构建能力和可定制的组件。我们的框架提供了一系列基础构建模块,使得创建多智能体环境变得轻而易举。只需在配置文件中写入几行,你就可以轻松建立如LLMs的聊天室这样的基本环境。此外,AgentVerse还支持多智能体环境的工具,当前我们支持BMTools中提供的工具。

    最新消息

    我们在AgentVerse的开发过程中取得了一些重要的进展。首先,我们非常兴奋地分享我们的AI开源社区hugging face: AgentVerse。你可以在提供openai API密钥和openai组织代码后,尝试NLP Classroom和Prisoner’s Dilemma两个模拟应用程序。其次,我们还发布了一篇与本仓库相关的进行中的论文,详细介绍了AgentVerse的任务解决框架。我们还为你们提供了一个简单的H5宝可梦游戏,该游戏允许与宝可梦中的角色互动!

    开始使用

    要开始使用AgentVerse,首先你需要安装它。你可以通过

    pip install -U agentverse

    命令来安装,或者通过手动克隆最新的仓库来安装此包。然后,你需要按照我们的指示,导出你的OpenAI API密钥。如果你想使用BMTools提供的工具,你还需要安装BMTools。

    安装完成后,你就可以开始创建你的多智能体环境了。我们在agentverse/tasks目录中提供了一些示例,你可以参考这些示例来创建你自己的环境。例如,你可以创建一个教室环境,其中有一个智能体扮演教授的角色,其他的智能体扮演学生的角色。或者,你也可以创建一个更复杂的环境,例如一个数据库诊断环境,其中一个智能体扮演首席数据库管理员的角色,其他的智能体扮演内存和CPU智能体的角色。

    总的来说,无论你的需求是什么,AgentVerse都能提供一个灵活且可扩展的框架,让你能够轻松地构建和定制自己的多智能体环境。

  • 零一万物(01.AI)推出全新AI大模型:Yi系列

    欢迎诸位,我今天要分享的是一个振奋人心的新闻:零一万物(01.AI),一个全球领先的AI技术与应用公司,刚刚发布了它们新一代的AI大模型——Yi系列。Yi系列模型是一组全新的大型语言模型,它们的参数规模分别为60亿(Yi-6B)和340亿(Yi-34B)。而且,它们都支持在推理阶段将序列长度扩展至32K。

    01-ai/Yi-34B · Hugging Face

    一、Yi系列模型的诞生

    Yi系列模型是零一万物研发团队自主训练的大语言模型。首次公开发布包含两个参数尺寸为6B和34B的双语(英/中)基础模型。它们都是以4K序列长度进行训练,但在推理时可以扩展到32K。

    二、模型性能的优越表现

    Yi-6B和Yi-34B基础模型在2023年11月2日发布。在模型性能上,Yi系列模型在多项评测中展现出了全球领跑的优秀性能。

    对比同类型的开源模型,我们发现,不同模型可能采用不同的提示、后处理策略和取样技术,可能导致结果有显著的差异。我们的提示和后处理策略与原始基准测试保持一致,评估时采用贪婪解码,不对生成的内容进行任何后处理。对于原作者未报告的分数(包括以不同设定报告的分数),我们试图用我们的流程得出结果。

    我们采用了Llama2的方法论来广泛评估模型的能力。具体来说,我们引入了PIQA、SIQA、HellaSwag、WinoGrande、ARC、OBQA和CSQA来评估常识推理能力。SquAD、QuAC和BoolQ被用来评估阅读理解能力。CSQA被单独用7-shot设置进行测试,而所有其他测试都采用了0-shot配置。此外,我们在”Math & Code”分类下引入了GSM8K(8-shot@1)、MATH(4-shot@1)、HumanEval(0-shot@1)和MBPP(3-shot@1)。由于技术限制,我们没有对Falcon-180进行QuAC和OBQA的测试,分数是通过平均剩余任务的分数得出的。由于这两项任务的分数通常低于平均值,我们认为Falcon-180B的性能没有被低估。

    三、模型的使用

    我们在Github仓库上提供了关于如何使用此模型的一般指导。

    四、免责声明

    尽管我们在训练过程中使用数据合规性检查算法,以尽我们最大的能力确保训练模型的合规性,但由于数据的复杂性和语言模型使用场景的多样性,我们无法保证模型在所有场景中都能生成正确和合理的输出。请注意,模型仍有可能产生问题输出的风险。我们对任何由误用、误导、非法使用和相关的错误信息,以及任何相关的数据安全问题产生的风险和问题不承担责任。

    五、许可证

    Yi系列模型完全开放给学术研究和经过申请许可的免费商业使用。所有使用必须遵守模型许可协议2.0。要申请正式的商业许可证,请通过yi@01.ai与我们联系。

    六、结语

    Yi系列模型的诞生和发展,标志着我们正在走向人工智能的新纪元——AI 2.0。我们期待与全球的研究者、开发者和企业等合作伙伴一起,共同推动AI的进步,共同创造一个更智能、更美好的未来。

    让我们一起迎接这个全新的世界,一个由零一万物打造的,由Yi系列大模型技术推动的,AI 2.0的世界。

  • AI Comic Factory: 使用LLM + SDXL生成漫画

    大家是否曾经梦想过自己是一名漫画家?现在,借助AI Comic Factory项目,你可以轻松实现这个梦想!这个项目由GitHub用户jbilcke-hf创建,旨在使用LLM(Large Language Model)和SDXL(Stable Diffusion XL)技术生成漫画面板。这个项目由Hugging Face提供技术支持,他们一直致力于开发强大的自然语言处理工具。让我们一起深入了解AI Comic Factory的魅力吧!

    AI Comic Factory项目的目标非常明确:使用先进的人工智能技术生成漫画面板。这里使用的技术包括LLM和SDXL。LLM是指大型语言模型,它具备强大的自然语言理解和生成能力。而SDXL则是指稳定扩散XL,它是一种用于生成图像的技术。通过将这两种技术结合起来,AI Comic Factory能够自动生成精美的漫画面板,让你的创意得以实现。

    AI Comic Factory的使用非常简单。你可以通过GitHub上的链接访问项目的主页。在主页上,你可以找到详细的文档和指南,了解如何使用该项目生成漫画面板。你还可以在项目的代码库中查看源代码,了解项目的工作原理。如果你是一名开发者,你甚至可以Fork该项目并进行定制,以适应自己的需求。

    AI Comic Factory不仅适用于个人创作者,也适用于漫画工作室和出版商。通过自动化的漫画生成流程,你可以节省大量的时间和精力,并且获得高质量的漫画面板。该项目还提供了灵活的配置选项,让你能够根据自己的喜好和需求进行定制。

    AI Comic Factory是一个令人兴奋的项目,它为漫画创作提供了全新的可能性。无论你是一名漫画爱好者还是一名专业的漫画家,都可以从中受益。不妨点击上面的链接,了解更多关于AI Comic Factory的信息,并开始你的漫画创作之旅吧!让我们一起用技术的力量创造出精彩纷呈的漫画世界!

    AI Comic Factory – a Hugging Face Space by jbilcke-hf

  • 揭秘LocalAI.io——打造智能化未来的引领者

    在这个飞速发展的数字化时代,人工智能正逐渐渗透到我们生活的方方面面。今天,我将向大家介绍一个引领人工智能领域的先锋——LocalAI.io。他们凭借着一系列独特的技术和创新理念,正为我们揭示一个更加智能化的未来。接下来,就让我们一起走进LocalAI.io的世界,看看他们是如何改变我们的生活吧!


    LocalAI.io是一个致力于推动人工智能技术创新的公司。他们通过开发一系列易于使用的工具和平台,降低了人工智能技术的门槛,让更多人能够轻松体验到智能科技的魅力。他们的产品覆盖了图像识别、自然语言处理、机器学习等多个领域,为我们带来了更便捷、更高效的智能服务。

    在图像识别方面,LocalAI.io研发出了一款名为“智图”的软件。它能够迅速识别出图片中的物体、人脸等信息,并对其进行精准分类。无论是照片管理、安防监控还是自动驾驶等领域,智图都能发挥出强大的作用。这让图像识别技术变得更加普及,为我们的生活带来了诸多便利。

    除了图像识别外,LocalAI.io还在自然语言处理领域取得了卓越成就。他们推出的“智语”平台,能够实现语音识别、文本生成、情感分析等功能。无论是智能家居、智能客服还是语音助手等应用场景,“智语”都能为用户提供高效、便捷的语音交互体验。

    在探寻未来科技的道路上,LocalAI.io从未止步。他们以创新的思维,不断推动着人工智能技术的进步。与此同时,他们还关注着技术的普及与应用,让更多人享受到科技带来的福祉。正是有了像LocalAI.io这样的企业,我们的世界正变得越来越智能化,越来越美好。希望在未来,他们能够继续发挥领导力,携手我们共创一个充满智慧与创造力的新时代。

  • 一步一步学习Penrose:创造美丽的数学图像

    大家好!欢迎来到这篇关于Penrose的博客文章。准备好开启创造美丽图像的旅程了吗?无论你是数学领域的专家,还是编程初学者,Penrose都可以为你提供一个友好的平台,让你轻松地创造出令人惊叹的图形。

    Penrose: 一个新的视角

    我们经常会用笔或者铅笔来画出我们理解的概念,让它们从抽象变为具体。那么在Penrose中,我们是如何创造图像的呢?让我们来看一个简单的例子。假设我们想要画出你家的物品,首先我们需要确定我们的领域,也就是你家中的所有物品。然后,我们列出所有我们想要在图像中展示的物体,这些物体在Penrose中被称为”物质”。例如,你的椅子就是你家中的一个特定的物体。

    接下来,我们需要找出这些物体之间的关系。比如,我们可以根据家中的植物每周需要浇水的次数来对它们进行分组,这样我们就可以得到一个关于植物的视觉集群图。然后,我们可以尝试使用不同的颜色、大小和组合来绘制图像,同一个概念可以用不同的风格来表现。

    用Penrose来创造美丽的图像

    Penrose的主要目标是从数学陈述中创建美丽的图像。如果一个椅子是房子中的一个物体,那么一个向量也可以是线性代数中的一个物体。使用Penrose,你可以构建任何你想要可视化的数学领域。

    要使用Penrose创建图像,我们需要在三个特定的文件中编写代码。首先,我们需要定义我们的物体领域,因为Penrose并不知道你的家中有什么,也不知道什么是椅子。除了定义你的领域中的物体类型,你还需要描述你的领域中可能的操作。其次,我们需要存储我们想要在图像中包含的特定物质,这样Penrose才知道具体要为你画什么。最后,我们需要定义我们想要用来可视化我们的物质的样式。

    这三个文件分别对应于:

    • .domain文件,定义特定领域的语言。
    • .substance文件,创建数学内容的物质。
    • .style文件,指定视觉表示的样式。

    在一般情况下,每一个图像都会有一个独特的.substance文件,包含了图像的特定实例,而.domain和.style文件可以应用到很多不同的图像中。

    现在,你已经准备好开始你的Penrose之旅,制作你的第一个Penrose图像了!在接下来的教程中,我们将会一步步教你如何创建包含两个集合的图像,如何描绘子集的概念,以及如何展示向量的加法。让我们一起来开启这个精彩的旅程吧!