生成模型概述

文章目录

  • 生成模型概述
    • 一、生成模型类型
    • 二、生成对抗网络(GANs)
    • 三、自回归模型(Autoregressive Models)
    • 四、扩散模型(Diffusion Models)
    • 五、流模型(Flow-based Models)
    • 参考

生成模型概述

一、生成模型类型

  生成模型是深度学习领域的一类模型,它们的目标是学习如何生成数据的分布,从而能够生成新的、与真实数据类似的样本。

  以下是一些主要的生成模型:

  • 生成对抗网络(GANs):
    GAN由两个部分组成:生成器(生成新数据)和判别器(区分真实数据和生成的数据)。这两部分在训练过程中相互竞争,提高彼此的性能。
    应用:图像生成、艺术创作、数据增强、风格迁移等。

  • 自回归模型(Autoregressive Models):
    如Transformer在自然语言处理领域的应用。这些模型预测序列中的下一个元素,基于前面的元素。
    应用:文本生成、机器翻译等。

  • 扩散模型(Diffusion Models):
    这类模型通过将数据转化为噪声,然后再逆过程中重建原始数据,来生成新的数据样本。
    应用:高质量图像生成、文本到图像生成等。

  • 流模型(Flow-based Models):
    如RealNVP和Glow,这些模型通过可逆的神经网络变换实现从数据空间到潜在空间的映射。
    应用:图像生成、数据去噪、概率建模等。

  • 变分自编码器(VAEs):

    VAE是一种基于贝叶斯推理的生成模型,它通过编码器将数据映射到潜在空间,然后通过解码器从潜在空间重构数据。
    应用:图像生成、图像去噪、推荐系统等。

  • 循环神经网络(RNNs)及其变体(如LSTM、GRU):

    RNN及其变体特别擅长处理序列数据,可以用于生成文本、音乐等序列数据。
    应用:文本生成、语音合成、音乐创作等。

  其中,较为常见的方法主要为:生成对抗网络(GANs),自回归模型(Autoregressive Models),扩散模型(Diffusion Models)和Flow-base model。

二、生成对抗网络(GANs)

生成对抗网络的基本原理可以看左侧的示意图。

在这里插入图片描述
  2014 年,Ian J.Goodfellow 提出了 GAN,它是由一个生成器 G 和一个判别器 D 组成。生成网络产生「假」数据,并试图欺骗判别网络;训练的时候,判别网络对生成数据进行真伪鉴别,试图正确识别所有「假」数据。在训练迭代的过程中,两个网络持续地进化和对抗,直到达到平衡状态,判别网络无法再识别「假」数据。

  推理的时候,只要保留生成器 G 就行了,输入一个随机噪声 vector,生成一张图像。

  右侧是一个经典的 AttnGAN 的框架,是一个引入了 attention 结构(使得图片生成局部能够和文本描述更加匹配)、并且从粗粒度到细粒度 coarse to fine 进行生成的框架,在当时还是取得了不错的生成效果。

  GAN 的优势是在一些窄分布(比如人脸)数据集上效果很好,采样速度快,方便嵌入到一些实时应用里面去。

  缺点是比较难训练、不稳定,而且有 Mode Collapse(模式崩塌)等问题。

三、自回归模型(Autoregressive Models)

  第二种方法是自回归方式,自回归方式在自然语言中用的比较多,像大家听到最多的比如 GPT 系列。

在这里插入图片描述

  这个方法比较出名的就是 VQGAN,还有就是 openai 的 dall-e。

  VQGAN 是将类似的思路拓展到了视觉生成领域。他主要包括两个步骤:

  第一步:将原始的 RGB 图像通过 vqvae 或者 vqgan 离散压缩成一系列的 视觉 code,这些视觉 code 可以利用一个训练得到的 decoder 恢复出原始的图像信息,当然会损失一些细节,但整体恢复质量还是 OK 的,特别是加了 GAN loss 的。

  第二步:利用 transformer 或者 GPT,来按照一定的顺序,逐个的去预测每个视觉 code,当所有 code 都预测完了之后,就可以用第一步训练好的 Decoder 来生成对应的图像。因为每个 code 预测过程是有随机采样的,因此可以生成多样性比较高的不同图像。

