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

小结——知识注入

所谓知识注入,其实不该脱离于LLM的基础工作原理,然后空谈抽象概念。
知识,也就是你问他问题,他能输出正确的回答,这只是一个简单的输出token的过程。输出得准了,就是知识,输出不准了,你就说它是幻觉。什么是幻觉?不就是该输出的token上,概率不大,导致的乱输出。
所以,知识注入就是你要对一个query,自回归输出一个完全一致的answer。如果你愿意不考虑LLM的其他功能,就为了某一个QA对服务,你完全可以加训个100个epoch,它必然就“记住”了。

知识注入根据知识的体量、复杂度、垂类程度不同,要基于增量预训练、sft、也必须使用RLHF和DPO。
对于这么一个QA:XXX的生日是多少?1980年1月23日。sft的所有loss都是先拿到正确的前述token,然后计算当前token的loss。假设现在LLM训练好了,对于query,后续token的概率都很高,除了”8“这个位置的概率几乎为0,那么对于后面的“0年1月23日”,如果前面这个“8”LLM吐不出来,那么它们的高概率也就完全不顶用了,大概率是要出所谓的“幻觉”的,毕竟你现在的状况和训练时候完全不一样嘛。可这种情况放sft里,loss很小。也就是说"8"这个数字在sft阶段会训练不完全。
(这里只是一个例子,实际上tokenizer大概率把1980这一整个数字绑定成一个token,或者是19和80。)
RLHF和DPO这类RL算法的训练目标是,我当前这个token的reward和选定token后对未来value的期望要达到最高。如果出现8这个数字概率低的情况,且如果value函数正常工作,那么RL会知道,你必须给8的概率拉高,否则整个后续的reward期望会极低。RL和SFT的差距就在这里,RL要考虑当前对后续的影响,sft只要考虑当前这个token就好。
(RL的思想很好,但是"value函数正常工作"这个条件没那么好保证,所以RL不稳定。这是必须先sft后rl的原因。)

对于简单的知识注入,例如“改变大模型的自我认知”,随便给几条认知相关的内容重复的简单数据,用lora训个10个epoch,就能得到极好的效果。我基于qwen1.5-7b-chat尝试sft注入1000条简单的wiki的知识,lora rank=32,epoch=1,lr=3e-5。然后手动测试了几条wiki数据,发现关于数字的会有严重幻觉,例如“丹麦海峡的最长长度是多少“,不仅是我的模型,你百度去搜,百度ai给的结果也不对。关于医学的会很差劲,因为过于复杂了,需要专业知识才能撑得起来我给的回答,我敢信我的医学数据的每条answer的困惑度都极高,这使得LLM不可能仅凭一次训练就扭转输出。但是简单知识会记得很好,我让他记住他是一根香蕉(简单QA),他也记住了。最后测得c-eval评分还能维持69,比微调前的71不差多少。
对于复杂的知识注入,绝对不能寄希望于少量数据就完成训练。这个复杂,既是指存在很多生词和知识点,还是指知识体系的庞大,还是指answer很长。前两个好理解,第三个其实就是前面说的"8"的问题,你answer一长,中间出错的概率就高,就不容易续写成功。
我们统称符合上面特点的数据为“垂类数据”。
对于垂类数据,你绝不能期望仅用finetune和简单的lora就能成功。你的垂类数据和LLM的训练数据可以说是分布完全不相似的两组数据,你无法通过简单的lora微调就让LLM从一个输出分布就跳到另一个完全不同的分布上。走完预训练+sft+rl基本是标配了。
预训练的作用是解决“眼生”的问题,所谓获取知识也就是这个,你希望“给个query返回一个answer”,这个answer的碎片就隐藏在预训练的数据里。所以这里需要大量预训练数据。
然后是sft。为什么不直接rl?因为rl存在不稳定的问题,所以最好用sft先把底子打好。sft就是给了LLM一个输入输出的范式,“问哪个问题,就回答哪段话”。问题是问题的花样可多了,要是大伙都一个问问题的方式,对我们来说就没这么累了。有一批人专门干批量指令生成,就是为了得到“一个问题,多种表达”的数据,以适应用户的需求。sft阶段,一定要尽量压低loss,既然干了垂类模型,就千万别考虑泛用性了,否则你就得重走一遍chatgpt的训练路子,数据也得用人家量级的,区别就是你多了一份垂类数据。Gimini今年6月有个论文指出幻觉就是loss太大,你压低就没幻觉了,这从上面对"8"的讨论也能看出来。所以,一定要对单知识点做多指令QA,既可以等价于多个epoch,又可以防止过拟合,并且知识量大就必须有海量数据支撑。
rl阶段可以选rlhf和dpo,后者现在好像效果更好,但是还是得看实际数据,所以两种都要做。

