当前位置: 首页 > 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原则控制反转,那到底反转是什么东西? 我们不再使用某个对象…...

【机器视觉】单目测距——运动结构恢复

ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛&#xf…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) ​遍历字符串​:通过外层循环逐一检查每个字符。​遇到 ? 时处理​: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: ​与…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found"​, "n…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...