NLP(6)--Diffusion Model

news2024/11/20 20:32:16

目录

一、Flow-Based General Model

1、概述

2、函数映射关系

3、Coupling Layer 

4、Glow

二、Diffusion Model

1、概述

2、前向过程

3、反向过程

4、训练获得噪声估计模型

5、生成图片

三、马尔科夫链


一、Flow-Based General Model

1、概述

        Flow-Based General Model(基于流的生成模型)相较于GAN、VAE和Component-to-Component都有一定的优化。

        Flow-Based General Model在训练过程中,将输入数据进行归一化处理得到π(z)(满足正态分布),归一化处理有利于后续生成器(也可以说进行一个函数映射)更加容易的映射到复杂的目标分布。生成器G的目标就是训练一个函数,将标准正态分布映射到目标分布上。

        在这之后,模型将采取最大化采样和对数似然的方法(也就是第一个公式)来评估生成器的性能,从而提升使生成样本更加接近目标分布,提升生成器的效果。

        而由于求最大值不如最小值容易,所以最大化采样对数似然这个函数近似等于最小化生成样本和真实样本的KL散度值,也就是生成样本和真实样本越接近越好。

        GAN、VAE、FLOW-Based的结构表示: 

2、函数映射关系

雅克比行列式:

        假定x与z满足这样的关系:

           x=f(z),z=\begin{bmatrix} z_1\\ z_2 \end{bmatrix},x=\begin{bmatrix} x_1\\ x_2 \end{bmatrix}

        雅克比行列式为:

        J_G=\begin{bmatrix} \partial x_1/ \partial z_1 &\partial x_1/ \partial z_2 \\ \partial x_2/ \partial z_1& \partial x_2/ \partial z_2 \end{bmatrix}

         J_G^{-1}=\begin{bmatrix} \partial z_1/ \partial x_1 &\partial z_1/ \partial x_2 \\ \partial z_2/ \partial x_1& \partial z_2/ \partial x_2 \end{bmatrix}

        由于行列式的秩有这种关系存在:

        det(A)=\frac{1}{det(A^{-1})}

        所以也就存在:

        det(J_G)=\frac{1}{det(J_G^{-1})}

结合数学:

        由于生成器也可以看做一个函数的映射关系,在假设x=G(z)前提下,结合模型则有,p(x) \cdot |det(J_G|)=\pi(z),由下图可知,矩阵的行列式就是图中的面积,而函数的映射变化,也会导致生成器输出的每个向量位置变化,通过计算也可以得到上面的公式成立。

3、Coupling Layer 

        根据这个公式:p(x) \cdot |det(J_G|)=\pi(z),有下面公式成立:p(x) =\pi(z)\cdot |det(J_G^{-1}|)

        由于训练模型过程中,主要使用的是根据z求得x的目标分布,所以,必须求出J_G^{-1},也就是求出G^{-1}G^{-1}是要作为训练网络的,必须有前提G是可逆的,满秩的。

        而且根据最开始所得计算生成器效果的代价函数也有:

G^*=arg max_G\sum_i^m log p_G(x)

G^*=argmax\sum_i^m log \pi(G^{-1}(x^i))+log|det(J_{G^{-1}})|

        另外生成器也不只可以放一个,也可以进行叠加使用,那么多个G的叠加之后,代价函数的第二项也是进行叠加的,可以见下图。

构造G的网络结构:

(1)限制z与x的维度必须相同,而GAN中z与x可以不同,这也是Flow-Based拉胯的一点。

(2)在Coupling layer中输入数据分成两个部分,分为条件部分和非条件部分,生成器对非条件部分(也就是下图的上层)进行变换生成输出,下图是进行了一次内积和一次相加,通过内积操作可以逐步改变数据的分布,使其逼近目标分布,此时生成器的参数也会不断更新,适应不同数据的分布。

(3)另外也可以正反接多个Coupling layer结构,来促进网络融合,如下图。

4、Glow

        Glow(Generative Flow)是一种基于Flow-Based model的思想,Glow论文中提出了Coupling layer和1*1 卷积。其中1*1卷积在后来的网络结构中仍然广泛使用来打乱channels。

        另外Glow的变换都是可逆的,可以满足Flow-Based General Model中生成器G的可逆性。

二、Diffusion Model

1、概述

        Diffusion Model是一种广义的扩散生成模型,包含DDPM、DDIM和Stable Diffusion、DALLE2等大模型。

        Diffusion Model中比较出众的就是Denoising Diffusion Probabilistic Model(DDPM),通过迭代地应用一系列难以逆转的噪声操作来生成样本。训练中首先通过将原始图片添加迭代多次噪音生成高噪音图,再经过多次迭代的Denoise去噪生成图像。

        由于DDPM可以逐步添加噪音,控制噪声的变化速度,所以生成过程是可控的,也不需要类似VAE的低维度隐变量操作,可以获得更加真实和清晰图像。

        DDPM关键是训练了一个噪声模型,而没有使用过去一成不变的Encoder-Decoder的结构,使得训练和推理更加高效。

        DDPM模型相比于早期的若干模型,在训练模型的高效性和稳定性上大大提高,并降低了生成模型的模式坍塌问题。