相关文章:

小结——知识注入

所谓知识注入,其实不该脱离于LLM的基础工作原理,然后空谈抽象概念。 知识,也就是你问他问题,他能输出正确的回答,这只是一个简单的输出token的过程。输出得准了,就是知识,输出不准了&#xff0c…...

科普文:微服务之Spring Cloud Alibaba组件Nacos一致性协议Distro+Raft概叙

一、概要 Nacos是阿里开放的一款中间件,它主要提供三种功能:持久化节点注册,非持久化节点注册和配置管理。 二、一致性协议 - AP/CP Nacos不是纯粹的AP服务,也不是纯粹的CP服务,而是两者同时支持。 这要从服务注册…...

python合并音视频-通过ffmpeg合并音视频

🌈所属专栏:【python】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的…...

Yolov8添加ConvNetV1和V2模块

Yolov8添加ConvNet模块 1 ConvNet系列相关内容 (1)2022 论文地址:A ConvNet for the 2020s Code Link 如下图所示,精度、效率、尺寸都很不错。 论文的摘要如下: 视觉识别的“咆哮的 20 年代”始于视觉注意力 &…...

​十个常见的 Python 脚本 (详细介绍 + 代码举例)

1. 批量重命名文件 介绍: 该脚本用于批量重命名指定目录下的文件,例如将所有 ".txt" 文件重命名为 ".md" 文件。 import osdef batch_rename(directory, old_ext, new_ext):"""批量重命名文件扩展名。Args:directory: 要处理…...

【C语言】详解feof函数和ferror函数

文章目录 前言1. feof1.1 feof函数原型1.2 正确利用函数特性读写文件1.2.1 针对文本文件1.2.2 针对二进制文件 1.3 feof函数的原理1.4 feof函数实例演示 2. ferror2.1 ferror函数原型 前言 或许我们曾在网络上看过有关于feof函数,都说这个函数是检查文件是否已经读…...

ValueListenableBuilder 和 addListener 在 ChangeNotifier的区别

1、前言 ValueListenableBuilder 和 addListener 在 ChangeNotifier 中有不同的用途和用法,适用于不同的场景。它们的主要区别在于它们如何监听和响应状态变化,以及它们的用法和特性。 2、ValueListenableBuilder用法 ValueListenableBuilder 是一个 …...

ScriptEcho:AI赋能的前端代码生成神器

ScriptEcho:AI赋能的前端代码生成神器 在前端开发中,如果你总是觉得写代码太费时费力,那么 ScriptEcho 将成为你的救星。这个 AI 代码生成平台不仅能帮你省下大量时间,还能让你轻松愉快地写出生产级代码。本文将带你了解 ScriptEc…...

TypeError: ‘float’ object is not iterable 深度解析

TypeError: ‘float’ object is not iterable 深度解析与实战指南 在Python编程中,TypeError: float object is not iterable是一个常见的错误,通常发生在尝试对浮点数(float)进行迭代操作时。这个错误表明代码中存在类型使用不…...

灵茶八题 - 子序列 +w+

灵茶八题 - 子序列 w 题目描述 给你一个长为 n n n 的数组 a a a,输出它的所有非空子序列的元素和的元素和。 例如 a [ 1 , 2 , 3 ] a[1,2,3] a[1,2,3] 有七个非空子序列 [ 1 ] , [ 2 ] , [ 3 ] , [ 1 , 2 ] , [ 1 , 3 ] , [ 2 , 3 ] , [ 1 , 2 , 3 ] [1],[…...

为什么美元债务会越来越多?

美元债务规模持续膨胀,其背后原因复杂多样,可归结为以下几个主要因素: 财政赤字和刺激政策是导致美元债务增加的重要原因。美国政府长期面临财政赤字问题,支出远超收入,为弥补这一缺口,政府不得不大量发行…...

二维凸包算法 Julia实现

问题描述:给定平面上 n n n 个点的集合 Q Q Q,求其子集 P P P 构成 Q Q Q 的凸包,即 ∀ p ∈ Q , ∃ p 0 , p 1 , p 2 ∈ P \forall p \in Q, \exist p_0, p_1, p_2 \in P ∀p∈Q,∃p0​,p1​,p2​∈P 使得点 p p p 在以点 p 0 , p 1 …...

python dash框架

Dash 是一个用于创建数据分析型 web 应用的 Python 框架。它由 Plotly 团队开发,并且可以用来构建交互式的 web 应用程序,这些应用能够包含图表、表格、地图等多种数据可视化组件。 Dash 的特点: 易于使用:Dash 使用 Python 语法…...

2.外部中断(EXTI)

理论 NVIC:嵌套向量中断控制器(解释教程) 外部通用中断线(EXTI0~EXTI15):每个GPIO设置成中断模式,与中断控制器连接的线 外部中断触发方式 上升沿触发、下降沿触发、双边沿触发 外部中断触发函数 在stm32f1xx_it.c文件…...

Python | SyntaxError: invalid syntax 深度解析

Python | SyntaxError: invalid syntax 深度解析 在Python编程中,SyntaxError: invalid syntax是一个常见的错误,它表明Python解释器在尝试解析代码时遇到了语法问题。这个错误通常是由于代码中存在拼写错误、缺少符号(如括号、冒号或逗号&a…...

付费进群系统源码原版最新修复全开源版

付费进群,和平时所见到的别人拉你进群是不一样的,付费进群需要先缴费以后,才会看到群的二维码,扫码进群或者是长按二维码图片识别进群,付费进群这个功能广泛应用于拼多多的砍价群,活动的助力群,…...

Docker容器部署的SpringBoot项目jar包,上传文件但是找不到路径的问题

在docker容器内部署的jar包运行后,请求访问都没有问题,在文件上传时,发现上传图片接口响应成功,但是图片路径报404错误,发现找不到路径。 在服务器上查看也没有找到相关图片。 原因: 启动docker镜像时没…...

云计算学习——5G网络技术

系列文章目录 提示:仅用于个人学习,进行查漏补缺使用。 Day1 网络参考模型 Day2 网络综合布线与应用 Day3 IP地址 Day4 华为eNSP网络设备模拟器的基础安装及简单使用 Day5 交换机的基本原理与配置 Day6 路由器的原理与配置 Day7 网络层协议介绍一 Day8 传…...

matlab仿真 信道编码和交织(上)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第八章内容,有兴趣的读者请阅读原书) ​​​ ​ ​ ​ clear all N10;%信息比特的行数 n7;%hamming码组长度n2^m-1 m3;%监督位长度 [H,G]hammgen(m);%产生(n,n-…...

基于YOLOv8的高压输电线路异物检测系统

基于YOLOv8的高压输电线路异物检测系统 (价格88) 包含 【“鸟窝”,“风筝”,“气球”,“垃圾”】 4个类 通过PYQT构建UI界面,包含图片检测,视频检测,摄像头实时检测。 (该系统可以根据数…...

23款奔驰GLS450加装原厂电吸门配置,提升车辆舒适性和便利性

今天是一台22款奔驰GLS450,车主是佛山的 以前被不良商家坑了 装了副厂的电吸门 刚开始就很正常 用了半年之后 就开始开不了门,被锁在里面,刚开始车主以为是零件坏了 后来越来越频繁,本来是为了家里老人小孩关门方便而升级的&#…...

git操作流程笔记

1、在本地项目文件夹右击鼠标点击Git Bash Here 2、输入git init,这个目录变成git可以管理的仓库,会出现一个.git文件夹,如果没出现的话需要选择“显示隐藏文件”(不会的同学自行百度一下) 3、绑定本地仓库与远程仓库…...

【QT】常用控件-上

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 目录 👉🏻QWidgetenabledgeometryrect制作上下左右按钮 window frame 的影响window titlewindowIcon代码示例: 通过 qrc 管理图片作为图标 windowOpacitycursor使用qrc自…...

帮助网站提升用户参与度的5个WordPress插件

仅靠编写精彩的内容、设计精美的图像和创建简化的客户旅程不足以提高网站参与度。您需要让用户在首次访问后继续与您的网站互动并成为回访者,才能真正吸引您所追求的兴趣。 幸运的是,对于 WordPress 用户来说,有数百种工具可用于提高用户参与…...

理解 Python 中的 @wraps:保留函数元数据

一.介绍 在本文中,我们将了解 wraps。在 Python 中使用装饰器时,您可能会遇到原始函数的元数据丢失的情况。这时,functools 模块中的 wraps 装饰器就可以派上用场了。让我们深入了解 wraps 的作用及其重要性。 二.简单装饰器的问题 首先&a…...

cjson

文章目录 概述编译cjson_test 小结 概述 在网络传输中,网络数据序列化,常用的有那么几种,json,protobuf都是很常用的,这一篇来写下json。 Json常用的有几个,rapidjson,jsoncpp,还有…...

Docker data root 目录更改

有时候受限于系统根目录空间的限制,需要将 docker data root 目录更改为其它目录,如单独挂载一个磁盘或存储。本篇文章介绍如何操作。 修改docker 工作目录 修改配置文件/etc/docker/daemon.json(在19.x 版本之前使用grapth) {&q…...

[CR]厚云填补_SEGDNet

Structure-transferring edge-enhanced grid dehazing network Abstract 在过去的二十年里,图像去雾问题在计算机视觉界受到了极大的关注。在雾霾条件下,由于空气中水汽和粉尘颗粒的散射,图像的清晰度严重降低,使得许多计算机视觉…...

图-基础概念

是什么 图是一种抽象的数据类型,在图中的数据元素通常称作节点,V是所以定点的集合,E是所有边的集合 图的分类 有向图 如果两个订单v,w,只能由v向w,而不能w向v,那么我们就把何种情况叫做一个从…...

Javascript前端基础面试(十)

MVVM Vue MVVM这一篇就够啦&#xff01;_vue r mvvm-CSDN博客 点容器内的图标,图标边框变成border 1px solid red&#xff0c;点空白处重置 <div id"container"> <img src"icon.png" alt"Icon" class"icon"> <!…...

关于做网站的/营销软文范文

bug出现环境背景 使用Cocospod安装RN的时候&#xff0c;报错 bug分析 [!] Unable to satisfy the following requirements: - Yoga ( 0.44.0.React) required by React/Core (0.44.0) None of your spec sources contain a spec satisfying the dependency: Yoga ( 0.44.0.Reac…...

做网站的s标的软件/郑州网络营销推广

概要 本分步指南介绍如何在 Microsoft Visual Studio 2005年中的可执行文件 (.exe) 文件中嵌入的清单文件。如果您要开发"认证 Windows Vista"程序&#xff0c;您需要将清单文件嵌入在可执行文件。更多信息 在本文中&#xff0c;占位符appname是指一个示例应用程序。…...

中国电信新建网站备案管理系统 录完信息/百度影音在线电影

接上一篇 SpringBoot整合RabbitMQ消息发布确认(二) 生产者获得了对无法投递消息的感知能力&#xff0c;能够在生产者的消息无法被投递时发现并处理。但有时候&#xff0c;我们并不知道该如何处理这些无法路由的消息&#xff0c;最多打个日志&#xff0c;然后触发报警&#xff…...

网站 app开发 财务做帐/seo一个关键词多少钱

len 获取容器类型的元素个数, 或者说获取容器的长度 str1 123 list1 [1, 2, 3] tuple1 (1, 2, 3) set1 {1, 2, 3} dict1 {name: 123, age: 18} 使用len可以获取list str tuple set中的元素个数 print(len(str1)) print(len(list1)) print(len(tuple1)) print(len(set1)…...

国企门户网站建设情况汇报/公司个人怎么做网络推广

分层组织计算机存储系统由高层到低层分别名之寄存器堆、高速缓存(cache)、主存(main memory)和外存(secondary memory)。那么为什么记忆系统要层次化呢?如果答案是效率&#xff0c;那么提效的原理又是什么呢?如果原理是传说中的局部性原理(principle of locality)&#xff0c…...

青浦专业做网站/百度一下就知道百度首页

MySQL字符集与排序规则MySQL支持的字符集字符集与排序规则排序规则的命名使用字符集与排序规则服务器级别的字符集数据库级别的字符集表级别的字符集列级别的字符集字符串级别的字符集National字符集字符集&#xff08;character set&#xff09;可以理解为符号&#xff08;sym…...