四、扩散模型(Diffusion Models)

  扩散模型也就是我们目前大多数文生图模型所采用的技术。

  扩散模型也分为两个过程,一个是前向过程,通过向原始数据不断加入高斯噪声来破坏训练数据,最终加噪声到一定步数之后,原始数据信息就完全被破坏,无限接近与一个纯噪声。另外一个过程是反向过程,通过深度网络来去噪,来学习恢复数据。

  训练完成之后,我们可以通过输入随机噪声,传递给去噪过程来生成数据。这就是 DDPM 的基本原理。

  图中是 DALLE2 的一个基本框架,他的整个 pipeline 稍微有些复杂,输入文本,经过一个多模态的 CLIP 模型的文本编码器,学习一个 prior 网络,生成 clip 图像编码,然后 decoder 到 64*64 小图,再经过两个超分网络到 256*256,再到 1024*1024。

在这里插入图片描述

五、流模型(Flow-based Models)

OpenAI 曾经根据 GLOW 做过一些 Demo,Demo 网址:Glow: Better reversible generative models (openai.com)我们在这里给出 Demo的一些功能和简单的原理。

  flow model 原理参考本人的另一篇博客:生成模型-流模型(Flow)

人脸混合:将一个人脸通过 G 逆输出成 z1,另一个人脸通过 G 逆输出成 z2,然后 z1 与 z2 取平均,平均值再通过 G,就可以得到混合后的人脸:

在这里插入图片描述

参考

常见的生成模型有哪些?_生成模型科普-CSDN博客

https://github.com/datawhalechina/sora-tutorial/tree/main/docs

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

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

相关文章

【数据分享】1929-2023年全球站点的逐日平均海平面压力(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全球气象站…

CPP容器vector和list,priority_queue定义比较器

#include <iostream> #include <bits/stdc.h> using namespace std; struct VecCmp{bool operator()(int& a,int& b){return a>b;/*** 对于vector和list容器&#xff0c;这里写了&#xff1e;就是从大到小* 对于priority_queue容器&#xff0c;这里写…

【阅读论文】When Large Language Models Meet Vector Databases: A Survey

摘要 本调查探讨了大型语言模型&#xff08;LLM&#xff09;和向量数据库&#xff08;VecDB&#xff09;之间的协同潜力&#xff0c;这是一个新兴但迅速发展的研究领域。随着LLM的广泛应用&#xff0c;出现了许多挑战&#xff0c;包括产生虚构内容、知识过时、商业应用成本高昂…

【算法与数据结构】 C语言实现单链表队列详解

文章目录 &#x1f4dd;队列&#x1f320; 数据结构设计&#x1f309;初始化队列函数 &#x1f320;销毁队列函数&#x1f309;入队函数 &#x1f320;出队函数&#x1f309;获取队首元素函数 &#x1f320;获取队尾元素函数&#x1f309; 判断队列是否为空函数&#x1f309;获…

如何让uni-app开发的H5页面顶部原生标题和小程序的顶部标题不一致?

如何让标题1和标题2不一样&#xff1f; 修改根目录下的App.vue&#xff08;核心代码如下&#xff09; <script>export default {onLaunch() {// 监听各种跳转----------------------------------------[navigateTo, redirectTo, reLaunch, switchTab, navigateBack, ].…

Leetcode 226. 翻转二叉树

心路历程&#xff1a; 翻转一瞬间没什么思路&#xff0c;其实就是挨个把每个结点的左右子树都翻转了。主要不要按照左右子树去思考&#xff0c;要按照结点去思考。 翻转既可以从上到下翻转&#xff08;前序遍历&#xff09;&#xff0c;也可以从下到上翻转&#xff08;后序遍历…

等保测评-Windows服务器

安全计算环境 身份鉴别 a)应对登录的用户进行身份标识和鉴别&#xff0c;身份标识具有唯一性&#xff0c;身份鉴别信息具有复杂度要求并定期更换 winr //运行 secpol.msc //本地安全策略&#xff0c;点击账户策略中的密码策略 注意修改的时候确保当前密码是满足条件的 b)应…

应急响应-Linux(1)

应急响应-Linux(1) 黑客的IP地址 思路&#xff1a; 一般系统中马之后会有进程连接黑客的主机&#xff0c;可以使用netstat -anpt查看下当前进程的连接&#xff0c;此处查看到没有后 &#xff0c;可以从系统服务开始查找&#xff0c;系统的服务日志一般都会保存相关访问信息&…

idea 没有代码提示解决方法

