【保姆级】生成式网络模型基础知识(图像合成/语音合成/GPT)

生成式模型基础知识

初步接触生成任务

生成任务,顾名思义就是要去生成一个东西,比如生成图片/音频/文字等等。

大家接触最多比如chatGPT、stable diffusion、还有一些语音合成相关的东西。

那么问题来了,具体生成步骤是什么样的?

一、生成任务的流程

我们注意到一件事情,生成一张图片也好、一段文字也好,它们不总是唯一的

比如我希望生成一张鸡的图片,将**[一只鸡]** 这段文字送入模型让它去生成相应的图片,它生成的不总是同一个鸡,可能是一只有中分头的鸡,也可能是一个穿背带裤的鸡,但总的来说它们都符合文字的描述。

这就和其他任务比如分类任务有着很大的区别了,因为答案不唯一,甚至我们自己都不能枚举出所有的答案,你能想象到“一只鸡”这三个字可以对应到一张穿着背带裤打篮球的鸡的图片吗?

那么如何实现这种不唯一性呢?

我们要将一个值的思路转换为一个分布。这样每次去生成鸡的图片的时候就是从一个鸡的分布中随机采样一个结果,它们的结果不相同但又都符合鸡这个范围。

在这里插入图片描述

1. 生成一张图片

如上图所示,假设我要生成一张鸡的图片,如上图所示,首先我们在一个高斯分布(即正态分布)中随机取一个z作为我们的“种子”,可以说我们的所有不确定性都来自于这里。之后将这个“种子”送到一个神经网络模型中,输出一个结果 x x x,这个x满足一个分布 P θ ( x ) P_θ(x) Pθ(x)。当然,最开始的没训练网络的时候这个分布就是依托答辩,干啥啥不行。

而我们希望网络可以实现:“无论我从高斯分布中取什么样的值,他的输出都属于鸡的分布 P d a t a ( x ) P_{data}(x) Pdata(x)”,换句话说就是将高斯分布映射到鸡的分布 P d a t a ( x ) P_{data}(x) Pdata(x)上。

2. 训练网络

最右面的 P d a t a ( x ) P_{data}(x) Pdata(x)是我们真实的数据分布,也就是我们用来训练的数据集(里面装满了各种鸡的图片)。

我们现在要做的就是训练一个神经网络模型θ,让它生成的图片所满足的分布 P θ ( x ) P_θ(x) Pθ(x)和数据集的分布 P d a t a ( x ) P_{data}(x) Pdata(x)尽可能地相似,当模型训练完成之后,我从高斯分布中任意取一个z,他都会输出一个对应的x,这个x服从分布 P θ ( x ) P_θ(x) Pθ(x),同时也完全服从数据集的分布 P d a t a ( x ) P_{data}(x) Pdata(x)。换句话说,输出的x都是鸡的图片了。

3. 任务完成

有了训练好的模型,现在输入一段文字和一个从高斯分布中取的随机值z,比如“一只在打篮球的鸡”和z=1145141输入到模型中,它就会输出一个对应的图片,当输入不同的z时,就会产生不同的鸡在打篮球的图片,可能是一只穿背带裤的公鸡在打篮球,可能是中分头的母鸡在打篮球…

过程看起来很简单,现实却很x蛋。就好像考研的时候觉得:无非就是刷题嘛,按部就班地刷网课刷习题做模拟卷,最后考个120那不轻轻松松,结果学到最后模拟卷均分只有110,考研成绩一出来尼玛才考了90多分。

上述的想法很好,但是问题在于我们怎么去训练模型让分布 P θ ( x ) P_θ(x) Pθ(x)和数据集的分布 P d a t a ( x ) P_{data}(x) Pdata(x)尽可能地相似?

二、训练优化模型

看得懂英语的小伙伴一定看到了上图的标题:最大似然估计(Maximum Likelihood Estimation),忘了没关系,你只要知道它可以通过随机抽取的样本反向的去求得原始分布就够了。

1. 怎么去训练模型让分布 P θ ( x ) P_θ(x) Pθ(x)和数据集的分布 P d a t a ( x ) P_{data}(x) Pdata(x)尽可能地相似?

我们现在神经网络θ输出的所有内容都是满足 P θ ( x ) P_θ(x) Pθ(x)的对吧? P θ ( x ) P_θ(x) Pθ(x)的意思就是在分布 P θ ( x ) P_θ(x) Pθ(x)中得到x的概率值,既然我们要让 P θ ( x ) P_θ(x) Pθ(x) P d a t a ( x ) P_{data}(x) Pdata(x)尽可能相似,那么我们肯定希望能通过神经网络θ输出数据集中的原图,假设原图们是 x 0 x_0 x0, x 1 x_1 x1,…, x n x_n xn,那么只要让 P θ ( x 0 , 1 , . . . , n ) P_θ(x_{0,1,...,n}) Pθ(x0,1,...,n)最大就行了,也就是输出原图的概率越大越好

