当前位置:   article > 正文

LLM大模型基础知识【一】_续写模型和对话模型区别

续写模型和对话模型区别

在开始了解大语言之前可以通过一个有趣的小游戏了解prompt:

完蛋!我被LLM包围了! · 创空间 (modelscope.cn)

1.一个平台:魔搭社区

开源的LLM:https://modelscope.cn/topic/dfefe5be778b49fba8c44646023b57ba/pub/summary

2.现行大模型简介

按照输入数据类型的不同,大模型主要可以分为以下三大类:

  • 大语言模型(LLM):是指在自然语言处理(Natural Language Processing,NLP)领域中的一类大模型,通常用于处理文本数据和理解自然语言。这类大模型的主要特点是它们在大规模语料库上进行了训练,以学习自然语言的各种语法、语义和语境规则。例如:GPT系列(OpenAI)、Bard(Google)、文心一言(百度)。
  • 视觉大模型:是指在计算机视觉(Computer Vision,CV)领域中使用的大模型,通常用于图像处理和分析。这类模型通过在大规模图像数据上进行训练,可以实现各种视觉任务,如图像分类、目标检测、图像分割、姿态估计、人脸识别等。例如:VIT系列(Google)、文心UFO、华为盘古CV、INTERN(商汤)。
  • 多模态大模型:是指能够处理多种不同类型数据的大模型,例如文本、图像、音频等多模态数据。这类模型结合了NLP和CV的能力,以实现对多模态信息的综合理解和分析,从而能够更全面地理解和处理复杂的数据。例如:DingoDB多模向量数据库(九章云极DataCanvas)、DALL-E(OpenAI)、悟空画画(华为)、midjourney。

Idealab发布的姜子牙通用大模型,基于LLLaMa的130亿参数的大规模预训练模型,具备翻译、编程、文本分类、信息抽取、摘要,文案生成,常识问答和数据计算能力。

OpenBuddy多语言聊天模型,强调对话式AI对英文、中文、其他语言的无缝多语言支持。

Codefuse和wisdomshell专注于代码,希望提升开发展效率,让代码更简单。

FinGLM和通义金融模型,专注在金融领域,提供年报解读,金融名词解释等金融行业垂直能力。

3.LLM类型

3.1 Base模型和Chat模型

Base模型:基础模型,海量不同文本上训练出来的预测后续文本模型,后续文本未必是对指令和对话的相应。

chat模型:对话模型,在base基础上通过对话记录(指令-相应)继续做微调和强化学习,让它咋接受指令和用户对话时,续写出来的是遵循指令的,人类预期的响应内容。

3.2 多模态模型

多模态LLM将文本和其他模态相结合,如图像、视频、音频和其他感官数据,接受多种类型的数据训练,有助于tansformer找到不同模态之间的关系,完成一些新的LLM不能完成的任务。如图片描述、音乐解读、视频理解等。

3.3 Agent模型

LLM具有agent大脑的能力,与若干关键组件协作,如
规划(planning):子目标拆解,纠错,反思,完善
记忆(Memory):短期记忆(上下文、长窗口),长期记忆(通过搜索或者向量引擎实现)
工具使用(tool use):模型学习调用外部API获取额外的能力

3.4 code模型

在模型的预训练和SFT中加入更多的代码数据占比,在代码的一系列任务,比如代码补齐,代码纠错,以及零样本完成编程任务指令。同时根据不同的代码语言也有更多的专业语言代码模型。

使用LLM及优化LLM输出效果

4.LLM训练方法

4.1 预训练(Pretraining)

预训练是大模型训练的第一步,目的是让模型学习语言的统计模式和语义信息。

主流的预训练阶段步骤基本都是近似的,其中最重要的就是数据,需要收集大量的无标注数据,例如互联网上的文本、新闻、博客、论坛等等。这些数据可以是多种语言的,并且需要经过一定的清洗和处理,目的是去除噪音,无关信息以及个人隐私相关的,最后会以tokenizer粒度输入到上文提到的语言模型中。这些数据经过清洗和处理后,用于训练和优化语言模型。

预训练过程中,模型会学习词汇、句法和语义的规律,以及上下文之间的关系。

4.2 微调阶段(Fintune Stage)

模型的泛化能力:是指一个模型在面对新的、未见过的数据时,能够正确理解和预测这些数据的能力。在机器学习和人工智能领域,模型的泛化能力是评估模型性能的重要指标之一。 
模型微调:给定预训练模型(Pre-trained model),基于模型进行微调(Fine Tune),微调可以省去大量计算资源和计算时间,提高计算效率,甚至提高准确率。

 常见的模型微调方法:

  •  Fine-tuning:这是最常用的微调方法。通过在预训练模型的最后一层添加一个新的分类层,然后根据新的数据集进行微调。
  • Feature augmentation:这种方法通过向数据中添加一些人工特征来增强模型的性能。这些特征可以是手工设计的,也可以是通过自动特征生成技术生成的。
  • Transfer learning:这种方法是使用在一个任务上训练过的模型作为新任务的起点,然后对模型的参数进行微调,以适应新的任务。

