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

【AI知识】两类最主流AI应用(文生图、ChatGPT)中的目标函数

之前写过一篇 【AI知识】了解两类最主流AI任务中的目标函数,介绍了AI最常见的两类任务【分类、回归】的基础损失函数【交叉熵、均方差】,以初步了解AI的训练目标。
本篇更进一步,聊一聊流行的“文生图”、“聊天机器人ChatGPT”模型中的目标函数。

0、提纲

  • 如何衡量“文生图”效果?
  • ChatGPT如何奖励好的回答?
  • 小结与番外

1、如何衡量“文生图”效果?

“文生图”工具大家肯定很熟悉了,仅凭一段文字就能收获一些不错的图片,实乃辅助创意工作的利器。

类似Midjourney、DALL-E、Stable Diffusion、FLUX.1等优秀的“文生图”应用,在训练中势必要重点关注“如何衡量推测分布(生成的图像)与实际分布(原始的图像)的差距”。

“文生图”的大概过程

“文生图”算法大多基于扩散模型(Diffusion Model),以主流开源的Stable Diffusion为例,架构如下:

扩散模型的大体过程分为"训练 + 采样"两个阶段:

1、训练阶段(前向加噪):不断给原始样本图片加入高斯噪声,再训练“UNetModel模型”来预估噪声。

2、采样阶段(逆向去噪):也就是我们输入文本提示词产出图像的阶段。过程中需要使用训练好的“UNetModel模型”不断迭代去噪,所有使用过程中往往需要等待好几秒。

另外,提示词文本(Prompt)会经CLIP类的多模态模型,在两个阶段均喂给“UNetModel模型”以理解文本上下文意图。

此处不关注其它复杂的细节,单看如何评估生成数据与真实数据之间的差异,这里会引入【KL散度】

  • KL散度(Kullback-Leibler Divergence),也叫相对熵,表示使用预测分布Q(X) 来近似真实分布 P(X) 时所需的额外信息量(也就是预测结果相比于真实情况的信息丢失量)。
  • 如果相对熵的值较大,说明预测分布与真实分布之间的差异较大,使用预测分布编码真实数据时会产生更多的信息损失;反之,如果相对熵接近于零,则表示两个分布非常相似。

在扩散模型中,【损失函数 = 重构损失 + KL散度】

  • 此处的重构损失正是之前介绍的“MSE均方误差”,用于评估生成结果与真实样本之间的相似性;
  • 而KL散度则作为正则化项,鼓励模型学习到的分布接近先验真实分布。

熵、交叉熵、相对熵(KL散度)

熵、交叉熵和相对熵是信息论中的重要概念。简单理解一下:

  • 熵:衡量随机变量的不确定性,熵越大表示系统的不确定性越高(越混乱)。
  • 交叉熵:衡量在真实分布下使用推测分布所需的平均编码长度,反映模型预测与真实分布之间的差异。
  • 相对熵(KL散度):衡量一个分布相对于另一个分布的信息损失,越小表示两个分布越接近。

一个具体的例子(掷六面骰子):

2、ChatGPT如何奖励好的回答?

ChatGPT的来历

OpenAI于2022年11月30日推出聊天机器人ChatGPT推动了当下这一波AI浪潮。

  • 其实早在2018年6月第一代GPT(Generative Pre-trained Transformer)就问世了,其核心理念是无监督地学习大量文本(约40G,网页、维基百科、书籍等来源),用Transformer-Decoder来完成“词语接龙”。【AI实践】个人免费数学老师系列之(二):自动切题【目标检测】中介绍了Transformer的架构,感兴趣的朋友可以看看。
  • GPT1的效果一般,不如Google同时期推出的基于Transformer的BERT(完成类似“完形填空”)。但GPT类似“词语接龙”的方式,天然适合AIGC生成式的任务。
  • 而GPT2、3探究了NLP中全新的“预训练、提示、预测”的通用任务处理范式,让模型具备根据用户提示词(Prompt)直接完成各种各样任务的通用能力(开启通往AGI之路)。而以往,一般都需要根据具体任务在预训练模型基础上进行微调(fine-tune)。
  • GPT3.5(含InstructGPT、公开发表过论文)开始引入“基于人类反馈的指令学习”,其思路如下:

结合上面两张图,InstructGPT的训练分为三个阶段:

1、利用人工编写的问答数据(约13k、“问题-答案”对)去对GPT3进行有监督训练出SFT模型(Supervised fine-tuning,监督微调)。【为了对齐人类的直觉,重走监督微调的老路】

2、基于人类偏好排序的数据(约33k、针对具体问题的4-9个候选答案进行人工排序)训练一个奖励模型Reword Model 。【将直接打分转化为排序、消除一定的主观差异 】

