1. 调研背景
OpenAI 的 ChatGPT 自推出以来,迅速成为人工智能领域的焦点。ChatGPT 在语言理解、生成、规划及记忆等多个维度展示了强大的能力。这不仅体现在对特定任务的高效处理上,更重要的是,它在处理多样化任务和复杂场景中的灵活性显著,甚至能在一定程度上模拟人类的思考方式。这种能力的展现,标志着人工智能从专注于单一任务的传统模型向通用人工智能转变,其强大的能力将对千行百业产生深远影响,尤其在优化业务流程和重塑组织结构方面。
然而,在研究和实践过程中,我们遇到了一个主要挑战:如何找到更好的场景和切点帮助我们在工作中进行提效呢?基于此问题我们探究 AI 的发展脉络、技术原理、行业现状、落地建议等方面进行梳理,以期从中提炼出切实可行的方法,全面提升团队的技术效率与业务效能,推动整体业务的快速发展与创新。
2. AI及大模型的发展历程和关系
2.1 AI 整体发展简史
AI 的发展历程证明了它并非一蹴而就的结果,而是经过长期演进和多次技术革新才达到了今天的高度。从 1956 年达特茅斯会议首次提出“人工智能”概念,到 2022 年 ChatGPT 的推出,AI 的发展走过了曲折而漫长的道路。
在早期,感知机的提出虽然开创了机器学习的雏形,但由于处理非线性问题的局限性,这一领域曾一度陷入低潮。随后,专家系统的兴起和反向传播算法的突破为 AI 的发展注入了新的活力,标志着机器学习进入了一个新的阶段。
然而,真正推动 AI 进入现代发展的三大关键要素是数据、算力和算法的同步进步。随着互联网的普及和大数据时代的到来,海量数据为训练更复杂的模型提供了可能。与此同时,GPU 等高性能计算设备的出现显著提升了计算能力,使得深度学习等复杂模型得以训练和应用。算法的创新,尤其是深度学习和 Transformer 架构的提出,极大地提升了 AI 在图像识别、自然语言处理等领域的性能。
每一次技术突破背后,都是大量科学家的长期努力和无数次试验的积累。AI 从最初的理论构想到如今的大模型时代,经历了多次瓶颈和低谷,但也在每次技术革新中获得了新的动力。这种逐步演进的过程清晰地表明,AI 的崛起并非偶然,而是数据、算力和算法协同发展的必然结果。正是这些要素的不断进步,才让 AI 从一个概念逐渐发展成为改变世界的重要技术。
年份 | 事件 | 论文 | 意义 |
---|---|---|---|
1956 年 | 人工智能的诞生 - 达特茅斯会议 | 无具体论文 | “人工智能”术语首次提出,标志着 AI 作为独立研究领域的开始。 |
1965 年 | 图灵测试提出 | Turing, A. M. (1950). "Computing Machinery and Intelligence".Mind 59(236): 433-460. | 图灵测试成为衡量机器智能的重要标准,推动了 AI 伦理和哲学讨论。 |
1967 年 | 感知机的发明与限制 | Minsky, M., & Papert, S. (1969).Perceptrons: An Introduction to Computational Geometry. | 感知机的提出标志机器学习的早期尝试,但因处理非线性问题的局限性,研究陷入低潮。 |
1980 年代 | 专家系统的兴起 | 无具体单篇论文(DENDRAL 和 MYCIN 为著名专家系统) | 专家系统在医疗诊断和化学分析等领域取得成功,推动了 AI 的早期应用探索。 |
1986 年 | 反向传播算法的提出 | Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). "Learning representations by back-propagating errors".Nature 323(6088), 533-536. | 解决了多层神经网络的训练问题,推动了神经网络研究的复兴。 |
1997 年 | 深蓝战胜卡斯帕罗夫 | 无具体论文 | AI 首次在复杂棋类游戏中击败人类世界冠军,展示了 AI 的超强能力。 |
2006 年 | 深度学习的兴起 | Hinton, G. E., Osindero, S., & Teh, Y. W. (2006). "A fast learning algorithm for deep belief nets".Neural Computation 18(7), 1527-1554. | 深度学习开创了 AI 新篇章,在图像识别、语音识别等领域取得了突破性进展。 |
2012 年 | AlexNet 赢得 ImageNet 竞赛 | Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). "ImageNet classification with deep convolutional neural networks".NIPS. | 证明了深度卷积神经网络在图像分类中的卓越性能,推动了计算机视觉领域的快速发展。 |
2016 年 | AlphaGo 战胜李世石 | Silver, D., et al. (2016). "Mastering the game of Go with deep neural networks and tree search".Nature 529(7587), 484-489. | AI 在处理复杂战略问题上的能力达到新高度,引发了 AI 研究的广泛关注。 |
2017 年 | Transformer 模型的提出 | Vaswani, A., et al. (2017). "Attention is All You Need".NIPS. | Transformer 模型彻底改变了自然语言处理领域,为大型语言模型的发展奠定了基础。 |
2020 年 | GPT-3 的发布 | Brown, T. B., et al. (2020). "Language Models are Few-Shot Learners".arXiv. | GPT-3 展示了超大规模语言模型的潜力,推动了生成式 AI 的广泛应用。 |
2022 年 | ChatGPT 的发布 | 无具体论文 | ChatGPT 基于 GPT-3.5,能够进行自然流畅的对话,标志着生成式 AI 在对话系统中的新高度。 |
2023 年 | GPT-4 发布及多模态模型的发展 | 无具体论文 | GPT-4 进一步提升了生成式 AI 的能力,特别是在多模态输入输出方面。 |
2.2 语言模型(Language Model)发展历史
阶段 | 时间 | 关键模型/技术 | 贡献与意义 | 局限性/挑战 |
---|---|---|---|---|
统计语言模型 | 20 世纪中期 | n-gram 模型 | 通过统计方法预测词序列中的下一个词,奠定了早期语言模型的基础。 | 无法处理长距离依赖,模型稀疏,数据需求大。 |
神经网络语言模型(NNLM) | 2003 年 | 前馈神经网络(Yoshua Bengio 等人) | 引入词嵌入,能够学习词的分布式表示,克服了 n-gram 的许多限制。 | 计算复杂度较高,无法处理长序列。 |
词嵌入模型(Word2Vec, GloVe) | 2013-2014 年 | Word2Vec, GloVe | 捕捉词汇之间的语义关系,广泛应用于各种 NLP 任务中,显著提高了模型性能。 | 静态词嵌入,缺乏上下文敏感性。 |
序列模型与 Attention 机制 | 2014 年 | RNN, LSTM, Attention 机制 | RNN 和 LSTM 解决了部分长序列依赖问题,Attention 机制提高了模型的上下文感知能力。 | RNN 存在梯度消失问题,计算效率低。 |
Transformer 模型 | 2017 年 | Transformer | 完全基于 Attention 机制,摒弃了 RNN,极大提高了并行计算效率,成为后续大语言模型的基础。 | 对大数据和算力依赖较高。 |
BERT | 2018 年 | BERT | 使用双向 Transformer 架构,显著提升了句子理解和问答任务的表现。 | 模型训练和推理成本较高。 |
GPT 系列模型 | 2018-2023 年 | GPT, GPT-2, GPT-3, GPT-4 | 从 GPT 到 GPT-3,这些模型逐步增加参数量,成为生成式 AI 的代表,表现出出色的文本生成能力。 | 对大数据集和计算资源需求巨大,容易产生偏见和错误信息。 |
多模态模型与 GPT-4 | 2023 年 | GPT-4, 多模态模型 | GPT-4 进一步增强了生成能力和多模态处理能力,推动了 AI 在多个领域的应用。 | 多模态模型的训练复杂度高,存在跨模态融合的挑战。 |
2.3 一些名词和概念之间的关系
2.3.1 什么是大语言模型(LLM)及与语言模型(LM)和NLP的关系
语言模型(Language Model, LM):
语言模型是一种统计模型,旨在预测给定上下文中出现某个单词或序列的概率。早期的语言模型通常是通过统计方法构建的,例如 n-gram 模型,通过计算在大量文本数据中出现的词频来进行预测。
语言模型的核心任务是生成流畅、连贯的句子,这在自然语言处理任务(如自动翻译、自动摘要、文本生成等)中非常关键。
大语言模型(Large Language Model, LLM):
大语言模型是指基于更大规模数据和更复杂结构训练的语言模型,通常具备数以亿计或更大规模的参数。例如,GPT-3、BERT 等模型就是大语言模型的代表。
大语言模型通过深度学习技术(尤其是基于 Transformer 架构的模型)进行训练,能够捕捉语言中的复杂语义关系和上下文依赖性。这些模型在处理和生成自然语言方面表现出色,能够执行复杂的自然语言任务,包括对话生成、文本摘要、语言翻译等。
NLP(自然语言处理):
NLP 是人工智能的一个子领域,专注于计算机与人类语言之间的互动。NLP 包括多个任务,如分词、词性标注、句法分析、情感分析、文本生成、机器翻译等。
语言模型是 NLP 任务中的关键组件,尤其是在涉及文本生成或理解的任务中起到重要作用。大语言模型的引入进一步提升了 NLP 技术的能力,使其能够更好地理解和生成人类语言。
语言模型的发展历程
语言是人类表达和交流的一种显著能力,它在幼儿时期发展并在一生中不断演变。然而,机器不能自然地掌握以人类语言形式理解和交流的能力,除非配备了强大的人工智能(AI)算法。实现这一目标,使机器能够像人类一样阅读、写作和交流,一直是一个长期的研究挑战 [。
从技术上讲,语言建模 (LM) 是提高机器语言智能的主要方法之一。一般来说,LM 旨在对词序列的生成可能性进行建模,以预测未来(或缺失)标记的概率。LM 的研究在文献中受到了广泛关注,可以分为四个主要发展阶段:
统计语言模型 (SLM)。SLM 是基于 20 世纪 90 年代兴起的 _ 统计学习 _ 方法开发的。其基本思想是基于马尔可夫假设建立词预测模型,例如,根据最近的上下文预测下一个词。具有固定上下文长度的 SLM n 也称为 n-gram 语言模型,例如,二元和三元语言模型。SLM 已被广泛应用于提高信息检索(IR)和自然语言处理(NLP)中的任务性能。 然而,它们经常受到维度灾难的困扰:由于需要估计指数数量的转移概率,因此很难准确估计高阶语言模型。 因此,专门设计的平滑策略如回退估计 [ 和 Good-Turing 估计已被引入以缓解数据稀疏问题。
神经语言模型 (NLM)。NLMs 通过神经网络来表征词序列的概率,例如, 多层感知器 (MLP) 和循环神经网络 (RNNs)。 作为一项显著的贡献,Geoffrey Hinton 引入了分布式表示的概念,并建立了基于聚合上下文特征(_ 即 _ 分布式词向量)的词预测功能。 通过扩展为文本数据学习有效特征的理念,开发了一种通用的神经网络方法,以构建一个统一的、端到端的解决方案,用于各种 NLP 任务 。此外, word2vec ,可以构建一个简化的浅层神经网络,用于学习分布式词表示,这在各种 NLP 任务中被证明是非常有效的。 这些研究已经开始使用语言模型进行表示学习(超越词序列建模),对自然语言处理领域产生了重要影响。
预训练语言模型 (PLM)。作为早期尝试,ELMo 被提出通过首先预训练双向 LSTM (biLSTM) 网络(而不是学习固定的词表示)来捕捉上下文感知的词表示,然后根据具体的下游任务微调 biLSTM 网络。此外,基于高度可并行化的 Transformer 架构与自注意力机制, BERT 通过在大规模未标注语料库上进行特别设计的预训练任务来预训练双向语言模型提出的。这些预训练的上下文感知词表示作为通用语义特征非常有效,大大提高了 NLP 任务的性能标准。这项研究激发了大量后续工作,确立了“**预训练 \ 和 _ 微调_”**的学习范式。 遵循这一范式,已经开发了大量关于 PLM 的研究,介绍了不同的架构(例如,GPT-2 和 BART)或改进的预训练策略。在这一范式中,通常需要微调 PLM 以适应不同的下游任务。
大型语言模型 (LLM)。研究人员发现,扩展 PLM(例如,扩展模型大小或数据大小)通常会提高模型在下游任务中的能力(即,遵循扩展法则 [30])。许多研究通过训练更大的 PLM(例如,1750 亿参数的 GPT-3 和 5400 亿参数的 PaLM)探索了性能极限。尽管扩展主要在模型大小上进行(具有相似的架构和预训练任务),这些大型 PLM 显示出与较小的 PLM(例如,3.3 亿参数的 BERT 和 15 亿参数的 GPT-2)不同的行为,并在解决一系列复杂任务时表现出令人惊讶的能力(称为突现能力 [31])。例如,GPT-3 可以通过上下文学习解决少样本任务,而 GPT-2 则不能很好地完成。因此,研究界创造了术语“大型语言模型 (LLM)”
2.3.2 大语言模型(LLM)和生成式AI(Gen AI)的关系
技术概念 | 定义 | 主要方法 | 特点 | 关系 |
---|---|---|---|---|
人工智能(AI) | AI 是一个广义术语,涵盖了通过计算机模拟人类智能的所有技术和方法。 | - | 让机器能够执行通常需要人类智能的任务,如感知、推理、学习、决策等。 | 包含了机器学习、深度学习、大语言模型、生成式 AI 等技术。 |
机器学习(ML) | AI 的一个子领域,专注于让计算机系统通过数据进行学习和改进。 | 监督学习、无监督学习、半监督学习、强化学习等。 | 使得 AI 系统能够从经验中自动改进。 | 实现 AI 的一种手段,构建在 AI 的基础之上。 |
深度学习(DL) | 机器学习的一个子领域,采用多层神经网络来处理复杂的数据模式。 | 使用深度神经网络。 | 擅长处理图像、语音和文本等非结构化数据。 | 是机器学习的一种方法,推动了现代 AI 的许多突破。 |
大语言模型(LLM) | 基于深度学习的模型,通常是 Transformer 架构,如 GPT。 | 使用 Transformer 架构。 | 能够理解和生成高度复杂的自然语言文本。 | 深度学习技术的重要应用,是 AI 的一部分,尤其擅长自然语言处理任务。 |
生成式 AI(Gen AI) | 能够生成内容(如文本、图像、音乐等)的 AI 技术。 | 生成对抗网络(GANs)、变分自编码器(VAEs)、基于 Transformer 的大语言模型(如 GPT-3、DALL-E)。 | 生成类似人类创作的内容。 | LLM 是生成式 AI 的一种实现,生成式 AI 通常依赖于深度学习和机器学习。是 AI 的一个应用方向,推动了 AI 从理解到创造的转变。 |
2.4 GPT系列发展简史
GPT(Generative Pre-trained Transformer)是由 OpenAI 开发的一种基于 Transformer 架构的自然语言处理模型。它通过大规模的文本数据训练,在生成和理解自然语言方面表现出色。GPT 模型使用了一种“自回归”方式,即每次生成一个词,然后基于前面的上下文继续生成下一个词,从而能够生成连贯的段落或文章。
关键特点:
Transformer 架构: GPT 基于 Transformer 架构,该架构擅长处理序列数据,特别是在长距离依赖的文本理解上表现出色。
大规模预训练:GPT 在大规模文本语料库上进行预训练,学习语言的复杂结构和语义关系。然后可以通过微调(Fine-Tuning)应用于特定任务,如文本生成、翻译、问答等。
自回归生成:GPT 使用自回归方式生成文本,即在给定的上下文基础上逐词生成后续文本,使其能够生成连贯且有逻辑的长文本。
多任务学习:GPT 经过预训练后,可以通过简单地调整输入提示,应用于各种自然语言处理任务,而无需专门为每个任务设计复杂的架构。
GPT 版本 | 发布年份 | 关键特性 | 参数规模 | 主要贡献与应用 |
---|---|---|---|---|
GPT | 2018 年 | 基于单向 Transformer 架构,使用左到右的注意力机制进行文本生成。 | 1.17 亿 | 引入了生成式预训练模型的概念,展示了自然语言生成和文本补全的能力。 |
GPT-2 | 2019 年 | 扩大了模型规模,生成能力和文本理解能力显著提升。 | 15 亿 | 展现了生成式模型的通用性,适用于文本生成、翻译、问答等多种任务。最初因滥用风险,仅部分发布。 |
GPT-3 | 2020 年 | 大规模参数模型,增强了少样本学习能力,能够处理复杂自然语言任务。 | 1750 亿 | 成为当时规模最大的语言模型之一,广泛应用于商业产品、虚拟助手、内容创作等领域。 |
GPT-4 | 2023 年-至今 | 进一步提高生成能力,支持多模态输入(如文本和图像),加强了伦理与安全控制。 | 未公开(估计数万亿参数) | 扩展了 AI 的应用场景,涵盖教育、医疗、内容创作等多个行业,标志着多模态生成式 AI 的突破。 |
ps :中国的大模型列表:
三方应用: https://github.com/wgwang/awesome-LLMs-In-China
3. 大模型技术原理
3.1 什么是scaling law
Scaling law 是指在机器学习领域,特别是在训练神经网络时,模型性能随模型规模(如参数数量)、计算资源(如训练步骤数或计算量)、数据规模等的增加而提升的规律。它们揭示了当这些要素增加时,模型的性能如何随着变化,并且在实践中可以用于指导模型的设计、资源分配以及预估扩展后的性能表现。
关键点:
参数数量:通常,随着模型参数数量的增加,模型的性能会有所提升。这是因为更大的模型可以捕捉更复杂的数据模式。然而,这种性能提升并不是无限制的,最终可能会遇到饱和点或因过拟合而导致性能下降。 数据规模:对于更大的模型来说,需要更多的数据来充分训练它们。Scaling law 表明,在相同规模的数据集上,更大的模型通常会表现得更好,而在给定的数据集上,性能提升会逐渐趋缓。 计算资源:增加计算资源(如更长的训练时间或更多的计算设备)可以提高模型性能,但同样存在收益递减的问题,即在计算资源不断增加时,性能提升的速度会逐渐变慢。
应用:
Scaling law 在构建大规模语言模型(如 GPT 系列)时尤为重要。研究者们通过这些规律,能够预测如果进一步增加模型规模或数据规模,性能可能会有怎样的提升。这些规律也帮助优化资源使用,使得模型训练更加高效。
相关研究:
- OpenAI 和 DeepMind 等机构的研究者们在训练大规模语言模型时,通过研究 scaling law 发现,模型性能在参数数量、数据规模和计算量之间存在稳定的关系。通过这些规律,他们能够更好地规划和设计更强大的 AI 模型 oai_citation:1,LLMs Can Now Self-Debug. Should Developers Be Worried?。
3.2 什么是大模型的涌现能力
LLMs 的涌现能力被正式定义为“在小规模模型中不存在但在大规模模型中出现的能力”,这是将 LLMs 与之前的预训练模型(PLM)区分开的最显著特征之一。涌现能力的一个显著标志是:当模型规模达到某个临界点时,模型的性能显著超越随机水平。通过类比,这种涌现模式与物理学中的相变现象有着密切的联系 。原则上,涌现能力可以通过一些复杂任务的表现来定义,但我们更关心的是能够普遍应用于各种任务的一般能力。下面我们简要介绍 LLMs 的三种典型涌现能力及其代表性模型:
上下文学习(In-Context Learning, ICL):上下文学习能力由 GPT-3 正式引入。这种能力允许模型在没有额外训练或梯度更新的情况下,仅通过提供自然语言指令和几个任务示例,生成测试实例的预期输出。在 GPT 系列模型中,具有 1750 亿参数的 GPT-3 表现出强大的 ICL 能力,而 GPT-1 和 GPT-2 则未能展示这一特性。值得注意的是,这种能力的表现也依赖于具体的下游任务。
指令遵从(Instruction Following):通过在格式化为自然语言描述的多任务数据集上进行微调(即指令微调),LLMs 在以指令形式描述的未见任务中表现出色。指令微调赋予了 LLMs 更好的泛化能力,使其在处理新任务时能够遵循任务指令而无需明确的示例。
逐步推理(Step-by-Step Reasoning):对于小型语言模型来说,通常难以解决涉及多个推理步骤的复杂任务,如数学题。相较之下,LLMs 可以通过链式思维(Chain of Thought, CoT)提示策略,利用中间推理步骤来解决此类任务并得出最终答案。这种能力可能是通过在训练过程中引入代码相关任务而获得的。
3.3 大模型是如何训练的(以ChatGPT为例)
ChatGPT 是由 OpenAI 开发的一种基于 GP1-3.5 架构的大语言模型,它的训练过程可以分为预训练、有监督微调和强化学习 3 个阶段。
预训练阶段:预训练阶段是在大规模的互联网文本数据中进行的,这些数据来自网页、书籍等。在预训练过程中,模型通过自监督学习的方式进行训练,即在没有人工标注的情况下学习语言的统计属性。预训练的目标是使模型能够理解和生成各种不同类型的文本。
有监督微调阶段:在预训练完成后,ChatGIPT 会通过在特定任务上进行微调来提高性能。微调是一种有监督学习的过程,需要使用人工标注的数据集来训练模型。对于 ChatGPT 来说,微调阶段通常使用与聊天对话相关的数据集,其中包含问题和回答的配对样本。这样可以使模型在生成回复时更加准确和有针对性。
强化学习阶段:为了进一步提高模型的性能,OpenAI 还采用了无监督强化学习方法。在这个阶段,模型通过与自己对话进行训练,不需要人工标注的数据集。它使用近端策略优化(ProximalPolicy Optimization,PPO)算法优化模型的生成策略。PPO 通过反复与模型进行对话,并根据生成回复的质量给予奖励或惩罚,以调整模型的参数,使其生成更好的回复。
这 3 个阶段相互补充,使模型能够具备较强的语言理解和生成能力,并且在聊天对话任务中生成高质量的回复。具体来说,预训练阶段使模型能够从大规模的文本数据中学习到丰富的语义和语法知识,为后续的任务提供坚实的基础。有监督微调阶段使用人工标注的聊天对话数据集,使模型在特定任务上有了进一步的优化。这个阶段的微调使模型能够更好地理解问题的上下文,并生成与问题相关的回复。通过与人工标注的数据进行交互,模型可以逐渐学习到如何生成准确、有条理的回答。强化学习阶段进一步提升了 ChatGPT 的性能。通过与自身进行对话,并使用 PPO 算法进行训练,模型可以不断优化自己的生成策略。这个阶段的训练使得模型能够生成更加流畅、准确和有逻辑的回复。通过与自身对话和不断调整,模型逐渐提升了在聊天对话任务中生成高质量回复的能力。
3.4 大模型预训练还有什么问题没有解决
在当前的大型语言模型(LLMs)中,尽管预训练技术已经取得了显著的进展,但仍然存在一些尚未完全解决的问题。以下是几个关键领域:
1. 训练稳定性
预训练大规模模型时,训练过程的稳定性仍然是一个挑战。模型的复杂性和规模增加了训练过程中的不确定性,可能会导致模型崩溃或不收敛。为了解决这个问题,研究者们正在探索更有效的优化算法、学习率调度策略以及正则化技术。然而,如何在更大规模的模型上保持训练过程的稳定性仍然是一个活跃的研究领域。
2. 思维链(Chain of Thought, CoT)是怎么出现的
思维链是一种允许模型在推理过程中逐步生成推理步骤的能力,这在解决复杂问题时非常有用。尽管这个能力在一些大型模型中已经展现出来,但它的具体机制仍然不完全清楚。研究者们正在研究如何更好地训练模型以自然地表现出这种能力,并且如何通过数据和训练方法进一步增强这一能力。
3. 幻觉现象(Hallucinations)
幻觉现象指的是模型生成的内容与现实不符,或者在缺乏事实依据的情况下编造信息。这是当前预训练模型面临的一个严重问题,尤其是在生成任务中,如文本生成或对话系统。幻觉现象的原因可能与模型在训练过程中缺乏足够的监督或数据噪声有关。尽管有一些方法试图通过改进数据质量或引入后处理步骤来缓解这个问题,但彻底解决幻觉现象仍然是一个重大挑战。
4. 长上下文处理
当前的语言模型在处理长上下文(long-context)时仍然存在局限性。由于 Transformer 架构的内存和计算需求限制,模型在处理非常长的输入序列时,可能会丢失远距离的依赖信息。研究者们正在探索新的架构或改进现有架构以更有效地处理长文本输入,如引入更高效的注意力机制或分段处理技术。
这些问题的解决将进一步推动语言模型在处理复杂任务中的能力,使其更加智能和可靠。
4. 大模型的应用
大模型(如 GPT 系列)在实际应用落地过程中,需要克服多个关键问题,以确保其可靠性、可用性和与外界的有效交互。以下是主要挑战:
大模型应用的主要挑战
- 幻觉问题
- 数据隐私与安全
- 模型公平性与偏见
- 与外部系统的交互
- 实时性和计算资源
其中幻觉问题是其中最重要的问题.
4.1 什么是大模型的幻觉,如何解决
大模型的幻觉(Hallucination) 是指在生成文本时,模型输出了与现实不符的内容,或者生成了完全虚构的信息。这种现象尤其在开放性生成任务中常见,如文本生成、翻译、和对话系统等场景。幻觉现象使得模型有时会看似自信地给出错误或不存在的信息,这在一些应用中可能导致误导或错误的结果。
幻觉现象的成因:
概率性生成:大模型基于概率来预测下一个词或句子,这种方法依赖于训练数据中的统计模式,而不一定考虑实际的事实或逻辑一致性。
数据噪声:训练数据集可能包含不准确的信息、错误或矛盾的内容,模型可能会将这些错误模式学到并在生成过程中重现。
缺乏事实核查:当前的模型通常没有内置的机制来验证生成的内容是否与现实世界一致。这使得模型在面对缺乏明确答案的任务时,容易生成虚构的内容。
解决方法:
引入事实验证机制:
- 知识增强:将模型与知识图谱、数据库或检索系统结合,使模型能够在生成内容时参考真实的外部信息源,确保输出的内容更加准确。例如,结合检索增强生成(RAG)模型的思路,通过搜索引擎或知识库来验证生成的内容。
改进数据质量:
数据清洗:提高训练数据的质量,通过过滤掉不准确或矛盾的信息,减少模型学习到错误模式的可能性。
利用人类反馈:在模型使用过程中引入人类反馈机制,通过不断地评估和纠正,减少幻觉现象的发生。
优化模型架构:
多层次推理:引入更复杂的推理步骤,使模型在生成复杂内容时能够进行更深入的逻辑推理,而不仅仅依赖于表面概率。
链式思维(Chain of Thought, CoT):通过在提示中引导模型分步骤思考问题,有助于生成更具逻辑性和一致性的答案,从而减少幻觉现象。
结合多模型协作:
- 跨模型验证:使用多个模型对同一问题进行推理,并交叉验证结果,以提高生成内容的准确性。模型可以相互验证和补充,从而减少单一模型可能出现的幻觉。
强化学习与人类反馈:
- 强化学习:通过强化学习(Reinforcement Learning)结合人类反馈,可以对模型生成的内容进行实时的评估和调整,逐步减少模型产生幻觉的可能性。
这些方法在一定程度上可以减少幻觉现象的发生,但彻底解决这一问题仍需要在模型设计、数据处理和生成后处理等方面进行持续的研究和改进。未来,随着技术的不断发展,幻觉现象有望得到更好的控制和减少。
4.2 为什么需要提示工程
在丹尼尔·卡尼曼的《思考,快与慢》中,系统 1 和系统 2 代表了人类思维的两种不同模式:
系统 1:快速、自动、直觉性的思维方式。它依赖于已有的经验和直觉,能够迅速做出反应,但有时会因依赖启发式和偏见而出错。
系统 2:慢速、逻辑性强、深思熟虑的思维方式。它需要更多的认知努力,适用于复杂的分析和决策,但由于其速度较慢,通常只在系统 1 无法解决问题时启动。
大模型与系统 1 的类比:
大模型(如 GPT)在某种程度上类似于系统 1,因为它们依赖于从大量数据中学到的模式来快速生成反应。这些模型通过学习数据中的统计关系,可以在毫秒级别内生成文本。这种生成过程是高度自动化和直觉性的,类似于系统 1 的快速反应。
然而,正如系统 1 容易受启发式和偏见影响一样,大模型也可能生成带有偏见或不准确的内容,特别是在输入提示模糊或不明确时。
提示工程与系统 2 的类比:
提示工程可以看作是系统 2 的作用。通过精心设计的提示,用户实际上是在引导大模型进行更深层次的“思考”,就像系统 2 那样。这个过程涉及更多的认知努力(即用户需要仔细考虑如何构建提示),以确保模型生成的内容更符合预期。
当提示工程精心设计时,它可以帮助大模型克服自动化生成中的偏见和错误,类似于系统 2 对系统 1 的校正功能。通过这种方法,提示工程能够使模型的输出更加准确和符合用户需求。
综合分析:
系统 1 与系统 2 的协作:在大模型的应用中,基础模型的生成过程(类似于系统 1)和提示工程的优化过程(类似于系统 2)相结合,能够有效提升模型的输出质量。提示工程就像是对模型的“深思熟虑”,使得其生成的内容不仅快速,而且更符合逻辑和预期。
必要性:因为大模型在没有明确指导的情况下可能会产生偏见或误解,所以提示工程(系统 2 的作用)是必要的,用来引导和修正模型的输出,确保其质量和可靠性。
什么是提示词,如何用好提示词
提示词(Prompt)是指在使用生成式 AI 模型(如 GPT 系列)时,用户输入的一段文字或语句,用以引导模型生成所需的输出内容。提示词可以是一个问题、一段描述、或者任何形式的文本,模型将根据这个提示生成相应的文本、代码、图像或其他形式的内容.
关于大模型的应用最核心的步骤之一就是在设计和调试提示词。
提示词的基础要素
通常,一个提示词至少包含两个元素:指令和输入数据。“指令”即需要大语言模型完成的任务,“输入数据”即该任务对应的要求。在前面的例子中,“补全冒号后面的句子,并且行文是抒情的现代歌词风格”是指令,“天空是”是输入数据。“指令+输入数据”的提示词可以满足大部分模型的需求。有些情况下,模型需处理的任务是复杂的,仅有指令和输入数据的提示词无法获得令人满意的回答。这时,提示词还需要包含以下元素。
背景:需求背景。输入任务背景有助于大语言模型生成符合我们期望的答案,例如“我正在写一篇关于新能源汽车的行业研究报告 ⋯”。
角色:大语言模型扮演的角色。例如“作为公文笔杆子,请改写下面的内容 ⋯”。告诉大语言模型它所扮演的角色,有利于它按照该角色的思维方式或行文风格进行创作。
示例:为了让大语言模型更好地理解输入的指令,在提示词中给出一个或数个示例是十分有效的手段。
输出指示:可以让大语言模型以某种特定格式输出内容,例如以 JSON 串的形式。
提示词设计的通用原则
清晰具体的上下文设置
避免模糊指令
指定输出格式
如何利用一些提示词技巧提升大模型输出结果的质量
在大模型的推理引导中,除了零样本、单样本、少样本和思维链(Chain-of-Thought, COT)、思维树(Tree-of-Thought, TOT)等推理方法。以下是对这些推理方法的详细解释,包括思维树:
- 零样本推理(Zero-Shot Learning)
定义:模型在没有示例或额外信息的情况下,根据提示直接推理和生成结果。这种方法依赖于模型在预训练阶段学到的广泛知识。
应用:例如,给出指令“解释区块链技术”,模型直接生成解释内容。
- 单样本推理(One-Shot Learning)
定义:模型在给出一个示例后,利用该示例进行推理。这帮助模型理解任务的基本结构和预期结果。
应用:例如,给出一个例子“输入:‘猫’,输出:‘cat’”,然后模型生成“输入:‘狗’,输出:‘dog’”。
- 少样本推理(Few-Shot Learning)
定义:提供多个示例,帮助模型识别任务模式,从而生成更准确的输出。这种方法比单样本推理提供更多的信息和上下文。
应用:给出几组输入输出示例,然后要求模型处理新的类似任务。
- 思维链推理(Chain-of-Thought, COT)
定义:通过将复杂任务分解为多个步骤,引导模型逐步推理并生成结果。这种方法特别适合处理需要多步骤逻辑推理的任务。
应用:例如,在解决数学问题时,引导模型首先列出已知条件,然后逐步推导出答案。
- 思维树推理(Tree-of-Thought, TOT)
定义:思维树推理是一种扩展的推理方法,模型在推理过程中通过探索多个可能的路径(类似于树状结构)来生成和选择最佳答案。这种方法允许模型考虑不同的推理路径和选项,类似于人类在解决复杂问题时会探索不同的可能性。
应用:在解决复杂的决策问题时,模型可以探索不同的路径或方案,并选择最优解。例如,在战略游戏中,模型可以基于多个可能的动作序列,选择最优策略。
推理方法 | 关键论文 | 论文地址 |
---|---|---|
零样本推理(Zero-Shot Learning) | Radford, A., Narasimhan, K., Salimans, T., & Sutskever, I. (2018).Improving Language Understanding by Generative Pre-Training. | ++OpenAI GPT-1 Paper++ |
单样本和少样本推理(One-Shot and Few-Shot Learning) | Brown, T., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., ... & Amodei, D. (2020).Language Models are Few-Shot Learners. | ++GPT-3 Paper++ |
思维链推理(Chain-of-Thought, COT) | Wei, J., Wang, X., Schuurmans, D., Bosma, M., Ichter, B., Xia, F., ... & Zhou, D. (2022).Chain of Thought Prompting Elicits Reasoning in Large Language Models. | ++Chain of Thought Paper++ |
思维树推理(Tree-of-Thought, TOT) | Yao, S., Zhao, J., Yu, D., Cao, Y., Zhang, R., & Narasimhan, K. (2023).Tree of Thoughts: Deliberate Problem Solving with Large Language Models. | ++Tree of Thoughts Paper++ |
4.3 大模型如何与外界交互
在大模型的发展中,与外界进行动态交互的能力越来越重要。通过与外部信息源或系统的互动,大模型可以获得实时的、相关的知识,从而提高生成内容的准确性和实用性。两种重要的技术方向在此背景下脱颖而出:检索增强生成(Retrieval-Augmented Generation, RAG) 和推理和行动协同技术(ReAct)。
4.3.1 RAG
检索增强生成(RAG) 是一种将生成模型与信息检索系统结合的技术,用于提升生成文本的准确性和相关性。传统的生成模型在依赖已有的知识进行文本生成时,可能会因为知识更新不及时或训练数据有限而产生“幻觉”或错误信息。RAG 通过在生成过程中动态地检索外部信息源(如互联网、知识库、数据库)来获取最新的、与任务相关的内容,从而增强模型的生成能力。
RAG 的工作原理通常包括以下步骤:
- 查询构建:在模型生成文本的过程中,首先从上下文中提取关键信息,构建检索查询。
- 信息检索:使用构建的查询在外部信息源中检索相关内容。这些信息源可以是数据库、知识库或搜索引擎。
- 生成增强:将检索到的相关信息输入生成模型,使生成模型能够基于最新的外部信息进行内容生成。
- 输出生成:结合检索到的信息和模型的内在知识,生成最终的输出文本。
RAG 技术在问答系统、对话系统和信息生成任务中表现尤为出色,因为它可以有效降低模型生成不准确信息的风险,并提供更可靠的回答。
ReAct
ReAct 是一种将推理(Reasoning)和行动(Acting)结合在一起的方法,旨在增强大型语言模型(LLMs)的任务解决能力。该方法不仅依赖于模型的推理能力,还允许模型在推理过程中采取行动,通过与外部环境或系统进行交互来获取更多信息或执行特定任务,从而更好地完成复杂的任务。
ReAct 是由研究人员 Shunyu Yao, Jeffrey Zhao, Dian Yu, et al. 提出的,并且他们在 2022 年发布了一篇关于 ReAct 技术的论文,名为 "ReAct: Synergizing Reasoning and Acting in Language Models"。这篇论文主要介绍了如何通过将推理和行动结合,使得语言模型在解决实际问题时变得更加高效和灵活。ReAct: Synergizing Reasoning and Acting in Language Models by Shunyu Yao, Jeffrey Zhao, Dian Yu, et al. (2022).Link to paper.
应用场景:
推理与行动结合:ReAct 通过将推理和行动的步骤集成在一起,使得模型不仅能思考问题的解决方案,还能执行特定操作来获取所需信息或达成目标。 动态交互:该方法允许模型在面对复杂问题时,进行逐步推理并在必要时进行动作,如访问数据库或与用户进行多轮互动,以解决问题。 广泛应用:ReAct 技术特别适合需要复杂推理和多步骤决策的任务,如对话系统、智能问答和决策支持系统。
ReAct 的提出代表了语言模型在增强智能交互和任务解决能力上的重要一步,也为未来更多动态交互技术的发展提供了方向和基础。
在 OpenAI AI 应用研究主管 Lilian Weng 的博客《大语言模型(LLM)支持的自主式代理》中,将规划能力视为关键的组件之一,用于将任务拆解为更小可管理的子任务,这对有效可控地处理好更复杂的任务效果显著。
三方应用: https://lilianweng.github.io/posts/2023-06-23-agent/
4.4 什么是大模型的Agent技术
大模型的 Agent 技术是一种利用大型语言模型(LLMs)来模拟智能代理(Agent)的技术,使得模型不仅能够理解和生成自然语言,还能够通过一系列复杂的交互和决策来完成特定任务。Agent 技术在自然语言处理领域的发展使得大模型能够更加自主地执行任务,如信息检索、自动化工作流、智能问答等。
Agent 技术的核心原理是通过语言模型的强大理解和生成能力,使其能够执行多步骤的任务,并与环境或用户进行动态交互。其工作原理可以概括为以下几个步骤:
- 感知(Perception):模型首先通过输入(如文本或其他信号)理解当前环境或任务状态。
- 推理与决策(Reasoning and Decision-Making):基于感知到的信息,模型通过推理来选择最合适的行动。这可能包括进一步询问问题、检索数据或执行某些操作。
- 行动(Action):根据推理的结果,模型执行具体的行动。这些行动可能涉及与外部系统的交互,如数据库查询、API 调用,或与用户的进一步对话。
- 反馈与调整(Feedback and Adjustment):在行动后,模型根据新的信息调整其策略,继续执行任务或修正错误。
主要应用:
智能问答系统:
通过 Agent 技术,问答系统能够根据用户的问题动态地检索信息,并基于检索到的信息生成准确的回答。这些系统可以适应复杂的查询,甚至在多轮对话中表现出色。
例如,结合 ReAct 技术,系统不仅能提供答案,还能执行搜索或计算等具体任务。
自动化工作流:
在企业自动化中,Agent 可以被用来自动处理重复性任务,如邮件分类、客户服务自动化、数据录入等。
这些代理能够根据任务的上下文自动调整策略,从而提高效率和准确性。
对话代理(Conversational Agents):
应用于聊天机器人、虚拟助手等场景,Agent 技术使这些系统能够处理复杂的对话情境,提供更自然和智能的用户体验。
例如,数字助手可以通过理解用户的需求和偏好,主动建议下一步行动或提供相关服务。
游戏和模拟环境:
在游戏中,Agent 可以被用作 NPC(非玩家角色),这些角色能够自主地与玩家互动,提供更为复杂和动态的游戏体验。
模拟环境中的 Agent 也可以用于训练和研究,帮助模拟复杂的行为或场景。
典型框架和工具:
LangChain:这是一个用于构建 LLM 驱动的 Agent 系统的框架。LangChain 提供了模块化的工具集,允许开发者轻松创建能够与外部环境互动的智能代理。
OpenAI API 和 ChatGPT:这些平台提供了强大的模型,可以作为 Agent 的基础。通过 API,可以让模型执行具体任务,如回答问题、生成代码、或处理多步骤操作。
Agent 技术代表了大模型应用中的一个重要发展方向,使得 AI 系统能够更加自主和智能地执行复杂任务。这种技术在未来可能会在更多的应用场景中得到广泛应用。
4.5 提示工程vs微调vs预训练
在大模型的应用中,提示工程(Prompt Engineering)、微调(Fine-Tuning)和使用预训练模型是三种常见的方法,它们各有优势,具体选择取决于应用场景和任务需求。
1. 提示工程(Prompt Engineering)
概念:提示工程是指通过设计合适的输入提示,直接利用预训练模型完成任务,而无需进一步训练或调整模型参数。提示可以是问题、任务描述或少量示例,用来引导模型生成所需的输出。 优势:
快速:无需额外的训练时间或计算资源,能够直接利用现有的预训练模型。
灵活:适用于多种任务,可以通过修改提示来适应不同的应用场景。
局限性:
性能依赖提示质量:模型的表现高度依赖于提示的设计,且在一些复杂任务中,提示工程可能无法达到最佳效果。
缺乏专门性:对于某些特定任务,提示工程可能不如微调后的模型表现优异。
2. 微调(Fine-Tuning) 概念:微调是在预训练模型的基础上,使用任务特定的有标签数据集对模型进行额外的训练,以使其更好地适应特定任务。 优势:
高效能:微调后的模型通常在特定任务上表现最佳,尤其是当任务有明确的目标(如分类、回归)时。
适应性强:通过微调,模型可以更好地理解任务的细微差异,提高在特定领域的精度。
局限性:
资源需求大:微调需要额外的计算资源和时间,尤其是对于大型数据集和复杂任务。
需要数据:微调需要足够的高质量、有标签的数据集,这在一些领域可能较难获得。
3. 使用预训练模型(Pre-trained Models)
预训练 概念:预训练模型是指在大规模无监督数据集上训练好的模型,这些模型已经学习了广泛的语言结构和知识。用户可以直接使用这些模型来完成任务,通常结合提示工程或微调。
优势:
广泛适用:预训练模型可以用于多种任务,具有良好的通用性。
现成可用:不需要重新训练模型即可在许多任务中表现出色。
局限性:
通用性有限:虽然预训练模型有广泛的知识,但在特定任务上可能不如微调后的模型精确。
资源需求:使用大型预训练模型通常需要较高的计算资源,特别是在推理过程中。
如何选择:
简单任务:对于简单或通用的任务,提示工程可能已经足够,并且能够快速部署。
特定任务:对于特定领域或需要高精度的任务,微调通常是最佳选择。
资源受限的场景:如果计算资源有限或任务多样化,可以直接使用预训练模型结合提示工程。
实际应用中的趋势:
在实际应用中,许多团队会先使用提示工程来快速原型化和验证想法,然后在需要更高精度时转向微调。此外,结合两者的方法(例如先微调模型,然后通过提示工程进一步调整输出)也越来越常见。
不同方法的选择应根据任务的复杂性、可用资源和目标精度来决定 。
5. 大模型与代码生成
大型语言模型(LLMs)的出现,特别是像 ChatGPT 这样的模型,已经深刻重塑了自动化代码相关任务的格局,包括代码补全、代码翻译和代码修复等领域。其中,代码生成尤为引人注目,这项任务涉及从自然语言描述生成源代码,受到了学术界和工业界的广泛关注。GitHub Copilot、CodeGeeX 和 Amazon CodeWhisperer 等工具的开发,正是利用前沿代码 LLMs 以促进软件开发的实例。
早期的代码生成研究主要依赖于启发式规则或专家系统,如基于概率语法的框架和专门的语言模型。这些方法通常较为僵化,难以适应扩展需求。而基于 Transformer 的大型语言模型的引入,则彻底改变了这一范式。凭借其卓越的能力和多功能性,这些模型迅速成为代码生成的首选方法。LLMs 的一个显著特点是其能够理解并执行指令,使得即使是编程新手也能通过简单的需求表达生成代码。这一能力大大普及了编程,让更多的人能够参与其中。
在代码生成任务中的表现方面,LLMs 已有显著提升。例如,HumanEval 基准测试显示,模型的表现从 PaLM 8B 的 3.6% Pass@1 提高到 LDB 的 95.1%。显然,HumanEval 已成为评估 LLMs 编码能力的重要标准。
为了展现 LLMs 在代码生成领域的发展历程,我们在【图 1】中展示了该领域的整体概况。这一领域涵盖了广泛的模型类型,其中一些模型如 ChatGPT、GPT-4、LLaMA 和 Claude 3 适用于通用应用,而另一些模型如 StarCoder、Code LLaMA、DeepSeek-Coder 和 Code Gemma 则专门为代码相关任务定制。代码生成与 LLMs 最新进展的融合至关重要,尤其是在编程语言被视为多语种自然语言的不同方言时。这些模型不仅满足了软件工程(SE)的需求,还推动了 LLMs 向实际生产应用的发展。
此外,本部分还对代码生成的高级主题进行了探讨【图 2】,包括数据精心策划、指令微调、基于反馈的对齐、提示技术、自主编码代理的发展、检索增强代码生成,以及 LLM 作为代码生成裁判的应用等。
5.1 大模型代码生成简史
5.2 大模型代码生成的技术与应用
涉及如下方面:
- 训练的数据哪里来的
- 训练的方法和架构
- 如何评估模型
- 应用场景和方式
5.2.1 code 大模型排行榜
https://lmarena.ai/?leaderboard
5.3 如何实现一个GitHub Copilot
GitHub Copilot 是一种由 GitHub、OpenAI 和 Microsoft 共同开发的人工智能编程助手,旨在提高开发者的编码效率。其架构图可以帮助理解其工作原理和功能实现。
GitHub Copilot 的架构概述
GitHub Copilot 的架构可以分为几个主要组成部分:
- 用户交互层
该层通过集成到各种开发环境(IDE)中与用户进行交互,监听用户的输入和操作。
它处理用户的代码输入、命令和上下文信息,向后端发送请求。
2.IDE 插件
插件作为用户界面与后端服务之间的“胶水层”,负责处理输入和输出。
它将用户的代码上下文封装为请求,并将其发送到服务器。
3.上下文构建
Copilot 通过分析当前文件及相关文件的内容,构建详细的上下文信息。
该过程包括读取用户正在编辑的文件、相近的测试文件及其编辑历史,以生成更精准的代码建议。
4.后端服务
后端服务接收来自插件的请求,并将其发送到大型语言模型(如 OpenAI 的 GPT4o)。
GPT4o 经过训练,可以根据上下文生成相应的代码建议。
5.反馈机制
- Copilot 记录用户对建议的反馈(如接受或拒绝),以优化模型的性能和建议的质量。
GitHub Copilot 的工作流程
上下文捕捉:插件捕捉当前文件及相关文件的上下文信息。
请求发送:上下文信息被封装成请求,发送到后端服务。
代码生成:后端服务通过 Codex 模型生成代码建议。
结果返回:生成的建议返回到插件,展示给用户。
5.4 其它业界关于 coding 产品的调研
三方应用: https://zackproser.com/blog/ai-assisted-dev-tools-compared
Tool | Category | Homepage |
---|---|---|
GitHub Copilot | Code Autocompletion | GitHub Copilot |
Warp | Intelligent Terminals / Shells | Warp |
Descript | Video Editing | Descript |
Codeium | Code Autocompletion | Codeium |
Kapwing | Video Editing | Kapwing |
Aider | Command-line tool | Aider |
Cody | Code Autocompletion | Cody |
Mods | Command-line tool | Mods |
Zed | Code Autocompletion | Zed |
Mutahunter | Mutation Testing | Mutahunter |
Cursor | Code Autocompletion | Cursor |
OpusClip | Video Editing | OpusClip |
Tabnine | Code Autocompletion | Tabnine |
MutableAI | Code Autocompletion | MutableAI |
CodiumAI | Code Autocompletion | CodiumAI |
Grit.io | Code Autocompletion | Grit.io |
Adrenaline AI | Code Autocompletion | Adrenaline AI |
Amazon CodeWhisperer | Code Autocompletion | CodeWhisperer |
Figstack | Code Autocompletion | Figstack |
6. 大模型在团队落地的建议
6.1 先用起来
在笔者实际调研来看可以看到仍然有很多同学没有使用起来,根据公开的和内部的调研,实际提效在 30%左右,所以用起来是第一步要做的事情。
👍 最实用的编程场景:
将聊天机器人与公司内部文档进行集成
代码 (库) 解释和风格适应
代码生成,尤其是目标明确的场景
自动补全
不同编程语言之间的代码翻译
生成单元测试
👍 学习与研究助手:
了解编程概念、语法和用例
搜索相关库、框架、技术信息
探索新的技术领域
作为配对编程工具,帮助寻找解决方案
是可互动的「橡皮鸭」,向AI详尽描述问题,就可以获取灵感和答案
👍 帮助启动工作:
构建产品原型/初步版本,完成基础功能展示和测试
构建 POC (proof-of-concepts),验证概念的可行性
生成项目的样板代码或脚手架
理解新的代码库
探讨遇到的问题