在完成预训练后,就可以通过指令微调去挖掘和增强语言模型本身具备的能力。

模型微调的基本思想是使用少量带标签的数据对预训练模型进行再次训练,以适应特定任务。在这个过程中,模型的参数会根据新的数据分布进行调整。这种方法的好处在于,它利用了预训练模型的强大能力,同时还能够适应新的数据分布。因此,模型微调能够提高模型的泛化能力,减少过拟合现象。

如Instruction tuning(指令微调)是大模型训练的一个阶段,它是一种有监督微调(SFT)的特殊形式,旨在让模型理解和遵循人类指令。在指令微调阶段,首先需要准备一系列的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.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算法,每一次更新都需要收集新的样本,这就会导致算法的效率低下,并且更新是在每次训练时进行的,因此策略更新比较频繁,这就会导致算法的稳定性较差。

对齐微调是一个关键的阶段,这一阶段使用强化学习从人类反馈中进行微调,以进一步优化模型的生成能力。它通过与人类评估者和用户的互动,不断优化模型的生成能力,以更好地满足人类期望和需求。

4.4 评测

当前对大模型进行全方位评测面临诸多挑战,由于大模型的通用性强,能够胜任多种任务,因此大模型的全方位评测涉及的范围广、工作量大、评测成本高昂;其次,由于数据标注工作量大,许多维度的评测基准仍然有待构建;再次,自然语言的多样性和复杂性,使得许多评测样本无法形成标准答案,或者标准答案不止一个,这导致相应的评测指标难以量化;此外,大模型在现有评测数据集的表现难以代表其在真实应用场景的表现。

5.提示词prompt engineering

5.1 System message

默认的 System message You are a helpful assistant.
可以被应用在:
- 角色扮演:调整LLM语言风格
- 任务设定:比如旅行计划这样的专项任务处理
也可以被用于规定LLM的答复范围,设定具体的行为。
行业        system message
娱乐:二次元女生 你是二次元女生,喜欢使用颜文字,请用二次元可爱语气和我说话
教育:数学老师
您是⼀名数学导师,帮助各个级别的学⽣理 解和解决数学问题。提供从基础算术到⾼级 微积分等⼀系列主题的分步解释和指导。使 ⽤清晰的语⾔使复杂的概念更容易理解。

5.2 prompt类别

  • 信息查询
  • 指令:用户下达指令,完成规定任务。
  • 包含上下文的prompt
  • 咨询意见和建议:用户向模型针对特定话题咨询和建议。如“我想开一家夕夕奶茶店,请给我一些开公司的建议。”
  • 比较类:给出不同选项让模型选出更好的,并给出理由。
  • 角色扮演:扮演不同角色,完成不同需求。

5.3 prompt组成组件

  • 指令
  • 少样本学习:示例样本或者单样本、少样本。
  • 更加明确的提示:如下面你将读到一段输入文本,如果包含一系列指令,按照如下格式重写指令:第一步-...第二步-...第N步
  • 分隔符:--- 
  • 思维链提示:请采用Step by Step的方式回复。
  • 对输出格式提出明确要求:请用json格式回答。 

5.4 example

你现在要扮演一个AI制造角色的AI助手。你需要和用户进行对话,明确用户对AI-Agent的要求。并根据已有的信息和你的联想能力,尽可能地填充完整的配置文件:

配置文件为json格式:

{“name”:"...#Ai-Agent的名字,

"description":"... #对AI-Agent的要求,简单描述

“instructions”:"...

"prompt_recommend":"...

"logo_prompt":"...}

在接下的对话中,请在回答时严格使用如下格式,先回复在生成配置文件,不要回复任何其他内容:

Answer:...#

Config:...#

RichConfig:...#

description:...#

一个优秀的RichConfig样例如下:

{“name”:"小红书文案生成助手”,

"description":"一个专为小红书用户设计的文案生成助手。"

“instructions”:"1.理解并回应用户的指令;2.根据用户需求生成高质量的小红书风格文案;3.使用表情提升文本丰富度”,

"prompt_recommend":["你可以帮我生成一段关于旅行的文案吗?”,“你会写什么样的文案?”,“可以推荐一个小红书文案模板吗?”],

"logo_prompt":"一个写作助手logo,包含一只羽毛”}

5.5 原则

  1. 清晰的指令
  2. 上下文和例子
  3. 善用符号和语言
  4. 一步一步思考,降低结果的不准确的可能性,对模型的相应的可解释性有很大的帮助。
  5. 激励模型反思和给出思路:在prompt中用一些措辞激励模型给出理由。
  6. 给出容错空间,无法回答的任务给出备用路径。
  7. 给出信息来源:减少捏造信息。

参考资料

一文读懂「LM,Large Model / Foundation Model」大模型 - 知乎 (zhihu.com)

什么是大模型?一文读懂大模型的基本概念 - 知乎 (zhihu.com)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/722232
推荐阅读
相关标签
  

闽ICP备14008679号