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

LLM之Prompt(二):清华提出Prompt 对齐优化技术BPO

图片

论文题目:《Black-Box Prompt Optimization: Aligning Large Language Models without Model Training》

论文链接:https://arxiv.org/abs/2311.04155

github地址:https://github.com/thu-coai/BPO

BPO背景介绍

       最近,大型语言模型(LLM)在各种应用中都取得了显著的成功,比如文本生成,文生图大模型等。然而,这些模型往往与人类意图不太一致,这就需要对其进行额外的处理,即对齐问题。为了使LLM更好地遵循用户指令,现有的对齐方法(比如RLHF、RLAIF和DPO)主要侧重于对LLM进行进一步的训练,然而这些对齐方法有如下缺点:

  • 效率:随着LLM越来越大,训练LLM变得更加昂贵和困难,尤其是当使用臭名昭著的不稳定RL算法时;
  • 可访问性:由于大多数性能最好的LLM,如GPT-4和Claude-2,都是封闭源的,只能通过API访问,因此外部团队想继续训练几乎不可能;
  • 可解释性:使用现有方法时,人类偏好的建模和精确提升是无法解释的;

       清华大学提出了一种黑盒提示优化(BPO)来执行对齐,其思想是优化用户Prompt以适应LLM对输入的理解,从而在不更新LLM参数的情况下更好地实现用户的意图理解。

      BPO可以应用在任何LLM模型上,经验结果表明,使用BPO对齐的ChatGPT的胜率比原始版本提高了22%,GPT-4的胜率提高了10%。对于相同的LLM,BPO对齐的LLM性能优于PPO和DPO对齐,而且BPO技术可以与PPO或DPO进行组合使用,可能带来额外的性能增益。

      在 VicunaEval 上使用 GPT-4 进行自动评估,BPO 能够大幅提升 ChatGPT、Claude 等模型的人类偏好,并助力 llama2-13b 模型大幅超过 llama2-70b 的版本,如下图所示:

图片

BPO方法原理

       BPO黑盒优化的目标是让模型更好地理解和满足人类的喜好,通过调整输入内容,使模型生成的输出更符合用户的期望。这个过程可以分为三个主要步骤:

图片

1、反馈数据收集:为了建模人类偏好,首先搜集了一系列带有反馈信号的开源指令微调数据集,并对这些数据经过精心筛选和过滤;

2、构造提示优化对:使用这些反馈数据来引导大型模型识别用户喜欢的回复和不喜欢的回复,基于这些特征,再利用模型优化原始的用户输入,以期得到更符合用户喜好的模型输出;

3、训练提示优化器:经过上述两个步骤,得到了大量优化前后的Prompt pair,利用这些Prompt pair训练一个seq2seq模型(作者使用llama2-7b-chat作为bachbone模型),这样后期就可以使用该seq2seq模型进行自动化优化用户的Prompt了

BPO与其他对齐方法的对比

图片

BPO实验效果

图片

      BPO对齐技术对 GPT-3.5-turbo 有22%的提升,对 GPT-4 有 10% 的提升。

图片

       BPO 能够助力 llama2-13b 大幅超过 llama2-70b 版本的模型效果,并让 llama2-7b 版本的模型逼近比它大 10 倍的模型。

图片

       在 vicuna-7b 和 vicuna-13b 上,使用 BPO 对齐的模型超过了常用的反馈学习方法—— PPO(Proximal Policy Optimization) 和 DPO(Direct Preference Optimization)的效果,并且能够和这些方法相结合进一步提升模型效果。

图片

       此外,BPO还可以用于提升SFT数据的质量,帮助构建更高质量的SFT模型。

BPO优化前后Prompt的对比

图片

参考文献:

[1] https://arxiv.org/abs/2311.04155

http://www.lryc.cn/news/240189.html

相关文章:

  • chatglm3部署使用
  • Android扫码ZXing
  • 求解Beamforming-SOCP(CVX求解)
  • 解决Vue项目的runtime-only转为runtime-compiler
  • hash模式和history模式
  • 聊聊logback的LevelFilter
  • mysql 行转列 GROUP_CONCAT 试验
  • HarmonyOS元服务开发实战—端云一体化开发
  • 【搭环境】装Python3.8 open3d
  • 【C语言】深入解开指针(四)
  • AMEYA360:瑞萨面向高端工业传感器系统推出高精度模拟前端的32位RX MCU
  • 切面Aspect + 策略模式实现待办提醒功能
  • SAP 调取http的x-www-form-urlencoded形式的接口
  • thingsboard3.6的mailConfigTemplateController错误
  • Go语言中获取IP
  • 【Computer Vision Foundation】全球计算机视觉基金会论文网
  • 计网(复习自用)
  • 安徽省广德市选择云轴科技ZStack Cloud云平台建设县级智慧城市
  • 【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 6
  • nuxt3项目修改端口号
  • c语言中使用openssl对rsa私钥解密
  • mysql中数据是如何被用B+树查询到的
  • Redisson 分布式锁的最佳实践
  • ArkTS声明式开发范式
  • 史诗级云故障敲响警钟,应用保障不能没有“连续键”!
  • SSH连接远程服务器报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 解决方法
  • 数据库——查询连续的月份
  • git代码提交命令(如何提交代码)
  • jmeter中调用python代码
  • 当当网获得dangdang商品详情商品列表API 测试请求入口