3、最终在最大化奖励的目标下通过PPO算法来优化策略。【用强化学习模型,模仿人工进行更多结果的优劣排序,进一步优化结果】

  • ChatGPT正是延续GPT3.5的路线继续发展壮大而生,而GPT4则进一步扩展了多模态的能力(能理解图片了)。【AI实践】个人免费数学老师系列之(三):题目识别【OCR2.0】中介绍了多模态的破圈之作CLIP模型。

奖励模型中的目标函数

喂给SFT模型一个问题文本,得到4个回答(A、B、C、D),人类标注员进行排序(D>C>A>B)。问题来了:怎么让奖励模型吸收这个排序偏好信息呢?

可以将4个语句两两组合成6个比较对(比如D>A),分别计算loss再相加取均值,这就是“成对排序损失(Pairwise Ranking Loss)”,公式如下:

其中,K为待排序的回答数(比如4);x为问题文本;回答y_w比回答y_l更优(两个y为一对,pairwise);r_θ(x,y)为给奖励模型输入问答对(x、y)之后输出的标量得分;Logistic函数呈S形指数增长;而σ函数也为单调递增的sigmoid 函数,σ(r_θ(x,y_w)−r_θ(x,y_l))越接近 1,表示y_w比y_l排序高。

综上,训练奖励模型正是为了最大化r_θ(x,y_w)−r_θ(x,y_l)【从而印证回答y_w比回答y_l更优】,即最小化上述损失函数loss(θ)。

3、小结与番外

本篇通俗讲述“文生图”、聊天机器人背后的大致原理,重点阐述衡量生成结果与真实情况之间分布差异的KL散度(相对熵)、评估排序信息的成对排序损失(Pairwise Ranking Loss)两种任务类型的目标函数。

番外

最近在细读尤瓦尔·赫拉利的《人类简史:从动物到上帝》,有个观点角度够新颖:

现代科学与先前的知识体系有三大不同之处:

1、愿意承认自己的无知。我们承认了自己并非无所不知。更重要的是,我们也愿意在知识进展之后,承认过去相信的可能是错的。于是,再也没有什么概念、想法或者理论是神圣不可挑战的。

2、以观察和数学为中心。承认无知之后,现代科学还希望能获得新知。方式则是通过收集各种观察值,再用数学工具整理连接,形成全面的理论。

3、取得新能力。光是创造理论,对现代科学来说还不够。它希望能够运用这些理论来取得新的能力,特别是发展出新的科技。

相关文章:

【AI知识】两类最主流AI应用(文生图、ChatGPT)中的目标函数

之前写过一篇 【AI知识】了解两类最主流AI任务中的目标函数,介绍了AI最常见的两类任务【分类、回归】的基础损失函数【交叉熵、均方差】,以初步了解AI的训练目标。 本篇更进一步,聊一聊流行的“文生图”、“聊天机器人ChatGPT”模型中的目标函…...

【单片机基础】定时器/计数器的工作原理

单片机中的定时器/计数器(Timer/Counter)是用于时间测量和事件计数的重要模块。它们可以用来生成精确的延时、测量外部信号的频率或周期、捕获外部事件的时间戳等。理解定时器/计数器的工作原理对于单片机编程和系统设计非常重要。以下是定时器/计数器的…...

ModuleNotFoundError: No module named ‘distutils.msvccompiler‘ 报错的解决

报错 在conda 环境安装 numpy 时,出现报错 ModuleNotFoundError: No module named distutils.msvccompiler 解决 Python 版本过高导致的,降低版本到 Python 3.8 conda install python3.8即可解决。...

HCIA笔记2--ARP+ICMP+VRP基础

1. ARP ARP: 地址解析协议(address resolve protocol)。 网络数据包在通信的时候一般是使用 I P IP IP地址进行通信。 但是在封装数据链路层的时候是需要目标 m a c mac mac地址的。 而 A R P ARP ARP协议实现的功能就是根据 I P IP IP地址来获得 m a c mac mac地址。 1.1 a…...

SpringBoot与MongoDB深度整合及应用案例

SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域,NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB,作为一款领先的NoSQL数据库,以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…...

Redis模拟延时队列 实现日程提醒

使用Redis模拟延时队列 实际上通过MQ实现延时队列更加方便,只是在实际业务中种种原因导致最终选择使用redis作为该业务实现的中间件,顺便记录一下。 该业务是用于日程短信提醒,用户添加日程后,就会被放入redis队列中等待被执行发…...

vue项目中富文本编辑器的实现