标准一点的写法就是 θ ∗ = a r g max ⁡ θ ∏ i = 1 n P θ ( x i ) \theta^*=arg\max_\theta\prod_{i=1}^nP_\theta(x^i) θ=argmaxθi=1nPθ(xi),其中的 θ ∗ \theta^* θ就是我们希望得到的最大概率值,使用最大似然估计,也就是找出满足输出原图概率最大的那个分布,就可以确定分布 P θ ( x ) P_θ(x) Pθ(x)中的参数了。

说了一大堆,就会有人问,为什么输出原图的概率越大,这两个分布就越相似,就单凭感觉?

2. 理性理解分布之间“相似”
(1) KL散度

首先我们引入一个衡量分布之间相似度的标准,KL散度

以下引用GPT的答案

如果我们有两个离散型概率分布 P 和 Q,其概率质量函数分别为 p(x) 和 q(x),KL 散度可以定义为:

D K L ( P ∥ Q ) = ∑ x p ( x ) log ⁡ ( p ( x ) q ( x ) ) D_{KL}(P\|Q)=\sum_xp(x)\log\left(\frac{p(x)}{q(x)}\right) DKL(PQ)=xp(x)log(q(x)p(x))

如果是连续型概率分布,则 KL 散度可以表示为积分形式:

D K L ( P ∥ Q ) = ∫ − ∞ ∞ p ( x ) log ⁡ ( p ( x ) q ( x ) ) d x D_{KL}(P\|Q)=\int_{-\infty}^\infty p(x)\log\left(\frac{p(x)}{q(x)}\right)dx DKL(PQ)=p(x)log(q(x)p(x))dx

KL 散度的值通常是非负的,且当且仅当两个概率分布完全相同时取得最小值 0。当 P 和 Q 之间的差异越大时,KL 散度的值也越大。

知道了KL散度可以衡量分布之间的相似度,我们希望PQ之间差异尽可能小 => 让KL散度尽可能小 => 让似然函数尽可能大。那么如果KL散度公式和似然函数相等,那不就有联系了,也就代表我们的感觉是正确的了?

废话不多说,直接开推!

(2)推理

S a m p l e { x 1 , x 2 , … , x m } f r o m P d a t a ( x ) θ ∗ = a r g max ⁡ θ ∏ i = 1 m P θ ( x i ) = a r g max ⁡ θ l o g ∏ i = 1 m P θ ( x i ) = a r g max ⁡ θ ∑ i = 1 m l o g P θ ( x i ) ≈ a r g max ⁡ θ E x ∼ P d a t a [ l o g P θ ( x ) ] = a r g max ⁡ θ ∫ x P d a t a ( x ) l o g P θ ( x ) d x − ∫ x P d a t a ( x ) l o g P d a t a ( x ) d x = a r g max ⁡ θ ∫ x P d a t a ( x ) l o g P θ ( x ) P d a t a ( x ) d x = a r g min ⁡ θ K L ( P d a t a ∣ ∣ P θ ) \begin{align} &\mathsf{Sample}\left\{x^{1},x^{2},\ldots,x^{m}\right\}\mathsf{from}P_{data}(x) \\ &\theta^{*}=arg\operatorname*{max}_{\theta}\prod_{i=1}^{m}P_{\theta}\bigl(x^{i}\bigr) =arg\operatorname*{max}_{\theta}log\prod_{i=1}^{m}P_{\theta}\bigl(x^{i}\bigr) \\ &=arg\max_{\theta}\sum_{i=1}^{m}logP_{\theta}\bigl(x^{i}\bigr) \approx arg\max_{\theta}E_{x\sim P_{data}}\bigl[logP_{\theta}(x)\bigr] \\ &=arg\max_{\theta}\int_{x}P_{data}(x)logP_{\theta}(x)dx\quad-\int_{x}P_{data}(x)logP_{data}(x)dx \\ &=arg\max_{\theta}\int_{x}P_{data}(x)log\frac{P_{\theta}(x)}{P_{data}(x)}dx =arg\min_{\theta}KL(P_{data}||P_{\theta}) \end{align} Sample{x1,x2,,xm}fromPdata(x)θ=argθmaxi=1mPθ(xi)=argθmaxlogi=1mPθ(xi)=argθmaxi=1mlogPθ(xi)argθmaxExPdata[logPθ(x)]=argθmaxxPdata(x)logPθ(x)dxxPdata(x)logPdata(x)dx=argθmaxxPdata(x)logPdata(x)Pθ(x)dx=argθminKL(Pdata∣∣Pθ)

(2) 我们要求的是最大值,取log单调性不变

