打造SimPO新算法,微调8B模型超越Claude 3 Opus

前言

大型语言模型(LLM)近年来取得了巨大进展,但要将其与人类价值观和意图相一致,使其变得有用、诚实和无害,仍然是一个挑战。强化学习从人类反馈中(RLHF)是一种常用的方法,通过微调语言模型来实现有效对齐。传统的RLHF方法虽然取得了令人印象深刻的结果,但其多阶段过程(包括训练奖励模型和优化策略模型以最大化奖励)带来了优化挑战。

  • Huggingface模型下载:https://huggingface.co/princeton-nlp/Llama-3-Instruct-8B-SimPO

  • AI快站模型免费加速下载:https://aifasthub.com/models/princeton-nlp

技术特点

为了解决这些挑战,研究人员开始探索更简单的离线算法。直接偏好优化(DPO)是其中的一种方法。DPO重新参数化RLHF中的奖励函数,直接从偏好数据中学习策略模型,无需显式奖励模型。它因其简单性和稳定性而被广泛应用于实际中。

DPO 使用当前策略模型和监督微调(SFT)模型之间的响应可能性对数比作为隐式奖励。然而,这种奖励公式与指导生成的度量标准(近似于策略模型生成响应的平均对数可能性)不完全一致。这种训练和推断之间的差异可能会导致次优性能。

SimPO 针对 DPO 的局限性,提出了一种更简单但更有效的离线偏好优化算法。SimPO 的核心是将偏好优化目标中的奖励函数与生成度量标准保持一致。SimPO 包含两个主要组成部分:

  • 长度归一化奖励: 使用策略模型计算响应中所有标记的平均对数概率。

  • 目标奖励边际: 确保获胜响应的奖励比失败响应的奖励至少高出此边际。

SimPO 具有以下优点:

  • 简单性: SimPO 不需要参考模型,比 DPO 和其他依赖参考模型的方法更轻量级且更容易实现。

  • 显著的性能优势: 尽管简单,SimPO 显著优于 DPO 及其最新变体(例如,最近的无参考目标 ORPO)。这种性能优势在各种训练设置和广泛的指令遵循基准测试中都保持一致,包括 AlpacaEval 2 和具有挑战性的 Arena-Hard 基准测试。

  • 最小长度利用: 与 SFT 或 DPO 模型相比,SimPO 不会显著增加响应长度,表明它几乎没有利用长度偏差。

性能表现

SimPO 在 AlpacaEval 2 和 Arena-Hard 基准测试上都表现出优异的性能。在 AlpacaEval 2 上,SimPO 比 DPO 的胜率高出高达 6.4 个百分点。在 Arena-Hard 上,SimPO 比 DPO 的胜率高出高达 7.5 个百分点。SimPO 基于 Llama3-8B-Instruct 构建的模型在 AlpacaEval 2 上实现了 44.7 的长度控制胜率,超过了排行榜上的 Claude 3 Opus,并在 Arena-Hard 上实现了 33.8 的胜率,成为目前最强大的 8B 开源模型。

应用场景

SimPO 可以用于各种需要从人类反馈中学习的应用场景,例如:

  • 聊天机器人 提高聊天机器人的响应质量,使其更符合人类期望。

  • 文本生成: 生成更符合人类意图和价值观的文本。

  • 代码生成: 生成更安全、更可靠的代码。

总结

SimPO 是一种简单而有效的偏好优化算法,它通过将奖励函数与生成可能性对齐,并引入目标奖励边际,消除了对参考模型的依赖,并在不利用长度偏差的情况下实现了强大的性能。SimPO 证明了其在各种训练设置和基准测试中的有效性,并表明其有潜力成为下一代 LLM 对齐算法的基础。SimPO 的成功为进一步提升 LLM 的性能和安全性提供了新的思路和方向。

模型下载

Huggingface模型下载

https://huggingface.co/princeton-nlp/Llama-3-Instruct-8B-SimPO

AI快站模型免费加速下载

https://aifasthub.com/models/princeton-nlp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Charles的安装和web端抓包配置

1.Charles的安装 通过官网下载:https://www.charlesproxy.com/download/,我之前下载的是4.6.2版本,下载成功后点击安装包,点击下一步下一步即可安装成功。 ​​ ​ 安装成功后打开charles页面如下所示。 ​ 2.乱码问题解决 打开…

【C++】STL:栈和队列模拟实现

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

绘画参数配置及使用