2、前向过程

        前向过程也就是扩散过程,通过对原始图像添加噪声得到扩散后的图片,也就是在破坏图片。由论文中可知,每一步的扩散过程如下公式:

        也可以根据计算\bar{\alpha_t}=\Pi_i^n \alpha_t\epsilon标准满足正态分布,得到:

        也可以参照下图的图示的扩散模型。

3、反向过程

        反向过程就是去噪过程,所谓的去噪denoise,并不是输入第1000轮的生成图像,输出一个与第999轮的近似的生成图像,而是生成与添加噪音接近的噪声图,最后进行降噪(也就是做减法)。

        去噪公式如下:

        其中,\sigma_t也是一个高斯噪声,是用于表示估测和实际的差距,在DDPM模型中一般使用U-Net来生成这个差距。 在DDPM模型中,去噪过程初始时\sigma_t值较大,噪声水平较高,生成的样本也与真实样本之间差距较大,而随着训练的进行,\sigma_t值逐渐减小,噪声水平降低,生成的样本也与真实样本之间的差距较小,生成样本质量更高,模型效果更好。

4、训练获得噪声估计模型

        扩散模型中训练的噪声估计模型,也就是\epsilon _\theta(x_t,t),使其预测的噪声与最初加的噪声越接近越好。在论文中用L2范数来估计这个损失函数。

5、生成图片

        根据论文伪代码所写,先任意选取一个正态分布中的噪声x_T,再一步步通过噪声模型估计噪声,并将原模型利用去噪公式恢复到x_0

         下图就是论文中CIFAR10通过不同随机噪音去噪得到的图片。

三、马尔科夫链

        这里再提到马尔科夫链其实有点晚了,但是还是应该介绍一下。

        马尔科夫链:简而言之就是变量序列的随机变量之间,存在一种特殊的关系,后一时刻的随机变量只依赖于前一刻的随机变量,则称这个随机变量序列具有马尔科夫性,称为马尔科夫链。

         在DDPM中,马尔科夫链被用于模拟噪声变化的过程,噪声也是一个随时间变化的马尔科夫链,初始时,噪声水平高,而随着训练进行,噪声水平降低,马尔科夫链的转移概率矩阵可以描述噪声水平从一个step到另一个step的变化规律,从而优化生成模型生成高质量样本。

四、DDIM

        DDIM(Diffusion-Decomposed Importance Sampling)为扩散采样算法,目的是从扩散模型中高效生成高质量样本。

        DDIM不在是马尔科夫链,而是在DDPM下做了改进,目的是加速迭代速度。

        同样的策略还有PLMS策略,也是对DDPM算法进行改进。

        另外,后续的Stable Diffusion中也利用DDPM来训练模型,用DDIM来进行快速采样,加快速度。

参考博文:全网最简单的扩散模型DDPM教程 - 知乎

参考视频:(正课)Diffusion Model 原理剖析 (3_4) (optional)_哔哩哔哩_bilibili

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

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

相关文章

C 通过宏定义重定义malloc - free,预防内存泄露

系列文章目录 C模版基础 文章目录 目录 代码地址 相关说明 使用案例 代码地址 GitHub - CHENLitterWhite/CPPWheel: CPP自封装的库 /* * 作者: 干饭小白 * 时间: 2023-09-25 16:00:00:00 * * 说明: * 只能检测 malloc 和 free,无法检测 new delete */ #pra…

[Linux入门]---Linux指令②

文章目录 Linux系统常用指令1.man指令2.echo3.cp指令(重要)4.mv指令(重要):5.alias指令6.cat指令7.more指令8.less指令(重要)9.head指令10.tail指令11.时间相关的指令1.在显示方面2.在设定时间方…

Redis环境配置

【Redis解压即可】链接:https://pan.baidu.com/s/1y4xVLF8-8PI8qrczbxde9w?pwd0122 提取码:0122 【Redis桌面工具】 链接:https://pan.baidu.com/s/1IlsUy9sMfh95dQPeeM_1Qg?pwd0122 提取码:0122 Redis安装步骤 1.先打开Redis…

OpenAI开发系列(二):大语言模型发展史及Transformer架构详解

