当前位置: 首页 > news >正文

SimPO: Simple Preference Optimization with a Reference-Free Reward

https://github.com/princeton-nlp/SimPO

简单代码

class simpo(paddle.nn.Layer):def __init__(self):super(OrPoLoss, self).__init__()self.loss = paddle.nn.CrossEntropyLoss()def forward(self,neg_logit, neg_lab, pos_logit, pos_lab,beta,gamma):neg_logit = paddle.nn.functional.log_softmax(neg_logit, -1)pos_logit = paddle.nn.functional.log_softmax(pos_logit, -1)batch_indices = paddle.arange(neg_lab.shape[0]).unsqueeze(1).tile([1, neg_lab.shape[1]])seq_indices = paddle.arange(neg_lab.shape[1]).unsqueeze(0).tile([neg_lab.shape[0], 1])indices = paddle.stack([batch_indices, seq_indices, neg_lab], axis=-1)# 使用 gather_nd 来提取对应的 logitneg_logit_selected = paddle.mean(paddle.gather_nd(neg_logit, indices),-1)# 选择标签样本batch_indices = paddle.arange(pos_lab.shape[0]).unsqueeze(1).tile([1, pos_lab.shape[1]])seq_indices = paddle.arange(pos_lab.shape[1]).unsqueeze(0).tile([pos_lab.shape[0], 1])indices = paddle.stack([batch_indices, seq_indices, pos_lab], axis=-1)# 使用 gather_nd 来提取对应的 logitpos_logit_selected = paddle.mean(paddle.gather_nd(pos_logit, indices),-1)pi_logratios = pos_logit_selected - neg_logit_selectedgamma_logratios = gamma / betalogits = pi_logratios - gamma_logratioslosses = (-paddle.nn.functional.log_sigmoid(beta * logits) * (1 - 0.3)-paddle.nn.functional.log_sigmoid(-beta * logits) * 0.3)# chosen_rewards = beta * pos_logit_selected# rejected_rewards = beta *neg_logit_selectedreturn losses.mean()

这段代码定义了一个名为simpo的类,继承自paddle.nn.Layer。在类的构造函数中,初始化了一个交叉熵损失函数loss

forward函数是模型的前向传播函数。它接收四个参数:neg_logitneg_labpos_logitpos_lab,以及betagamma。其中,neg_logitpos_logit是模型输出的负样本和正样本的预测分数,neg_labpos_lab是对应的标签。

在函数内部,首先对neg_logitpos_logit使用log_softmax函数进行处理,将预测分数转换为对应类别的概率。然后,使用arange函数生成对应的索引,通过gather_nd函数提取出标签样本对应的预测概率。这里使用了mean函数计算平均值,得到负样本和正样本的选中概率。

接下来,计算pi_logratios,即正样本选中概率减去负样本选中概率。然后,计算gamma_logratios,即gamma除以beta。最后,将pi_logratiosgamma_logratios相减得到logits

根据logits计算损失。损失的计算采用了公式(-log_sigmoid(beta * logits) * (1 - 0.3) -log_sigmoid(-beta * logits) * 0.3),其中log_sigmoid函数是对beta * logits-beta * logits进行log sigmoid函数的运算。最终,使用mean函数计算损失的平均值,并返回。

根据文档内容,我梳理了以下大纲:
一、引言

  1. 背景介绍:从人类反馈中学习是关键,RLHF是一种流行的方法,DPO是一种简单的离线优化算法。
  2. 问题提出:DPO存在训练和推理指标不一致的问题,可能导致次优性能。
  3. 本文贡献:提出SimPO,一个简单有效的离线偏好优化算法,通过直接将奖励函数与生成指标对齐,无需参考模型,同时引入目标奖励间隔,提高算法性能。
    二、SimPO: 简单偏好优化
  4. 背景:介绍DPO算法。
  5. 简单的参考无关奖励:提出使用平均对数似然作为奖励,与生成指标对齐,无需参考模型。
  6. SimPO目标:推导SimPO目标函数,引入目标奖励间隔。
    三、实验设置
  7. 模型与训练设置:使用Llama3和Mistral进行训练,设置Base和Instruct两种。
  8. 评估基准:使用AlpacaEval 2、Arena-Hard和MT-Bench。
  9. 基准模型:与DPO、IPO、KTO、ORPO、R-DPO进行比较。
    四、实验结果
  10. SimPO在所有基准上持续显著优于其他方法。
  11. Instruct设置引入了显著的性能提升。
  12. SimPO的两个关键设计都很重要。
  13. 长度标准化防止了长度剥削。
  14. 目标奖励间隔对性能有影响。
  15. SimPO优于DPO的原因分析。
    五、相关研究
  16. RLHF相关研究。
  17. 偏好优化相关研究。
    六、讨论
  18. 结论。
  19. 限制与未来工作。

相关文章:

SimPO: Simple Preference Optimization with a Reference-Free Reward

https://github.com/princeton-nlp/SimPO 简单代码 class simpo(paddle.nn.Layer):def __init__(self):super(OrPoLoss, self).__init__()self.loss paddle.nn.CrossEntropyLoss()def forward(self,neg_logit, neg_lab, pos_logit, pos_lab,beta,gamma):neg_logit paddle.n…...

CDH6.3.2安装文档

前置环境: 操作系统: CentOS Linux release 7.7 java JDK : 1.8.0_231 1、准备工作 准备以下安装包: Cloudera Manager: cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-daemons-6.3.1-1466458.el…...

Java实战入门:深入解析Java中的 `Arrays.sort()` 方法

文章目录 一、方法定义参数说明返回值 二、使用场景三、实现原理四、示例代码示例一:对整型数组排序示例二:对字符串数组排序示例三:对自定义对象数组排序 五、注意事项六、总结 在Java编程中,Arrays.sort() 方法是一个非常常用的…...

JavaScript的垃圾回收机制

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、垃圾…...

小程序使用Canvas设置文字竖向排列

在需要使用的js页面引入js文件,传入对应参数即可 /** * 文本竖向排列 */ function drawTextVertical(context, text, x, y) {var arrText text.split();var arrWidth arrText.map(function (letter) {return 26; // 字体间距,需要自定义可以自己加参数,根据传入参数进行…...

GPT-4o:重塑人机交互的未来

一个愿意伫立在巨人肩膀上的农民...... 一、推出 在人工智能(AI)领域,自然语言处理(NLP)技术一直被视为连接人类与机器的桥梁。近年来,随着深度学习技术的快速发展,NLP领域迎来了前所未有的变革…...

大语言模型拆解——Tokenizer

1. 认识Tokenizer 1.1 为什么要有tokenizer? 计算机是无法理解人类语言的,它只会进行0和1的二进制计算。但是呢,大语言模型就是通过二进制计算,让你感觉计算机理解了人类语言。 举个例子:单1,双2&#x…...

Linux自动挂载服务autofs讲解

1.产生原因 2.配置文件讲解 总结:配置客户端,先构思好要挂载的目录如:/abc/cb 然后在autofs.master中编辑: /abc(要挂载的主目录) /etc/qwe(在这个文件里去找要挂载的副目录,这个名…...

堆结构知识点复习——玩转堆结构

前言:堆算是一种相对简单的数据结构, 本篇文章将详细的讲解堆中的知识点, 包括那些我们第一次学习堆的时候容易忽略的内容, 本篇文章会作为重点详细提到。 本篇内容适合已经学完C语言数组和函数部分的友友们观看。 目录 什么是堆 建堆算法…...

JS数据类型运算符标准库

目录 数据类型运算符标准库对象Object对象属性描述对象Array对象包装对象Boolean对象Number对象String对象Math对象Date对象...

单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.13数组

C语言中,有一类数据结构,它可以存储一组相同类型的元素,并且可以通过索引访问这些元素,没错,这类数据结构就是数组。数组可以说是C语言中非常重要的数据结构之一了。使用数组可以是程序逻辑更加清晰,也更加…...

【码银送书第二十期】《游戏运营与出海实战:策略、方法与技巧》

市面上的游戏品种繁杂,琳琅满目,它们是如何在历史的长河中逐步演变成今天的模式的呢?接下来,我们先回顾游戏的发展史,然后按照时间轴来叙述游戏运营的兴起。 作者:艾小米 本文经机械工业出版社授权转载&a…...

String 类

目录: 一. 认识 String 类 二. String 类的基本用法 三. String对象的比较 四.字符串的不可变性 五. 认识 StringBuffer 和 StringBuilder 一. 认识 String 类: 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者…...

Chromebook Plus中添加了Gemini?

Chromebook Plus中添加了Gemini? 前言 就在5月29日,谷歌宣布了一项重大更新,将其Gemini人工智能技术集成到Chromebook Plus笔记本电脑中。这项技术此前已应用于谷歌的其他设备。华硕和惠普已经在市场上销售的Chromebook Plus机型,…...

Git Large File Storage (LFS) 的安装与使用

Git Large File Storage [LFS] 的安装与使用 1. An open source Git extension for versioning large files2. Installing on Linux using packagecloud3. Getting Started4. Error: Failed to call git rev-parse --git-dir: exit status 128References 1. An open source Git…...

使用国产工作流引擎,有那些好处?

使用国产工作流引擎的好处主要体现在以下几个方面: 符合企业独特业务: 国产工作流引擎可以深入挖掘和理解企业内部各项业务流程,精细化地定义流程模型和规则,实现“以流程驱动业务”的目标。这有助于企业更好地满足其独特的业务…...

掌握 Go 语言:使用 net/http/httptrace 包优化HTTP请求

掌握 Go 语言:使用 net/http/httptrace 包优化HTTP请求 介绍net/http/httptrace 包的基础概述适用场景 使用httptrace进行网络请求追踪配置httptrace的基本步骤示例:创建一个简单的HTTP客户端,使用httptrace监控连接 示例:追踪HTT…...

探秘Flask中的表单数据处理

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、Flask中的表单处理机制 三、Flask表单处理实战 四、处理表单数据的注意事项…...

java —— 包装类及拆箱、装箱

java 当中有 8 种基本类型对应其相应的包装类,分别如下: intIntegerbyteByteshortShortlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean 一、装箱 两种装箱方法: public static void main(String[] args) {Integer anew Inte…...

运算符重载(下)

目录 前置和后置重载前置的实现Date& Date::operator()代码 后置的实现Date Date::operator(int )代码 前置--和后置--重载前置--的实现Date& Date::operator--( )代码 后置--的实现Date Date::operator--(int )代码 流插入运算符重载流插入运算符重载的实现流提取运算…...

贾子竞争哲学与新范式升维战略——从 “多维对抗“ 到 “意义消解“ 的终极战略蓝图

贾子竞争哲学与新范式升维战略——从 "多维对抗" 到 "意义消解" 的终极战略蓝图摘要本战略体系彻底颠覆了以价格、功能、渠道为核心的传统红海对抗逻辑,提出了一套基于 "维度升维、悖论锁定、意义消解、时间收割" 的全新竞争哲学。其…...

ARM异常处理机制与ESR寄存器详解

1. ARM异常处理机制概述在ARMv8/v9架构中,异常处理是处理器响应硬件或软件事件的核心机制。当发生异常时,处理器会暂停当前程序执行,跳转到预定义的异常向量表入口,同时将异常相关信息记录在异常综合征寄存器(ESR)中。异常可能由多…...

告别论文焦虑:Paperxie 为本科毕业论文搭建的「全流程写作脚手架」

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 毕业季的凌晨三点,宿舍台灯下亮着的电脑屏幕,是无数本科生共同的记忆。当 10000 字的毕业…...

书匠策AI:一个让论文小白也能“开挂“的毕业论文神器,到底有多能打?

各位同学,你有没有经历过这种崩溃时刻——毕业论文 deadline 倒计时,你的Word文档里只有标题,脑子里一片空白,选题没思路、大纲理不清、参考文献不会找,甚至连学校格式都搞不明白? 别慌,今天作…...

Wwise音频工具完全指南:3步轻松解包和修改游戏音频文件

Wwise音频工具完全指南:3步轻松解包和修改游戏音频文件 【免费下载链接】wwiseutil Tools for unpacking and modifying Wwise SoundBank and File Package files. 项目地址: https://gitcode.com/gh_mirrors/ww/wwiseutil 还在为无法编辑游戏音频文件而烦恼…...

对比直接采购,使用聚合平台在模型选型上带来的灵活性体验

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接采购,使用聚合平台在模型选型上带来的灵活性体验 过去,当我们需要为不同的任务寻找合适的大模型时…...

AI驱动的工业预测性维护技术实践:AI驱动的预测性维护系统通过多传感器融合(振动、温度、电流等)实时监测设备健康状态,结合TSN网络实现毫秒级数据传输

标签:预测性维护 PHM 工业AI 振动分析 TSN 设备管理 引言:设备算命先生的时代来了 “老张,你这台风机轴承怕是撑不过两周了。” 如果有个"设备算命先生"能掐指一算就说出这句话,工厂的设备经理们大概会把他供起来。但在2024年,这个"算命先生"真的出…...

用STM32F103的USART1和PC串口助手玩“聊天室”:一个完整的数据收发项目实战

STM32F103串口聊天室:从零构建双向交互式终端 项目背景与核心价值 在嵌入式开发领域,串口通信如同"Hello World"般基础却又至关重要。传统教学往往止步于数据收发演示,而本项目将打破常规——用STM32F103的USART1构建一个具有完整交…...

5分钟快速上手:LuckyLilliaBot QQ机器人完整部署指南

5分钟快速上手:LuckyLilliaBot QQ机器人完整部署指南 【免费下载链接】LuckyLilliaBot 支持 OneBot 11、Satori 和 Milky 协议 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot 你是否正在寻找一款简单易用、功能强大的QQ机器人框架&#xff1f…...

HX‑01 USB 音频编码模块:全行业通用的稳定音频核心解决方案

HX‑01 USB 音频编码模块凭借免驱即用、高清语音处理、宽温稳定运行、强抗干扰设计、灵活配置模式的核心优势,不仅在矿山行业构建了可靠的语音通讯体系,更能适配安防监控、智能楼宇、教育会议、工业自动化、机器人设备、医疗健康等多行业场景&#xff0c…...