文章目录 vue前端实现富文本编辑器的功能需要用到第三方库1. 安装包2.全局引入注册3.组件内使用4.图片缩放功能实现①安装包②注册并添加配置项③报错解决 vue前端实现富文本编辑器的功能需要用到第三方库 vue2使用vue-quill-editor,vue3使用vueup/vue-quill&#…...

nginx 配置lua执行shell脚本

1.需要nginx安装lua_nginx_module模块,这一步安装时,遇到一个坑,nginx执行configure时,一直提示./configure: error: unsupported LuaJIT version; ngx_http_lua_module requires LuaJIT 2.x。 网上一堆方法都试了,都…...

Keil+VSCode优化开发体验

目录 一、引言 二、详细步骤 1、编译器准备 2、安装相应插件 2.1 安装C/C插件 2.2 安装Keil相关插件 3、添加keil环境变量 4、加载keil工程文件 5、VSCode中成功添加工程文件后可能出现的问题 5.1 编码不一致问题 6、在VSCode中进行编译工程以及烧录程序 7、效果展示…...

vue2中引入cesium全步骤

1.npm 下载cesium建议指定版本下载,最新版本有兼容性问题 npm install cesium1.95.0 2.在node_models中找到cesium将此文件下的Cesium文件复制出来放在项目的静态资源public中或者static中,获取去github上去下载zip包放在本地也可以 3.在index.html中引…...

工程师 - 智能家居方案介绍

1. 智能家居硬件方案概述 智能家居硬件方案是实现家庭自动化的重要组件,通过集成各种设备来提升生活的便利性、安全性和效率。这些方案通常结合了物联网技术,为用户提供智能化、自动化的生活体验。硬件方案的选择直接影响到智能家居系统的性能、兼容性、…...

中小企业人事管理:SpringBoot框架高级应用

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,中小企业人事管理系统当然也不能排除在外。中小企业人事管理系统是以实际运用为开发背景,运用软件工程原理和…...

嵌入式Linux驱动开发日记

目录 让我们从环境配置开始 目标平台 从Ubuntu开始 从交叉编译器继续 arm-linux-gnueabihf-gcc vscode 没学过ARM汇编 正文开始——速度体验一把 写一个链接脚本 写一个简单的Makefile脚本 使用正点原子的imxdownload下载到自己的SD卡上 更进一步的笔记和说明 从IM…...

迪杰特斯拉算法(Dijkstra‘s)

迪杰斯特拉算法(Dijkstras algorithm)是由荷兰计算机科学家艾兹格迪科斯彻(Edsger W. Dijkstra)在1956年提出的,用于在加权图中找到单个源点到所有其他顶点的最短路径的算法。这个算法广泛应用于网络路由、地图导航等领…...

reids基础

数据结构类型 String setnx //设置key不存在,则添加成功 setex name 10 jack // key 10s失效,自动删除 hash hset hget list 按添加数据排序 lpush //左侧插入 rpush //右侧插入 set 不重复 sadd //添加…...

私有化部署视频平台EasyCVR宇视设备视频平台如何构建视频联网平台及升级视频转码业务?

在当今数字化、网络化的时代背景下,视频监控技术已广泛应用于各行各业,成为保障安全、提升效率的重要工具。然而,面对复杂多变的监控需求和跨区域、网络化的管理挑战,传统的视频监控解决方案往往显得力不从心。 EasyCVR视频融合云…...

SparkContext讲解

SparkContext讲解 什么是 SparkContext? SparkContext 是 Spark 应用程序的入口点,是 Spark 的核心组件之一。每个 Spark 应用程序启动时,都会创建一个 SparkContext 对象,它负责与集群管理器(如 YARN、Mesos 或 Spa…...

MODBUS TCP转CANOpen网关

Modbus TCP转CANopen网关 型号:SG-TCP-COE-210 产品用途 本网关可以实现将CANOpen接口设备连接到MODBUS TCP网络中;并且用户不需要了解具体的CANOpen和Modbus TCP 协议即可实现将CANOpen设备挂载到MODBUS TCP接口的 PLC上,并和CANOpen设备…...

渗透测试---shell(4)脚本与用户交互以及if条件判断

声明:学习素材来自b站up【泷羽Sec】,侵删,若阅读过程中有相关方面的不足,还请指正,本文只做相关技术分享,切莫从事违法等相关行为,本人一律不承担一切后果 目录 一、shell脚本与用户进行交互 使用 read 指…...

02_Spring_IoC实现

接下来先简单说一下关于IoC的一些要点,后面我们再详细一步一步讨论。 一、IoC控制反转 IoC控制反转它是一种思想,不是具体的实现控制反转的目的是为了降低程序的耦合度,提高程序的可扩展性,从而满足OCP原则和DIP原则控制反转,那到底反转是什么东西? 我们不再使用某个对象…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...