全文共1.8w余字,预计阅读时间约60分钟 | 满满干货,建议收藏! 一、介绍 在2020年秋季,GPT-3因其在社交媒体上病毒式的传播而引发了广泛关注。这款拥有超过1.75亿参数和每秒运行成本达到100万美元的大型语言模型(Large …

【力扣周赛】第 362 场周赛(⭐差分匹配状态压缩DP矩阵快速幂优化DPKMP)

文章目录 竞赛链接Q1:2848. 与车相交的点解法1——排序后枚举解法2——差分数组⭐差分数组相关题目列表📕1094. 拼车1109. 航班预订统计2381. 字母移位 II2406. 将区间分为最少组数解法1——排序贪心优先队列解法2——差分数组 2772. 使数组中的所有元素…

加密算法发展简介

1:对称加密算法 客户端加密数据和服务端解密数据,使用的相同的秘钥: 固定秘钥:双方约定好一个固定秘钥; 随机秘钥:双方约定每次建立连接的时候,某固定BYTE为秘钥; 缺点&#xff1a…

【MySQL】 MySQL数据库基础

文章目录 🐱‍👓数据库的操作📌显示当前的数据库📌创建数据库🎈语法:🎈语法说明🎈示例: 🌴使用数据库🎋删除数据库🐱‍🏍语…

sql注入Less-2

后台sql s q l " S E L E C T ∗ F R O M u s e r s W H E R E i d sql "SELECT * FROM users WHERE id sql"SELECT∗FROMusersWHEREidid LIMIT 0,1"; 注入语句 http://192.168.200.26/Less-3/?id-1? union select 1,2,database();– 使用id-1 便可…

JavaScript中的Hoisting机制

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript 中的 Hoisting 机制⭐ 变量提升⭐ 函数提升⭐ 注意事项⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xf…

LVS+Keepalived 高可用集群

LVSKeepalived 高可用集群 1、Keepalived工具介绍2、vrrp协议(虚拟路由冗余协议)2.1vrrrp是什么?2.2vrrp工作过程2.3Keeplived、VRRP及其工作原理2.4Keepalived体系主要模块 3、搭建LVSKeepalived 高可用集群 1、Keepalived工具介绍 支持故障…

MFC-GetSystemFirmwareTable获取系统固件表

获取ACPI表格 void CgetSystemFirmwareTableDlg::OnBnClickedButton1() {//UINT bufferSize GetSystemFirmwareTable(ACPI, 0, NULL, 0);//获取系统固件表/*【参数3和参数4为NULL和0,只是为了返回真实大小】这个函数可以用来获得系统中的各种固件信息,如…

MySQL中SQL语句执行顺序分析

1、 MySQL手写执行顺序 2、 MySQL机读执行顺序 随着Mysql版本的更新换代,其优化器也在不断的升级,优化器会分析不同执行顺序产生的性能消耗不同而动态调整执行顺序。下面是经常出现的查询顺序:

SpringBoot使用Mybatis查询数据

1.创建工程 说明:创建springboot工程,数据库表book,实体类Book 1.1创建项目 1.2 勾选相应的配置 1.3数据表book 说明:创建了book表,添加了id,type,name,description字段。 1.4创建Book实体类 说明:生成…

微服务保护-流控效果

个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…

【AI】推理系统和推理引擎的整体架构

本文主要是对 B 站 Up 主 ZOMI酱 推理系统系列视频 的理解,可以认为是重点笔记。 一、深度学习模型的全生命周期 相信很多人和我一样,刚看到深度学习模型中的推理系统或推理引擎时是一头雾水,因为学习 DL 时通常关注于模型的设计和训练。下图…

MFC - 一文带你从小白到项目应用(全套1)

文章篇幅可能会比较长,从入门到基本能上项目的全部内容。建议观看的过程中,用电脑跟着学习案例。 持续输出优质文章是作者的追求,因为热爱,所以热爱。 最近看动漫被一句鸡汤感动到了,也送给各位朋友: 只要有…

微服务保护-热点参数限流

个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…

Dubbo3基础使用

1、Dubbo概述 现在SpringCloud Alibaba比较火,用的比较多是吧,那dubbo是不是过时的呢? 并不是的,以前有人把Dubbo和SpringCloud进行对比,其实两者是不同维度的,不能对比,dubbo就是一个rpc框架&…

Adobe Bridge 2024:解锁创意力的数字媒体利器

在当今数字化的时代,创意工作者们需要处理和管理大量的数字媒体资源,如照片、视频、音频等。为了提高工作效率和创作质量,他们需要一个功能强大、易于使用的工具来组织、浏览和共享这些媒体文件。幸运的是,Adobe Bridge 2024 正好…

Linux文件类型与根目录结构

目录 一、文件类型 二、目录结构 1、FHS Linux目录结构的特点 2、路径以及工作目录 1)路径 2)工作目录 3)存放路径 一、文件类型 主目录下部分文件如下: [rootlocalhost ~]# cd ~ [rootlocalhost ~]# ll total 52 -rw-r--…