绘画参数配置及使用 路径:站点后台-功能-AI绘画 进入参数配置 接口选择:多种接口自主选择(需自己准备key),对应接口的key对话和绘画通用 存储空间: 位置在超管后台-存储空间 自主选择存储(需…

【数据结构与算法】七大排序算法(下)

【数据结构与算法】七大排序算法(下) 🥕个人主页:开敲🍉 🔥所属专栏:数据结构与算法🍅 🌼文章目录🌼 2.3 交换排序 2.3.1 冒泡排序 2.3.2 快速排序 2.3.3 快速排序(非递归) 2.4 归并…

fpga入门 串口定时1秒发送1字节

一、 程序说明 FPGA通过串口定时发送数据,每秒发送1字节,数据不断自增 参考小梅哥教程 二、 uart_tx.v timescale 1ns / 1psmodule uart_tx(input wire sclk,input wire rst_n,output reg uart_tx);parameter …

Spring bean加载顺序

最近在开发过程中遇到一个Spring bean加载顺序的问题,容器在启动的时候 会通过InitializingBean 的afterPropertiesSet 加载两级缓存,但是加载的过程中因为没有将load的容器对象加载到Spring 容器中导致NPE ,所以今天来巩固一下spring bean的…

【Python Cookbook】S01E12 根据字段将记录分组

目录 问题解决方案讨论 问题 如果有一系列的字典或对象实例,我们想根据某个特定的字段来分组迭代数据。 解决方案 假设有如下字典列表: rows [{address: 5412 N CLARK, date: 07/01/2012},{address: 5148 N CLARK, date: 07/04/2012},{address: 580…

W25Q64CV SPI Flash Memory

SPI简介 SPI是一种同步串行通信接口规范,用于短距离通信,主要应用于嵌入式系统。SPI通信由一个主设备和一个或多个从设备组成,其中主设备生成时钟信号并控制通信的开始和结束。 SPI通信的基本组成 四个基本信号 SCK (Serial Clock) - 时钟…

centos7下安装MySQL,Oracle数据库

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 操作系统版本为CentOS 7 使⽤ MySQ…

python数据分析——datetime数据类型2

参考资料:活用pandas库 # 导入pandas库 import pandas as pd # 加载数据集 teslapd.read_csv(r"...\data\tesla_stock_yahoo.csv") # 查看数据 print(tesla.head()) 1、基于日期取数据子集 # 将Date数据列转换为datetime类型 tesla[Date]pd.to_datetime…

学习笔记——网络参考模型——TCP/IP模型(传输层)

四、TCP/IP模型-传输层 一、TCP 1、TCP定义 TCP(Transmission Control Protocol,传输控制协议)∶为应用程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用TCP。 连接:正式发送数据之前,提前建立好一种虚拟的&…

oracle服务器存储过程中调用http

在Oracle服务器中,存储过程调用HTTP请求可以通过几种不同的方法来实现。以下是一些关键步骤和注意事项,以帮助你清晰地理解和执行此操作: 开启Oracle ACL权限: 使用dbms_network_acl_admin包来创建和管理访问控制列表&#xff0…

ES6-03-模版字符串、对象的简化写法

一、模版字符串 1-1、声明 反引号。 1-2、特性 1、字符串内容可以直接换行 得用号连接 2、变量拼接 现在: 二、对象的简化写法 ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。 let name milk;let chage function(){con…

iOS ActivityViewController使用

UIActivityViewController是iOS中用于展示一个活动列表的视图控制器,允许用户通过各种内置或第三方的应用来分享内容。以下是使用UIActivityViewController分享文本内容的示例代码: import UIKit class ViewController: UIViewController { IBA…

java-对象内存

在Java中,对象内存是指用于存储对象实例的内存区域。当我们在Java程序中创建一个对象时,Java虚拟机(JVM)会在内存中为该对象分配一块内存区域,用于存储对象的字段(成员变量)、方法和其他与对象相…

通过电脑查看Wi-Fi密码的方法,提供三种方式

式一: 右击桌面右下角的网络图标,依次选择【网络和Internet设置】、【WLAN】、【网络和共享中心】。点击已连接的无线网络。依次点击【无线属性】、【安全】,勾选下方【显示字符】即可。 方式二: 在开始菜单输入“cmd”进入命令…

脚本实现登陆滑块

脚本实现登陆滑块 仅供学习参考,简单操作 你知道吗,滑动验证码居然是为了验证人类比机器人蠢而设计的。 你以为自己快速、准确地滑动拼图、对齐图案,才被允许通过,系统还说你超越了99%的用户,夸你“比闪电还快”&am…

【Python】collections模块:高效处理数据的利器

Python中的collections模块:高效处理数据的利器 Python的collections模块是一个内置模块,它提供了一些专用的容器数据类型,作为Python通用内置容器(如列表list、字典dict、集合set和元组tuple)的替代品。本文将深入探…

STM32_SPI

1、SPI简介 1.1 什么是SPI SPI,即Serial Peripheral Interface,串行外设接口。SPI是一种高速的、全双工、同步的串行通信总线;SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;SPI需要至少4根线,…

网络安全法中的网络安全规定和措施

《中华人民共和国网络安全法》是中国首部全面规范网络空间安全管理的基础性法律,旨在加强网络安全,保障国家安全和社会公共利益,保护公民、法人和其他组织的合法权益,促进互联网的健康发展。以下是该法律中关于网络安全的一些核心…