准备微调训练数据的7个原则
数据质量
确保数据时准确的、清洗过的,并且没有垃圾数据产生噪声
数据集规模
数据集规模的大小也很重要,应该确保数据样本充足,数据集中的文本数量应该在几千到几十万之间。
数据多样性
数据应覆盖多种场景、领域和用户群体
数据平衡
避免数据集中存在严重的类别不平衡或偏见
时间和空间分布
确保数据能准确地反应真实世界的时间和空间分布,重要的步骤包括跨多个时间段和地理位置收集数据、定期更新数据集、考虑特殊或突发事件的影响,以及使用多种数据源和权重调整策略。
数据安全性和合规性
遵循数据安全性和合规性原则,遵守所在国家的法律。
相似性
在准备微调训练数据时,应注意确保数据之间是相互关联的,并且是易于泛化的。
通过多轮对话存储解决信息流失问题
拼接历史与当前输入
拼接历史与当前输入是一种有效但受限的方法,它能够让模型获取更全面的上下文信息,但同时也面临着输入长度限制、计算开销和信息冗余等问题。
上下文向量
在对话模型中,隐藏层通常包含丰富的上下文信息。可以从模型的隐藏层中提取一个固定长度的向量,这个向量可以作为上下文信息在多轮对话之间传递。
对话状态追踪
通过在每轮对话后用模型预测出的槽(slots)和意图(Intends)来更新对话状态,系统能够更准确地满足用户需求。
状态压缩
状态压缩是一个将对话状态从高维空间映射到低维空间的过程,通常通过降维技术或神经网络模型(如自动编码器),以减少存储需求和计算负担。
增量学习和在线学习
增量学习是一种让模型在使用过程中不断更新自己的学习方法。与之类似,在线学习是一种更为实时的学习模式,模型在每次与用户交互后都可能进行更新。
提高大模型多轮对话应对能力
针对性的数据集与微调
这个数据集中应包括典型的用户输入和系统响应,以及可能的用户意图和上下文信息。
实时反馈与自适应
实时反馈机制是一种在模型与用户或系统交互过程中实时收集和分析数据,并且用这些数据来调整模型参数或行为的方法。
强化学习优化
强化学习是一种让模型通过与环境的交互来学习如何执行任务的机器学习方法。在多轮对话系统中,这通常意味着优化一系列对话策略或动作,以实现特定的目标。
上下文感知与个性化
上下文感知是模型能够理解并利用上下文信息做出合适的决策。这饿信息通常包括用户以往的查询记录、交互记录、购买行为、社交网络数据,以及明确表示的偏好等。
多模态与多任务学习
多模态与多任务学习提供了一种扩展模型能力的方法,使其能处理多种类型的输入和输出,或者同时处理多个任务。这种方法不仅能提供更丰富的用户体验,还能使模型的适用范围扩大。
错误处理与恢复策略
错误处理策略是一套用于识别、处理错误输入或系统行为的规则和程序,通常包括输入验证、异常捕获和错误日志记录等。恢复策略是在错误发生后,如何将对话流程引导回正常轨道的一系列动作或指导原则。
模型性能评估指标
- ROC曲线下面积
- 区分度指标(Dice系数)
- 情感分类的混淆矩阵
- 转化率(Conversion Rate, CVR)
- 准确率-召回率曲线下面积(AUC-PR)
数据预处理
数据预处理是指在训练模型之前对原始数据进行清洗、标准化和规范化等处理,让数据变得干净、统一、可用。
数据清洗
进行数据清晰是为了解决数据重复、缺失、错误等问题,确保数据质量。在使用文本数据时,可能需要去除噪声、特殊字符等。
数据标准化和规范化
对数据进行标准化和规范化,使不同特征之间具有可比性,以便于模型学习。
特征工程
根据领域知识,构建适用于模型的特征。
数据采样和平衡
对于不平衡的数据集,可以采用欠采样、过采样等方法使不同类别的样本数平衡,避免模型偏向于数量较多的类别。
LangChain 的主要概念
模型
LangChain的核心价值在于提供了标准的模型接口。目前主要有两种类型的模型可供选择,语言模型和文本嵌入模型。实现文本生成的语言模型主要有两种,一种是通用语言模型,接收一个文本字符串作为输入,并返回一个文本字符串作为输出;另一种为聊天模型,接受一条聊天消息作为输入,并返回一条聊天消息作为输出。文本嵌入模型可以把文本转换为浮点数形式的描述。
提示
LangChain提供了一系列工具,使构建人们想要的提示变的更加容易。
- 提示模板:LangChain的提示模板是一种可以重复使用的提示模板,每个提示模板都包含一个文本字符串,该字符串定义了一组参数,通过参数可以生成提示。
- 聊天提示模板:是接收聊天消息作为输入的提示模板。聊天消息通常由不同的提示组成,并且每个提示都会有一个角色。
- 案例选择器:在处理多个案例时,可以使用案例选择器来选择一个案例供提示使用。
输出解析器
使用输出解析器(OutputParser)可以使模型的输出更加结构化。
- get_format_instructions:指示模型如何格式化输出
- parse(str): 将输出解析为所需格式
- CommaSeparatedListOutputParser: 以逗号分隔的形式返回输出
- StructuredOutputParser: 生成结构化的内容,无需定义对象
- PydanticOutputParser:定义一个对象模型,使模型按照该对象模型返回数据
索引
索引是一种将文档结构化的工具,使模型能够直接与文档更好的进行交互。
- Document Loaders: 从不同的数据源加载文档
- Text Splitter: 实现文本分割
- Vector Store:将文档储存为向量结构
- Retriever:用于检索文档数据