写在前面 关于GPT的内部细节和技术架构,OpenAI一直保持相对保密。本文基于官方博客和公开评论资料,对GPT的技术发展进行推测,仅为一家之言,如有偏颇,敬请指正。 前chatGPT时代 在chatGPT之前,语言模型经历了几个重要的发展阶段: BERT (Bidirectional Encoder Representations from Transformers): 由Google在2018年发布,这种双向模型首次利用了Transformer架构进行深度语义理解,使得在自然语言处理任务上取得了突破性进展。 Transformer架构: 于2017年由Vaswani等人提出,是一种基于注意力机制(Attention Mechanism)的架构,彻底改变了语言模型的构建方式。它以更高的并行性和更少的训练时间,取代了传统的递归神经网络(RNN)和长短期记忆网络(LSTM)。 GPT系列: GPT-2于2019年发布,展示了大规模预训练的语言模型在生成自然语言文本方面的潜力。GPT-3进一步扩大了模型的规模和数据量,增强了模型的理解和生成能力。 chatGPT的诞生 ChatGPT的核心是在大规模预训练模型基础上,通过强化学习人类反馈(RLHF),使模型在对话数据集和用户反馈的指导下,逐步优化,最终形成一个更适合人机对话的通用语言模型。利用强化学习技术,ChatGPT能够在生成过程中逐渐偏向于更符合人类交互的模式,增强与人类的互动体验。 GPT-4o的改进 与chatGPT相比,GPT-4o在多模态输入和输出上有了显著的提升。GPT-4o不仅能够处理文本,还能生成和理解音频、图像和视频。这种多模态能力使其在通信形式和使用场景上更加广泛。 此外,GPT-4o优化了自然互动能力和上下文理解能力,使得模型能在更长、更复杂的对话中保持更高的准确性和连贯性。它在推理、适应性和用户个性化交互方面表现出更强的能力。 GPT-o1的出现 GPT-o1的推出是为了解决GPT-4o在复杂任务上表现不佳的问题,即模型容易产生“幻觉”或不准确的回答。GPT-o1引入了一个新范式,即“过程证明”,来提升模型在复杂任务中的表现。 过程证明的思想 当人类无法直接得出答案时,通常会依赖经验或直觉,导致可能出现不可靠的猜测。因此,为了提高答案的可靠性,人类往往需要“过程证明”,即给出详细的推理步骤,以确保每个步骤的逻辑性和正确性。类似地,在大模型中,我们可以通过**思维链路(Chain of Thought, CoT)**的形式,引导模型给出详细的推理过程。 在传统LLM中,研究者通常通过提示工程(Prompt Engineering)来引导模型逐步给出中间步骤,从而得到更为可靠的结果。OpenAI的GPT-o1则是将这种引导思维过程的做法直接融入到模型训练中,通过强化学习来内化这种推理链路的生成【1】。 test-time compute的幂律性 OpenAI发现,在推理阶段(Inference)给予模型更多时间进行思考,其表现将随着思考时间的对数增加呈线性增长。这一认知颠覆了以往通过增加训练量和数据量来提升模型表现的传统范式【1】。 使用RL将prompt内化 虽然提示工程能引导LLM进行CoT,但将这种过程集成到训练阶段显然更为有效。OpenAI通过强化学习对思维过程进行评价和反馈,以优化模型的推理能力。可以大胆推测,模型的训练数据可能包含了大量由人类生成的带过程的语料,甚至可能包括各种比赛和论文中的问题和论证过程。 思考,快与慢 在AI领域,内在的思考过程通常被称为system1,而直觉性的快速猜测被称为system2。GPT-o1的“过程证明”理念有效地将“慢思考”集成到训练中,使模型的推理能力得到显著提升。未来,模型可能会更全面地掌握人类的meta-learning能力,逐渐迈向通用人工智能。 代价 引入“过程证明”也带来了性能上的挑战,如计算成本增加和响应速度变慢,可能不适合某些需要快速决策的应用场景。另外,在非严谨性的创作任务中,过度强调逻辑可能反而压制了模型的创造力【2】。 总结 GPT-o1通过“过程证明”这一新范式,在解决复杂逻辑任务方面展示了显著的性能提升。这一进步不仅改善了模型的准确性和可靠性,还引发了关于AI未来发展的更广泛讨论。然而,这种方法也带来了计算资源和响应速度上的挑战,需要在实际应用中权衡使用。 参考文献: learning-to-reason-with-llms ChatGPT-4 vs ChatGPT-4o - What Are the Improvements?
在任何 Markdown 文件中支持 Mermaid 图表
在日常的笔记和文档工作中,Markdown 是许多开发者和写作者的首选工具。它以简单易用的纯文本格式和直观的语法著称,使得书写和编辑过程快速高效。然而,当涉及到创建复杂的图表或可视化内容时,Markdown 的原生功能显得有些不足。Mermaid 作为一种基于文本的图表生成工具,能够帮助我们轻松创建流程图、序列图、甘特图等复杂的可视化内容。因此,将 Markdown 与 Mermaid 结合起来,能够显著增强我们的文档书写和信息展示能力。 然而,标准的 Markdown 语法并不原生支持 Mermaid 格式,因此在许多情况下,我们需要借助一些特定的 Markdown 编辑器(如 Typora、Obsidian)来实现这一功能。但如果你偏好一种基于纯文本的工作流,并且不希望被特定的 GUI 编辑器绑定,依赖额外的软件来实现 Mermaid 的支持无疑会带来一定的不便。 为此,这篇文章将介绍一种使用 Pandoc 搭配 mermaid-filter 的解决方案。这种方法允许你在本地编辑 Markdown 文件时,依然以纯文本格式书写,其中的 Mermaid 图表仅作为插入的代码块存在,无需任何 GUI 程序的依赖,能够真正实现 Markdown 文件在任何环境下的跨平台兼容性。 解决方案概述 我们的目标是通过 Pandoc 和 mermaid-filter 实现 Mermaid 图表在 Markdown 文件中的无缝支持,并能够在常用的 Markdown 编辑器中进行预览。Pandoc 是一款强大的文档转换工具,支持多种格式之间的转换,而 mermaid-filter 则是一个基于 Node.js 的 Pandoc 过滤器,能够处理 Mermaid 代码块并将其转换为图像。 步骤 1:安装 Pandoc 首先,我们需要安装 Pandoc。Pandoc 是一个多功能的文档转换工具,它能够将 Markdown 文件转换为 HTML、PDF、Docx 等多种格式。 安装 Pandoc 根据你的操作系统,选择合适的方式安装 Pandoc: Windows: 前往 Pandoc 官方下载页面,下载并运行适用于 Windows 的安装程序。 macOS: 可以使用 Homebrew 进行安装,运行以下命令: brew install pandoc Linux: 大多数 Linux 发行版的软件源中都包含 Pandoc,可以使用包管理器安装: sudo apt install pandoc # Ubuntu 或 Debian sudo dnf install pandoc # Fedora sudo pacman -S pandoc # Arch Linux 安装完成后,可以通过以下命令检查 Pandoc 是否安装成功:...
《Rich Sutton: The Bitter Lession》译
Richard S. Sutton是著名的AI学者,著有知名的《强化学习》一书,他提出的对提升AI到AGI的实现路径的看法,被OpenAI开发者作为每日必读的“圣经”,值得学习和反思。以下为原文译文: 从70年的AI研究中,我们可以获得的最大的教训是:能够充分利用算力的通用的方法,往往是最有用的方法,而且不是有用一点点。最根本的原因是摩尔定律,或者更确切的讲,是每单元计算成本持续指数性下降的概况。大多数AI研究都是在假设智能体(agent)能用的算力是恒定的条件下进行的(这种情况下,利用人类知识可能是唯一能提升智能体表现的方法了),但是,只要眼光稍微放长远一点,就会发现未来不可避免的会有更大规模的可用算力。虽然短期内,研究者利用人类的领域知识,能够提升agent在该领域的表现,但是长远来看,唯一关键的方法还是充分利用算力。虽然这两个方案理论上并不相互冲突,但是在实践中往往需要二选其一。研究者把时间经历放在其中一个上面,就无法去充分发展另一个,在内心里也会忠于某一个方案。另外,利用人类知识的方案,往往倾向于提出非常复杂的实现方法,而使得其很难兼容基于算力的通用方法。这个惨痛的教训对于研究者来说总是姗姗来迟,所以我们回顾一些最为突出的例子往往大有裨益。 在计算国际象棋(chess)领域,在1997年击败世界冠军Kasparov的算法,是一种大规模深度搜索算法。这让当时主流的计算象棋研究者们很失望,他们追求的方法是让计算机充分理解和利用人类对象棋棋局知识,从而获胜。当这种更简单的、基于搜索和算力的方法被事实证明是具有巨大的优势的时候,这些利用人类知识的研究员还在嘴硬。他们说“暴力”搜索的算法可能赢的了一时,但是它不是一个通用的策略,不管怎样起码人类不是这么下象棋的。然而这些研究者期望的以“人类的”方式下棋的方案总是会让他们失望。 类似的情况,在计算围棋(Go)中也在上演,只是比国际象棋推迟了20年而已。一开始,巨量的经历被用在如何利用人类现有知识或者学习棋局的一些特征上,但是在基于大规模的搜索算法面前,这些努力显得无关紧要,甚至对算法有害无益。另一个同样重要的点,是通过自我对弈来学习价值函数(在其他的游戏里,这点同样很重要,既是是在1997年击败世界冠军的国际象棋算法中,学习并不是核心点)。通过自我博弈进行学习,以及通用地学习,像大规模搜索一样,一样充分依赖于算力的利用。搜索和学习是基于大算力的AI研究方法中最重要的两类技术。在计算围棋中和计算国际象棋中,研究者一开始的努力方向是充分利用人类的知识和理解(因此不需要太多搜索),但是进展不大,直到充分拥抱了基于大算力的搜索和学习的方法,才取得了长足的进展。 在语音识别领域,早在70年代,有一个DARPA赞助了的比赛。参赛者中有一大批是基于人类知识的定制方案,他们利用了词汇、音素和发音等知识。与此同时,也有一批人是基于当时看来较新的方法,更偏向统计和算力的方法,如基于HMMs(隐马尔可夫模型)来解决问题。统计方法再一次优于基于人类知识的方法。这导致了所有的NLP领域在过去的几十年中发生了巨大变化和转向,那就是基于统计和算力的方法逐渐取代人类知识成为主流方法。而最近深度学习在语音识别领域的兴起是朝着这一一致方向迈出的更进一步。深度学习的方法使用更少的人类知识、更多的算力和更大规模的训练集,对语音识别系统产生了戏剧性的性能提升。就像在这个比赛中一样,研究者总是试图让语音识别系统工作的和自己大脑工作的方式(自认为)一样,他们试图把自己的知识放入系统。但是结果总是适得其反,浪费了研究员的大量时间经历,特别是随着摩尔定律的作用,在和基于大算力的方法对比时。 在计算机视觉领域,也有类似的事情发生。早期的计算机视觉方法,认为视觉就是搜索物体的边界、广义柱体或者SIFT特征。但是当前这些概念方法都被抛弃了。取而代之的是基于深度神经网络的现代方法,它仅仅使用卷积和一些不变性原理,得到了好得多的效果。 这是一个很大的教训。只要一个领域我们还没有彻底的了解它,我们就会持续的犯同样的错误。为了预见并有效的预防这种情况发生,我们需要理解这类错误的诱惑力在哪。我们不得不面对的惨痛的教训就是:按照我们自认为的“我们是这样思考的”的路子构建的智能体,长远来看是行不通的。这个惨痛的教训是基于对历史的总结: AI研究者总是试图将知识构建入智能体。 这样做短期内是有效的,且能够满足研究者的个人偏好 这样做长期看,会停滞甚至阻碍智能体性能的进一步提升 突破性的进展最终以相反的方式取得:基于大规模的算力和学习。 最终智能体的成功带着一丝苦涩,它的机制还没有被人们完全理解,并且它的实现路径,并不是一种受人青睐的、以人为中心的路径。 应该从惨痛的教训中吸取的一个经验,是重视通用方法的巨大潜力。即使可用的算力变得非常强大,这些方法也会随着算力的增加而继续扩容。而可以以这种方式任意扩容的两种方法, 似乎就是是搜索和学习了。 另一个从惨痛的教训中学习到的通用的点是,真正的心智内涵里,包含了无可救药的复杂度;我们不应该企图用一种简单的方法,去描述心智的内涵,比如去描述思考空间、对象、多智能体或者对称性这些复杂概念,这些概念都是任意且内秉复杂的外部世界的一部分。我们不应该也没有能力去直接建模这些概念,因为它们的复杂度是无限的;我们应该建模“元方法(meta-methods),那些能够识别并捕获任意复杂度的方法。这中“元方法”的关键是它们能够自己找到搜索到对复杂概念的有效近似,而不是靠我们人工的去建模这些近似。我们希望AI智能体能够自己去探索并学习对它来说未知的概念,而不是仅仅囊括那些我们(人类)已经发现掌握过的概念。基于我们(人类)已知的概念去构建智能体,只会让我们更难看清,探索学习这个过程本身是怎么完成的。 原文链接:http://www.incompleteideas.net/IncIdeas/BitterLesson.html/