近年来,随着计算机技术和大数据的快速发展,深度学习在各个领域取得了显著的成果。为了提高模型的性能,研究者们不断尝试增加模型的参数数量,从而诞生了大模型这一概念。本文将从大模型的原理、训练过程、prompt和相关应用介绍等方面进行分析,帮助读者初步了解大模型。
大模型的定义
大模型是指具有数千万甚至数亿参数的深度学习模型。近年来,随着计算机技术和大数据的快速发展,深度学习在各个领域取得了显著的成果,如自然语言处理,图片生成,工业数字化等。为了提高模型的性能,研究者们不断尝试增加模型的参数数量,从而诞生了大模型这一概念。本文讨论的大模型将以平时指向比较多的大语言模型为例来进行相关介绍。
大模型的基本原理与特点
大模型的原理是基于深度学习,它利用大量的数据和计算资源来训练具有大量参数的神经网络模型。通过不断地调整模型参数,使得模型能够在各种任务中取得最佳表现。通常说的大模型的“大”的特点体现在:参数数量庞大、训练数据量大、计算资源需求高等。很多先进的模型由于拥有很“大”的特点,使得模型参数越来越多,泛化性能越来越好,在各种专门的领域输出结果也越来越准确。现在市面上比较流行的任务有AI生成语言(ChatGPT类产品)、AI生成图片(Midjourney类产品)等,都是围绕生成这个概念来展开应用。“生成”简单来说就是根据给定内容,预测和输出接下来对应内容的能力。比如最直观的例子就是成语接龙,可以把大语言模型想象成成语接龙功能的智能版本,也就是根据最后一个字输出接下来一段文章或者一个句子。
一个基本架构,三种形式:
当前流行的大模型的网络架构其实并没有很多新的技术,还是一直沿用当前NLP领域最热门最有效的架构——Transformer结构。相比于传统的循环神经网络(RNN)和长短时记忆网络(LSTM),Transformer具有独特的注意力机制(Attention),这相当于给模型加强理解力,对更重要的词能给予更多关注,同时该机制具有更好的并行性和扩展性,能够处理更长的序列,立马成为NLP领域具有奠基性能力的模型,在各类文本相关的序列任务中取得不错的效果。
根据这种网络架构的变形,主流的框架可以分为Encoder-Decoder, Encoder-Only和Decoder-Only,其中:
1)Encoder-Only,仅包含编码器部分,主要适用于不需要生成序列的任务,只需要对输入进行编码和处理的单向任务场景,如文本分类、情感分析等,这类代表是BERT相关的模型,例如BERT,RoBERT,ALBERT等
2)Encoder-Decoder,既包含编码器也包含解码器,通常用于序列到序列(Seq2Seq)任务,如机器翻译、对话生成等,这类代表是以Google训出来T5为代表相关大模型。
3)Decoder-Only,仅包含解码器部分,通常用于序列生成任务,如文本生成、机器翻译等。这类结构的模型适用于需要生成序列的任务,可以从输入的编码中生成相应的序列。同时还有一个重要特点是可以进行无监督预训练。在预训练阶段,模型通过大量的无标注数据学习语言的统计模式和语义信息。这种方法可以使得模型具备广泛的语言知识和理解能力。在预训练之后,模型可以进行有监督微调,用于特定的下游任务(如机器翻译、文本生成等)。这类结构的代表也就是我们平时非常熟悉的GPT模型的结构,所有该家族的网络结构都是基于Decoder-Only的形式来逐步演化。
可以看到,很多NLP任务可能可以通过多种网络结果来解决,这也主要是因为NLP领域的任务和数据的多样性和复杂性,以及现代深度学习模型的灵活性和泛化能力,具体哪种结构有效,一般需要根据具体场景和数据,通过实验效果进行选择。
训练三步骤
初步认识了大模型长什么样了,接下来一起来看看如何训练出一个大模型。
训练方式,这里主要参考OpenAI发表的关于InstructGPT的相关训练步骤,主流的大模型训练基本形式大多也是类似的:
1、预训练(Pretraining)
预训练是大模型训练的第一步,目的是让模型学习语言的统计模式和语义信息。主流的预训练阶段步骤基本都是近似的,其中最重要的就是数据,需要收集大量的无标注数据,例如互联网上的文本、新闻、博客、论坛等等。这些数据可以是多种语言的,并且需要经过一定的清洗和处理,以去除噪音,无关信息以及个人隐私相关的,最后会以tokenizer粒度输入到上文提到的语言模型中。这些数据经过清洗和处理后,用于训练和优化语言模型。预训练过程中,模型会学习词汇、句法和语义的规律,以及上下文之间的关系。OpenAI的ChatGPT4能有如此惊人的效果,主要的一个原因就是他们训练数据源比较优质。
2、 指令微调阶段(Instruction Tuning Stage)
在完成预训练后,就可以通过指令微调去挖掘和增强语言模型本身具备的能力,这步也是很多企业以及科研研究人员利用大模型的重要步骤。
Instruction tuning(指令微调)是大模型训练的一个阶段,它是一种有监督微调的特殊形式,旨在让模型理解和遵循人类指令。在指令微调阶段,首先需要准备一系列的NLP任务,并将每个任务转化为指令形式,其中指令包括人类对模型应该执行的任务描述和期望的输出结果。然后,使用这些指令对已经预训练好的大语言模型进行监督学习,使得模型通过学习和适应指令来提高其在特定任务上的表现。
为了让模型训练更加高效和简单,这个阶段还有一种高效的fine-tuning技术,这为普通的从业者打开了通向使用大模型的捷径。
Parameter-Efficient Fine-Tuning (PEFT)旨在通过最小化微调参数的数量和计算复杂度,达到高效的迁移学习的目的,提高预训练模型在新任务上的性能,从而缓解大型预训练模型的训练成本。在训练过程中,预训练模型的参数保持不变,只需微调少量的额外参数,就可以达到与全量微调相当的性能。
目前,很多研究对PEFT方法进行了探索,例如Adapter Tuning和Prefix Tuning等。其中,Adapter Tuning方法在面对特定的下游任务时,将预训练模型中的某些层固定,只微调接近下游任务的几层参数。而Prefix Tuning方法则是在预训练模型的基础上,添加一些额外的参数,这些参数在训练过程中会根据特定的任务进行更新和调整。
工业界现在常用的Adapter Tuning的技术是Low-Rank Adaptation(LoRA) 。它通过最小化微调参数的数量和计算复杂度,实现高效的迁移学习,以提高预训练模型在新任务上的性能。LoRA 的核心思想是将预训练模型的权重矩阵分解为两个低秩矩阵的乘积。通过这种分解,可以显著减少微调参数的数量,并降低计算复杂度。该方式和机器学习中经典的降维的思想很类似,类似地,LoRA 使用了矩阵分解技术中的奇异值分解 (Singular Value Decomposition, SVD) 或低秩近似 (Low-Rank Approximation) 方法,将原始权重矩阵分解为两个低秩矩阵的乘积。
在微调过程中,LoRA 只更新这两个低秩矩阵的参数,而保持其他预训练参数固定不变。这样可以显著减少微调所需的计算资源和时间,并且在很多任务上取得了与全量微调相当的性能。
LoRA技术的引入使得在大规模预训练模型上进行微调更加高效和可行,为实际应用提供了更多可能性。
3、对齐微调(Alignment Tuning)
主要目标在于将语言模型与人类的偏好、价值观进行对齐,其中最重要的技术就是使用RLHF(reinforcement learning from human feedback)来进行对齐微调。
Step 1.预训练模型的有监督微调
先收集一个提示词集合,并要求标注人员写出高质量的回复,然后使用该数据集以监督的方式微调预训练的基础模型。
Step 2.训练奖励模型
这个过程涉及到与人类评估者进行对话,并根据他们的反馈来进行调整和优化。评估者会根据个人偏好对模型生成的回复进行排序,从而指导模型生成更符合人类期望的回复。这种基于人类反馈的训练方式可以帮助模型捕捉到更多人类语言的特点和习惯,从而提升模型的生成能力。
Step 3.利用强化学习模型微调
主要使用了强化学习的邻近策略优化(PPO,proximal policy optimization )算法,对于每个时间步,PPO算法会计算当前产生和初始化的KL散度,根据这个分布来计算一个状态或动作的预期回报,然后使用这个回报来更新策略,达到对SFT模型进一步优化。
但是这种算法存在一些比较明显的缺点,比如PPO是on-policy算法,每一次更新都需要收集新的样本,这就会导致算法的效率低下,并且更新是在每次训练时进行的,因此策略更新比较频繁,这就会导致算法的稳定性较差。
所以当前有很多新的技术出来替代RLHF技术:
直接偏好优化(DPO)是一种对传统RLHF替代的技术,作者在论文中提出拟合一个反映人类偏好的奖励模型,将奖励函数和最优策略之间的映射联系起来,从而把约束奖励最大化问题转化为一个单阶段的策略训练问题。然后通过强化学习来微调大型无监督语言模型,以最大化这个预估的奖励。这个算法具有简单有效和计算轻量级的特点,不需要拟合奖励模型,只需要进行单阶段训练,也不需要大量的超参数调节,所以在响应质量方面也通常优于传统的RLHF。另外还有RLAIF从采样方式,生成训练奖励模型的评分的角度来替代原有的PPO的RLHF进行训练。
DPO方法
对齐微调是一个关键的阶段,这一阶段使用强化学习从人类反馈中进行微调,以进一步优化模型的生成能力。它通过与人类评估者和用户的互动,不断优化模型的生成能力,以更好地满足人类期望和需求。
Prompt
作为大模型的一个技术分支,很多人接触大模型的第一步就是写prompt,而这的确也是大模型发展的其中一个重要方向技术,也是很多实际运用问题解决的关键步骤。
Prompt技术的基本思想是,通过给模型提供一个或多个提示词或短语,来指导模型生成符合要求的输出。本质上是通过恰当的初始化参数(也就是适当的输入语言描述),来激发语言模型本身的潜力。例如,在文本分类任务中,我们可以给模型提供一个类别标签的列表,并要求它生成与这些类别相关的文本;在机器翻译任务中,我们可以给模型提供目标语言的一段文本,并要求它翻译这段文本。
Prompt根据常用的使用场景可以概括为以下四种:
Zero-Shot Prompt: 在零样本场景下使用,模型根据提示或指令进行任务处理,不需要针对每个新任务或领域都进行专门的训练,这类一般作为训练通用大模型的最常见的评估手段。
Few-Shot Prompt: 在少样本场景下使用,模型从少量示例中学习特定任务,利用迁移学习的方法来提高泛化性能,该类prompt也是很多实际应用案例都采取来进行大模型微调训练的方式。
**Chain-of-thought prompt:**这类prompt常见于推理复杂任务,它通过引导模型逐步解决问题,以一系列连贯的步骤展示推理的思路和逻辑关系。通过这种逐步推理的方式,模型可以逐渐获得更多信息,并在整个推理过程中累积正确的推断。
**Multimodal prompt:**这类prompt包含的信息就更丰富,主要是将不同模态的信息(如文本、图像、音频等)融合到一起,形成一种多模态的提示,以帮助模型更好地理解和处理输入数据。比如在问答系统中,可以将问题和相关图像作为多模态输入,以帮助模型更好地理解问题的含义和上下文背景,并生成更加准确和全面的答案。
在具体实践中,根据场景设计合适的prompt进行优化,评估也是大模型工程中重要的一步,对大模型准确率和可靠性提升是必不可少的,这步也是将模型潜在强大能力兑现的关键一环。
大模型应用
当前大模型已经在很多领域开始产品化落地,除了ChatGPT这类大家熟知的产品,主要还有以下一些主流的应用:
**1)办公Copilot类产品:**微软首先尝试使用大模型能力来接入旗下的Office系列软件,在Word中可以对文档进行总结并提出修改编辑的建议,也可以对所给的文章进行总结;此前一直头疼Excel各种复杂操作的用户现在也降低了使用门槛,可以直接通过描述就处理数据;PowerPoint中通过对提出要求识别就能自动生成一份展示内容;在Outlook中直接使用自然语言来生成邮件内容等功能,实现真正的AI秘书。
**2)Github Copilot类产品:**直接通过对话方式进行各种功能代码的生成,包括帮忙写测试用例,解释代码片段和debug程序问题,这个功能对解放程序员生产力取得了革命性的进步,能让开发人员更多的关注到业务理解,系统设计,架构设计等更高级需求的事情上。
**2)教育知识类产品:**得益于大模型强大的理解以及知识储备,很多公司也嵌入其知识类产品进行应用,比如chatPDF就可以帮助经常看论文的科研人员快速地通过问答的方式进行文章的信息提取,理解以及总结重要内容,大大提升了阅读新论文的效率;对于学习语言的人来说,一款叫Call Annie的软件基本能取代口语老师的角色,并且可以无限时间,随时随地进行口语对话练习。
**4)搜索引擎和推荐系统:**大模型可以应用于企业的搜索引擎和推荐系统,通过深度学习算法,对用户的搜索意图进行准确理解,提供更精准的搜索结果和个性化的推荐内容。这有助于提升用户体验,增加用户黏性,提高企业的转化率和销售额。
**5)公司业务定制化大模型:**大模型具有通用性能力,但是在很多零样本的场景的表现依然比不上那个领域正在使用的产品,例如在某些垂直领域,包括工业领域,医药领域,管理领域等场景下进行专业问题,研究型问题的使用依然需要特定场景的数据进行微调,这种定制化的服务也能给企业带来巨大的效率提升和节省成本的收益,属于比较有前景的业务。
**6)计算相关上下游相关产业:**很多公司正在积极探索基于GPU、FPGA和ASIC等硬件加速制造技术,以支持大模型的训练和推理速度。此外,云计算技术的发展也为大模型的训练提供了更多的计算资源支持,未来科技公司将积极探索基于云计算的分布式训练和推理技术。
除这些外还包括算法优化、隐私和数据安全以及模型可解释性等方面的研究和应用,每天还有很多大模型的应用正在不断涌现,大模型在未来仍然有很大的发展潜力,国内的优秀大模型代表例如百度文心大模型也正在搭建全系统产业化的大模型全景。
大模型挑战
大模型也存在一些现实挑战:
**1.数据安全隐患:**一方面大模型训练需要大量的数据支持,但很多数据涉及到机密以及个人隐私问题,如客户信息、交易数据等。需要保证在训练大模型的同时保障数据安全,防止数据泄露和滥用。OpenAI在发布ChatGPT模型的时候用了数月来保证数据安全以及符合人类正常价值观标准。
**2.成本高昂:**大模型的训练和部署需要大量的计算资源和人力资源,成本非常高昂。对于一些中小型企业而言,难以承担这些成本,也难以获得足够的技术支持和资源。
**3.无法保障内容可信:**大模型会编造词句,无法保障内容真实可信、有据可查。当前使用者只能根据自己需求去验证生成的内容是否真实可信,很难具有权威说服力。
**4.无法实现成本可控:**直接训练和部署千亿级参数大模型成本过高,企业级应用应使用百亿级基础模型,根据不同需求训练不同的垂直模型,企业则只需要负担垂直训练成本。但是,如何实现高效的垂直训练,如何控制成本,仍是大模型面临的问题之一。
以上挑战依然有很大空间值得改进,需要进一步研究和探索新的技术和方法。比如可以采用数据加密、隐私保护等技术来保障数据安全;可以通过改进模型架构、优化训练算法、利用分布式计算等方式来提高大模型的效率和性能;此外,还可以通过开源和共享模型资源来降低成本、促进大模型的普及和应用等方式。
总结
最后,大模型的发展是当前人工智能时代科技进步的必然趋势,甚至可以媲美工业革命般的历史意义。近期,有MIT的研究者发现语言模型竟然能理解这个世界的时间和空间,这项研究也进一步说明大模型还有很多隐藏的能力等着我们去发掘。长期看,训练出通用人工智能技术(AGI)应该只是时间问题。作为相关从业人员,可以开发更高效,更稳定的训练算法,不断探索大模型的上限,作为普通人,我们更需要拥抱这个技术,至少在日常工作和生活中也能享受到其带来的巨大便利。
标签:训练,模型,微调,生成,扫盲,任务,初识,参数 From: https://blog.csdn.net/2401_86435672/article/details/143228916