数据设计:通过微调来优化SLM(小模型)的性能

2024-05-03 03:52

本文主要是介绍数据设计:通过微调来优化SLM(小模型)的性能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:data-design-for-fine-tuning-to-improve-small-language-model-behaviour

2024 年 4 月 17 日

通过使用创造性的数据格式来微调数据,教授小语言模型进行自我纠正和推理。通过提示删除和部分答案屏蔽。

小语言模型通常缺乏自我意识,并且往往对其生成的响应表现出更大的信心。采用提示擦除和部分答案屏蔽 (PAM) 方法可显着提高 SLM 响应的质量

介绍

似乎在最近的过去,当谈到语言模型(LLM 和 SLM)时,焦点一直集中在数据交付部分。换句话说,如何在推理时将专有数据引入语言模型。

数据传输过程可以分为两种主要方法:梯度方法和非梯度方法。非梯度方法因其透明而不是像梯度/微调方法那样不透明而受到广泛关注。

到目前为止,最流行的非梯度数据传输方法是 RAG 及其所有变体。

我发现有趣的是,一些微调/梯度方法的主要目的并不是将企业或领域特定数据注入语言模型。而是通过微调数据的结构、特定任务来改变模型的行为并教授模型。这些任务包括推理和自我纠正等功能。

数据设计

重点从数据交付转向数据设计,其中数据格式的设计方式是为模型赋予特定的行为能力

推理

微软研究院训练 Orca-2 的主要重点是创建一个擅长推理的开源小语言模型 (SLM) 。这是通过分解问题并逐步解决它来实现的,这增加了可观察性和可解释性。

为了实现这一目标,必须创建细致入微的培训数据,向LLMs提出复杂的提示,其设计目的是引出策略推理模式,从而产生更准确的结果。

此外,在训练阶段,较小的模型会接受任务以及LLMs的后续输出。LLMs的输出数据定义了LLMs如何解决问题。

但这里有一个问题,原始提示不会显示给 SLM。这种“即时擦除”方法是一种将 Orca-2 变成谨慎推理机的技术,因为它不仅学习如何执行特定的推理步骤,还学习如何在更高层次上制定如何完成特定任务的策略。

LLMs不是天真地模仿强大的LLMs,而是被用作行为的储存库,从中为当前任务的方法做出明智的选择。

自我修正

最近的一项研究通过提出一种称为部分答案屏蔽(PAM)的方法,提出了构建自校正训练数据的管道,旨在通过微调使模型具有内在的自校正能力。

部分答案屏蔽的目标是指示语言模型进行自我纠正。

答案屏蔽

本研究通过在两项任务中使用参数大小从 60 亿到 130 亿不等的语言模型进行实验。

该研究引入了一种增强小语言模型自我纠正能力的方法,提出了内在自我纠正(ISC),这是一种依赖两种基本能力的机制:自我验证自我修改

在微调阶段,该过程引入部分答案屏蔽(PAM),为模型注入自我验证功能。

结果首次证明,即使是只有 60 亿个参数的小型语言模型,在响应生成过程中也具有固有的自我校正能力,与地面事实的依赖无关。

所提出的内在自我纠正努力将自我纠正作为一种固有模式嵌入到语言模型中。它需要一个自主且自发的自我修正过程,与现有的即时工程方法不同。

为了使小语言模型具有自纠错能力,设计了一种用于构建自纠错数据的管道并建立了可普遍应用于生成自纠错任务的数据的数据格式。

综上所述

这两项研究提出了一种方法,即创建细致入微的训练数据,为小语言模型 (SLM) 灌输特定的推理和自我纠正技能。

微调通常与向模型添加知识、增强模型的知识相关。然而,这种特定的数据设计方法侧重于微调,以增强语言模型的功能和行为,而不是添加用于检索的知识。

我很确定,一定会有更多设计训练数据以更新模型行为的创造性方法的例子。

这篇关于数据设计:通过微调来优化SLM(小模型)的性能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/955780

相关文章

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

MySQL中的DELETE删除数据及注意事项

《MySQL中的DELETE删除数据及注意事项》MySQL的DELETE语句是数据库操作中不可或缺的一部分,通过合理使用索引、批量删除、避免全表删除、使用TRUNCATE、使用ORDERBY和LIMI... 目录1. 基本语法单表删除2. 高级用法使用子查询删除删除多表3. 性能优化策略使用索引批量删除避免

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

使用MyBatis TypeHandler实现数据加密与解密的具体方案

《使用MyBatisTypeHandler实现数据加密与解密的具体方案》在我们日常的开发工作中,经常会遇到一些敏感数据需要存储,比如用户的手机号、身份证号、银行卡号等,为了保障数据安全,我们通常会对... 目录1. 核心概念:什么是 TypeHandler?2. 实战场景3. 代码实现步骤步骤 1:定义 E

使用C#导出Excel数据并保存多种格式的完整示例

《使用C#导出Excel数据并保存多种格式的完整示例》在现代企业信息化管理中,Excel已经成为最常用的数据存储和分析工具,从员工信息表、销售数据报表到财务分析表,几乎所有部门都离不开Excel,本文... 目录引言1. 安装 Spire.XLS2. 创建工作簿和填充数据3. 保存为不同格式4. 效果展示5