(3) 最大化 l o g P θ ( x ) logP_{\theta}\big(x\big) logPθ(x)们的累加等同于最大化 l o g P θ ( x ) logP_{\theta}\big(x\big) logPθ(x)的期望(x服从 P d a t a ( x ) P_{data}(x) Pdata(x)分布)

(4) 第一项期望 E ( X ) = ∫ x f ( x ) d x E(X)=\int xf(x)dx E(X)=xf(x)dx,其中 x x x看作是 l o g P θ ( x ) logP_{\theta}\big(x\big) logPθ(x),第二项只与数据集分布 P d a t a ( x ) P_{data}(x) Pdata(x)有关,而数据集都是已知的,所以可以看作是减了个常数项,不影响单调性

(5) 上一步减的常数项就是为了凑这个 l o g P θ ( x ) P d a t a ( x ) log\frac{P_{\theta}(x)}{P_{data}(x)} logPdata(x)Pθ(x)的形式,而整个式子也就是KL散度的定义式。

至此我们得出,最大化θ等同于最小化KL散度,也就是尽可能让分布 P θ P_\theta Pθ P d a t a P_{data} Pdata之间差异更小,证明完毕。

三、理想很丰满、现实就是一坨

恭喜你看到这里,估计你已经感觉自己无敌了:“生成模型也就这么回事嘛。”

然而很遗憾的告诉你,我们之前讲的东西都基于一个条件:假设分布 P θ ( x ) P_θ(x) Pθ(x)可求

我们本科期间做的一些最大似然估计的题目都是假设满足泊松分布,xxx分布,它们都有固定的参数值,自然可以通过偏导来计算参数。

然而谁能想象出一个充满了鸡的图片的数据集的分布长什么样?它又有哪些参数?

所以直接去求 P θ ( x ) P_θ(x) Pθ(x)是不太可行的(除非精心设计整个模型,那就十分的复杂了)。

不过别灰心,至少已经入门了,有很多文章去解决了这个问题

下期我会讲讲VAE, DDPM(扩散模型)是如何解决这个问题的(前提是有下一期)

至于是否还有下一期就请大家多多支持啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕业设计】基于SSM++jsp的高校专业信息管理系统【源码+lw+部署文档+讲解】

目录 第1章 绪论 1.1 课题背景 1.2 课题意义 1.3 研究内容 第2章 开发环境与技术 2.1 MYSQL数据库 2.2 JSP技术 2.3 SSM框架 第3章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删除信息流…

ChatGPT-4o发布了,所有人都可以免费用

前言 美国时间 5 月 13 日,在 Sam Altman 缺席的情况下(为什么缺席,猜测是可能后面还有更重磅的消息,这次的产品只是一个中间过渡产品),OpenAI CTO Mira Murati 介绍了新的 ChatGPT 产品 ChatGPT-4o。这个…

node安装以及node的包管理工具

node安装以及node的包管理工具 node安装nvm管理工具 node安装 1、下载node链接: 点击这里 2、选择需要下载的版本以及对应的系统版本 nvm管理工具 1、下载nvm链接: 点击这里 2、双击运行.exe文件 全部默认安装即可 3、nvm常用命令 nvm list avaliable 显示所有可以下载的n…

企业管理咨询公司不会选?一文带你避开“坑人”陷阱

近年来,企业管理咨询公司如雨后春笋般涌现,数量之多令人眼花缭乱。所以,面对这么多的企业管理咨询公司,企业该选谁?又该如何选择?本文将从以下几个方面为大家解析。 首先,我们要明确自己的需求和…

R语言:ROC分析

> install.packages("pROC") > library(pROC) > inputFile"结果.txt" > rtread.table(inputFile, headerT, sep"\t", check.namesF, row.names1) > head(rt) con treat TCGA-E2-A1L7-11A-con…

【论文速读】|大语言模型是零样本模糊测试器:通过大语言模型对深度学习库进行模糊测试

本次分享论文:Large Language Models are Zero-Shot Fuzzers: Fuzzing Deep-Learning Libraries via Large Language Models 基本信息 原文作者:Yinlin Deng, Chunqiu Steven Xia, Haoran Peng, Chenyuan Yang, Lingming Zhang 作者单位:U…

vue+vant项目0-1快速发布到--钉钉应用

uniapp开发笔记----vue开发项目配置钉钉应用 一、 vuevant开发项目1. 自定义vuevant项目或者已经有的旧项目1. 自定义vuevant项目1. 创建vue项目2. 安装依赖3. 引入所有组件4. 使用一个组件/效果和代码如下: 2. git官网仓库,直接拉默认dome代码3. 打包项…

CTF如何学习?