itellij idea 没有代码提示解决方法 今天写代码发现没有代码提示了&#xff0c;很难受。 直接上解决方法 设置 File-Settings-Editor-General-Code Completion&#xff1a;勾选Show suggestrions as you type 我的是这个问题&#xff0c;勾选上就ok了 取消节能模式 如果…

智慧公园:AI智能分析网关V4城市公园视频智能监管方案

一、背景分析 随着天气渐渐转暖&#xff0c;城市公园的花卉也逐渐盛开&#xff0c;春暖花开时节&#xff0c;前往公园赏花游玩的城市居民也渐渐多起来&#xff0c;因此安全问题也成为相关监管部门的重要管理任务之一。随着科技的不断进步&#xff0c;智能监控技术已经成为现代…

WPS制作甘特图

“ 甘特图&#xff08;Gantt chart&#xff09;又称为横道图、条状图&#xff08;Bar chart&#xff09;&#xff0c;通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。” 设置基础样式 设置行高 设置宽度 准备基础数据 计算持续时间 …

.NET Core 服务实现监控可观测性最佳实践

前言 本次实践主要是介绍 .Net Core 服务通过无侵入的方式接入观测云进行全面的可观测。 环境信息 系统环境&#xff1a;Kubernetes编程语言&#xff1a;.NET Core ≥ 2.1日志框架&#xff1a;Serilog探针类型&#xff1a;ddtrace 接入方案 准备工作 DataKit 部署 DataK…

【MySQL】MVCC多版本并发控制

MVCC&#xff08;Multi-Version Concurrency Control&#xff09; 多版本并发控制&#xff0c;用于解决数据库并发访问中&#xff0c;数据一致性问题。它通过在读写操作期间保存多个数据版本&#xff0c;以提供并发事务间的隔离性&#xff0c;从而避免了传统的锁机制所带来的资…

2024-03-23 问AI: 介绍一下深度学习中的ReLU函数

文心一言 ReLU&#xff08;Rectified Linear Unit&#xff09;函数是深度学习领域中常用的一种激活函数。它具有简单、计算高效且在某些情况下能有效缓解梯度消失问题等优点&#xff0c;因此在神经网络中得到了广泛的应用。 ReLU函数的定义非常简单&#xff0c;其数学表达式为…

MapReduce学习问题记录

1、如何跳过对某行数据的处理 第一行数据是字段名不需要处理&#xff0c;我们知道第一行偏移量是0&#xff08;行记录的时候是从数组首地址开始&#xff0c;到了行标识符进行一次计数&#xff0c;这个计数就是行偏移量&#xff0c;从0开始&#xff09;&#xff0c;我们根据偏移…

1+x中级题目练习复盘(八)

SQL 语句中进行 group by 分组时&#xff0c;可以不写 where 子句 在使用 select 语句进行查询分组时&#xff0c;如果希望去掉不满足条件的分组&#xff0c;使用 having 子句File 类的 isDirectory() 方法可以判断文件是否为目录 在使用 select 语句进行查询分组时&#xff0…

基于Matlab的眼底图像血管分割,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

qt5-入门-国际化

参考&#xff1a; Qt 国际化(上)_w3cschool https://www.w3cschool.cn/learnroadqt/fwkx1j4j.html QT5实现语言国际化&#xff08;中英文界面动态切换&#xff0c;超详细&#xff09;_qt qevent::languagechange-CSDN博客 https://blog.csdn.net/m0_49047167/article/details/…

奇舞周刊第523期:来自 rust 生态的强烈冲击?谈谈 Leptos 在语法设计上的精妙之处...

奇舞推荐 ■ ■ ■ 来自 rust 生态的强烈冲击&#xff1f;谈谈 Leptos 在语法设计上的精妙之处 过去很长一段时间&#xff0c;前端框架们都在往响应式的方向发展。同时又由于 React hooks 的深远影响&#xff0c;函数式 响应式成为了不少前端心中最理想的前端框架模样。Solid …

从JVM的退出机制分析Java程序的优雅关闭退出

前言 Java程序启动从main函数开始启动&#xff0c;是程序入口和主线程&#xff0c;但程序会在什么时候结束&#xff1f;为什么有的Java程序在启动后很快就结束了&#xff0c;比如HelloWorld程序&#xff0c;有的程序却能一直在运行&#xff0c;比如Tomcat启动后就一直保持进程…