CTF如何学习?打CTF有什么用 CTF本身有几个常见的领域 MISC WEB [逆向 密码学](https://www.zhihu.com/search?q逆向 密码学&search_sourceEntity&hybrid_search_sourceEntity&hybrid_search_extra{“sourceType”%3A"answer"%2C"sourc…

Hadoop 3.4.0+HBase2.5.8+ZooKeeper3.8.4+Hive+Sqoop 分布式高可用集群部署安装 大数据系列二

创建服务器,参考 虚拟机创建服务器 节点名字节点IP系统版本master11192.168.50.11centos 8.5slave12192.168.50.12centos 8.5slave13192.168.50.13centos 8.5 1 下载组件 Hadoop:官网地址 Hbase:官网地址 ZooKeeper:官网下载 Hive:官网下载 Sqoop:官网下载 为方便同学…

TypeScript学习日志-第二十六天(weakMap,weakSet,set,map)

weakMap,weakSet,set,map 一、set set 的基本用法如下: 二、map map 与 set 的 区别 就是 map 的 key 可以是引用类型 object array , map 的添加时使用 set 三、weakmap weakset weakmap和weakset 都是弱项 弱引用 其键必须是引用类型,不能是其它类…

弹幕游戏-压力测试 Python-Locust模拟送礼物

Hey,读者们!今天给大家带来一个Python性能测试的新玩法——使用Locust模拟发送礼物。是不是听起来就很酷?😎 🎯目标 想象一下,在直播平台上,你希望测试某个直播间的礼物发送功能。那么&#x…

有一个21年的前端vue项目,死活安不上依赖

在公司开发的时候遇到的一个很玄幻的问题,这个项目是21年开发的,现在我是24年中途二开增加新功能 这个项目经过多人之手,现在已经出现了问题------项目依赖安不上,我能启动完全是因为在23年的时候写这个项目的时候将依赖费九牛二虎之力下载好后打成了压缩包发给另外一个安不上依…

Qt学习笔记1.3.3QtCore-隐式共享

文章目录 概述隐式共享细节类列表 Qt中的许多c类使用隐式数据共享来最大化资源使用并最小化复制。隐式共享类作为参数传递时既安全又高效,因为只传递指向数据的指针,并且只有当函数写入数据时才会复制数据,即写时复制(copy-on-write)。 概述 …

【Node.js】事件循环

Node.js 中的事件循环是基于单线程的异步非阻塞模型。它是 Node.js 的核心机制,用于处理非阻塞的 I/O 操作和异步事件。 1. Node.js 事件循环介绍 Node.js 的事件循环是一个 Event Loop,通过异步回调函数的方式实现非阻塞的处理。事件循环会在主线程上…

信创替代后的设备处置

信创替代后的设备处置 在信创项目中替换下来的设备,如果从技术层面讲还具有较高的应用价值,如何处置呢? 一、数据处置 信创适配完成后,这些被替换下来的服务器上有大量的数据(包括结构化和非结构化)&…

NSSCTF中的1zjs、作业管理系统、finalrce、websign、简单包含、Http pro max plus

目录 [LitCTF 2023]1zjs [LitCTF 2023]作业管理系统 [SWPUCTF 2021 新生赛]finalrce exec()函数:php中exec介绍及使用_php exec-CSDN博客​​​​​​ 资料参考:RCE(远程命令执行)绕过总结_rce绕过-CSDN博客 [UUCTF 2022 新生赛]websign [鹏城杯 …

鱼哥好书分享活动第22期:《数字政府网络安全合规性建设指南》解锁数字政府网络安全新篇章

鱼哥好书分享活动第22期:《《数字政府网络安全合规性建设指南》》解锁数字政府网络安全新篇章 阅读对象:书籍目录:了解更多:赠书抽奖规则: 当今时代,数据已成为新型生产要素,不仅是个人、企业乃至国家的重要…

29、Qt使用上下文菜单(右键菜单)

说明:使用四种方式实现鼠标右击界面,显示出菜单,菜单上有两个动作,选择两个动作,分别打印“111”和“222”。 界面样式如下: 一、方法1:重写鼠标事件mousePressEvent .h中的代码如下&#xff…

ip addr 或 ip address 是 Linux 系统中的一个命令,用于显示或修改网络接口的地址信息。

ip addr 或 ip address 是 Linux 系统中的一个命令,用于显示或修改网络接口的地址信息。这个命令是 iproute2 软件包的一部分,通常在现代 Linux 发行版中都是预装的。 当你运行 ip addr 或 ip address 命令时,你会看到系统上所有网络接口的地…

不踩雷k8s部署

一、前提 服务器规划: 服务器要求: 建议最小硬件配置: 2核CPU、2G内存、20G硬盘。服务器可以访问互联网,能够联网下载镜像。时间进行同步!!! 软件环境: 软件版本操作系统> CentOS 7.5Docker最新 26.1.1K8Sv1.28.1…