生成模型之生成器

news2024/11/15 10:21:21

        生成模 型中网络会被作为一个生成器(generator)来使用。具体来说,在模型输入时会将一个随机 变量z 与原始输入x一并输入到模型中,这个变量是从随机分布中采样得到。输入时可以采 用向量拼接的方式将x和z一并输入,或在x、z 长度一样时,将二者的加和作为输入。这 个变量z 特别之处在于其非固定性,即每一次我们使用网络时都会从一个随机分布中采样得 到一个新的z。通常,我们对于该随机分布的要求是其足够简单,可以较为容易地进行采样, 或者可以直接写出该随机分布的函数,例如高斯分布(Gaussian distribution)、均匀分布 (uniform distribution)等等。所以每次有一个输入 x 的同时,我们都从随机分布中采样得 到z,来得到最终的输出y。随着采样得到的z 的不同,我们得到的输出y 也会不一样。同 理,对于网络来说,其输出也不再固定,而变成了一个复杂的分布,我们也将这种可以输出一 个复杂分布的网络称为生成器,如图 1所示。

图1 生成器示意图 

        下面我们介绍如何训练这个生成器。首先,我们为什么要需要训练生成器,为什么需要输 出一个分布呢?下面介绍一个视频预测的例子,即给模型一段的视频短片,然后让它预测接下 来发生的事情。视频环境是小精灵游戏,预测下一帧的游戏画面,如图 2所示。

图2 视频预测例子——以小精灵游戏为例

        要预测下一帧的游戏画面,我们只需要输入给网络过去几帧游戏画面。要得到这样的训 练数据很简单,只需要在玩小精灵的同时进行录制,就可以训练我们的网络,只要让网络的输 出y,与我们的真实图像越接近越好。当然在实践中,我们为了保证高效训练,我们会将每一 帧画面分割为很多块作为输入,并行分别进行预测。我们接下来为了简化,假设网络是一次性 输入的整个画面。如果我们使用前几章介绍的基于监督学习的训练方法,我们得到的结果可 能会是的十分模糊的甚至游戏中的角色消失、出现残影的,如图 3所示。

图3 基于监督学习的小精灵游戏的预测值

        造成该问题的原因是,我们监督学习中的训练数据对于同样的转角同时存储有角色向左 转和向右转两种输出。当我们在训练的时候,对于一条向左转的训练数据,网络得到的指示就 是要学会游戏角色向左转的输出。同理,对于一条向右转的训练数据,网络得到的指示就是学 会角色向右转的输出。但是实际上这两种数据可能会被同时训练,所以网络就会学到的是“两 面讨好”。当这个输出同时距离向左转和向右转最近,网络就会得到一个错误的结果———— 向左转是对的,向右转也是对的。

        所以我们应该如何解决这个问题呢?答案是让网络有概率的输出一切可能的结果,或者 说输出一个概率的分布,而不是原来的单一的输出,如图 4 所示。当我们给网络一个随机 分布时,网络的输入会加上是一个z,这时输出就变成了一个非固定的分布,其包含了向左转和向右转的可能。举例来说,假设我们选择的z服从一个二项分布,即就只有0和1并且各 占50%。那么我们的网络就可以学到z采样到1的时候就向左转,采样到0的时候就向右转, 这样就可以解决了。

图4 基于生成模型的小精灵游戏的预测结果

        回到生成器的讨论中,我们什么需要这类的生成模型呢?答案是当我们的任务需要“创造 性”的输出,或者我们想知道一个可以输出多种可能的模型,且这些输出都是对的模型的时候。 这可以类比于,让很多人一起处理一个开放式的问题,或者是头脑风暴,大家的回答五花八门 可以各自发挥,但是回答都是正确的。所以生成模型也可以被理解为让模型自己拥有了创造 的能力。再举两个更具体的例子,对于画图,假设画一个红眼睛的角色,那每个人可能画出来 或者心中想的动画人物都不一样。对于聊天机器人,它也需要有创造力。比如我们对机器人 说,你知道有哪些童话故事吗?聊天机器人会回答安徒生童话、格林童话甚至其他的,没有一 个标准的答案。所以对于我们的生成模型来说,其需要能够输出一个分布,或者说多个答案。 当然在生成模型中,非常知名的就是生成式对抗网络(generative adversarial network), 我们通常缩写为GAN。这一节我们就讲介绍这个生成对抗网络。

        我们通过让机器生成动画人物的面部来形象地介绍GAN,首先介绍的是无限制生成(un conditional generation),也就是我们不需要原始输入 x。其对应的就是需要原始输入 x 的条件型生成(conditional generation)。如图 5 所示,对于无限制的 GAN,它的唯一 输出就是z,这里假设为正态分布采样出的向量。其通常是一个低维的向量,例如50、100的 维度。

图5 基于无限制生成的GAN

        我们首先从正态分布中采样得到一个向量z,并输入到生成器中,生成器会给我们一个对 应的输出——一个动漫人物的脸。我们聚焦一下生成器输出一个动漫人物面部的过程。其实 很简单,一张图片就是一个高维的向量,所以生成器实际上做的事情就是输出一个高维的向 量,比如是一个64×64 的图片(如果是彩色图片那么输出就是64×64×3)。当输入的向量z 不同的时候,生成器的输出就会跟着改变,所以我们从正态分布中采样出不同的z,得到的输 出y 也就会不同,动漫人脸照片也不同。当然,我们也可以选择其他的分布,但是根据经验,分布之间的差异可能并没有非常大。大家可以找到一些文献,并且尝试去探讨不同的分布之 间的差异。我们这里选择正态分布是因为其简单且常见,而且生成器自己会想方设法把这个 简单的分布对应到一个更复杂的分布。所以我们后续的讨论都以正态分布为前提。

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

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

相关文章

『功能项目』怪物消亡掉落宝箱【17】

本章项目成果展示 我们打开上一篇17销毁怪物蛋的Shaders消融特效的项目, 本章要做的事情是在怪物消亡时掉落一个宝箱功能, 首先在资源商店下载一个宝箱物品 拖拽至场景中 完全解压缩 重命名Box 放进Prefabs预制体文件夹后在场景中删除 增加Box两个组件并…

C++和蓝图混用事件

一、在C中创建动态多播委托 1、UEBpAndCpp_Sender.h //声明一个蓝图可调用的多播委托的类型DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FUEBpAndCpp_Broadcast, int, Param);//创建对象UPROPERTY(BlueprintAssignable)FUEBpAndCpp_Broadcast UEBpAndCpp_Broadcast;注意&…

校园闲置物品销售平台

一、项目概述 Hi,大家好,今天分享的项目是《校园闲置物品销售平台》。 校园闲置物品销售平台,旨在为学生提供一个安全、便捷的交易环境。通过线上发布和浏览商品信息,学生可以快速找到自己需要的物品,同时也能将自己…

缓存分布式一致性问题

缓存一致性问题发生的原因,是在更新数据时数据库和缓存数据的不一致。我们要做到保证缓存的最终一致性。如果数据需要强一致性建议直接查询数据库。 双写模式 双写模式为先写数据库,在写缓存。 进来两个请求,先执行“请求1”的操作写入数据…

C语言 | Leetcode C语言题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; bool isSubsequence(char* s, char* t) {int n strlen(s), m strlen(t);int f[m 1][26];memset(f, 0, sizeof(f));for (int i 0; i < 26; i) {f[m][i] m;}for (int i m - 1; i > 0; i--) {for (int j 0; j < 26; j) {if (t…

jmeter中上传文件接口,当文件名为中文时出现乱码

1、在jmeter5.1.1中配置上传文件接口&#xff0c;当上传的文件为中文名称时&#xff0c;文件名称会显示乱码如图 2、解决方案是需要更换jmeter/lib/ext文件中的ApacheJMeter_http.jar 包 3、更换jar包经过多次实验&#xff0c;发现有的上传文件接口中文名正常&#xff0c;但是有…

华为云征文|部署RedisStack+可视化操作

目录 1.介绍 1.1 什么是华为云Flexus X实例 1.2 什么是Redis Stack ​编辑 2 准备华为云Flexus应用服务器L实例 3 准备docker环境 4 docker 安装 Redis Stack 4.1拉取镜像 4.2 确认镜像 4.3 启动容器 4.4 放行安全组端口 4.5 操作redis 5 docker compose 配置持久 1.…

【算法】--双指针

文章目录 双指针例题移动零复写零快乐数盛⽔最多的容器有效三角形的个数和为 s 的两个数字三数之和四数之和 双指针 常⻅的双指针有两种形式&#xff0c;⼀种是对撞指针&#xff0c;⼀种是快慢指针。 对撞指针&#xff1a;⼀般⽤于顺序结构中&#xff0c;也称左右指针。 对撞…

python判断语句(三)

下一篇持续更新中… 如有错误欢迎指正&#xff01;&#xff01;&#xff01; 文章目录 前言学习内容 布尔类型和比较运算符布尔类型比较运算符总结 if语句的基本格式if语句的注意点总结案例 if else语句注意点总结案例 if elif else语句注意点总结案例 判断语句的嵌套语法格式…

哪里能够使用Claude-100k?

Claude-100k 是 Anthropic 开发的一个大型语言模型&#xff0c;可以在以下几种方式中使用&#xff1a; Anthropic 官网&#xff1a;可以通过访问 Anthropic 的官方网站来获取 Claude-100k 的使用许可或API访问权限。 API 服务&#xff1a;Claude-100k 也可以通过 API 服务进行…

fastchat与autogen使用要点澄清

说明&#xff1a; 本文重点是想使用autogen构建智能体&#xff0c;并且想要通过加载本地模型来构建&#xff0c;以灵活使用。但是autogen重点是以API调用支持openai, mistral等大模型使用的&#xff0c;对于使用国内的一些模型不是那么友好方便。然后在查找方法的过程中&#x…

ElasticSearch学习笔记(五)Bucket聚合、Metric聚合

文章目录 前言9 项目实战9.3 我周边的酒店9.4 酒店竞价排名 10 数据聚合10.1 聚合的分类10.2 DSL实现聚合10.2.1 Bucket聚合10.2.2 聚合结果排序10.2.3 限定聚合范围10.2.4 Metric聚合 10.3 RestAPI实现聚合10.3.1 API语法10.3.2 业务需求10.3.3 业务实现10.3.4 功能测试 前言 …

人工智能、机器学习和深度学习有什么区别?应用领域有哪些?

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

RLHF(带有人类反馈的强化学习)初探

我的目标是&#xff0c;在决策游戏上学习某人风格&#xff0c;可以让人对战“带有某人风格”的AI&#xff0c;比如你可以在这里对战“sky风格的AI”,这样的效果。 我最开始受到的启发来源于xbox的广告《爸爸的幽灵车》&#xff0c;已故人在游戏中留下的速度记录的固定轨迹。 …

传统CV算法——仿射变换原理及应用

可以理解一下常规的翻转和平移。“线性变换”“平移”空间变换中的仿射变换对应着五种变换&#xff0c;平移&#xff0c;缩放&#xff0c;旋转&#xff0c;翻转&#xff0c;错切。而这五种变化由原图像转变到变换图像的过程&#xff0c;可以用仿射变换矩阵进行描述。而这个变换…

异地多活架构计算设计

随着互联网的飞速发展,企业对业务连续性和高可用性的需求日益增加。异地多活架构作为一种高可靠性的系统设计方案,通过在地理上分散的多个数据中心部署应用和数据,有效降低了单一故障点对整个系统的影响,确保业务在灾难发生时能够持续运行。 架构设计策略 业务解耦:将系…

Servelet学习-24.9.3

文章目录 前言一、Servelet概述1.1 简单入门&#xff1a;2.2 生命周期 二、HttpServletRequest对象2.1 常用方法 三、HttpServeletResponse对象 前言 九月&#xff0c;加油 一、Servelet概述 Servelet&#xff1a; server applet servelet就是一个接口,定义了Java类被浏览器访…

《大道平渊》· 廿壹 —— 杀心篇:何谓 “杀心”?本质上,就是寻求杀心的一个过程。

《大道平渊》 "行有不得&#xff0c;反求诸己。" ——《论语 学而》 指的是遇事遭困&#xff0c;须在自身寻因&#xff0c;而非怨天尤人&#xff0c;一味地归咎于外因。 凡事向内求也&#xff0c;多多自省&#xff0c;提高自身的修养和能力&#xff0c;取得成功。…

基于yolov8的106种鲜花识别花朵检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的106种鲜花识别花朵检测系统是一项融合了先进深度学习技术的创新应用。该系统利用YOLOv8算法&#xff0c;这一目前最先进的目标检测模型之一&#xff0c;实现了对106种不同花卉的快速、准确识别。 YOLOv8以其速度快、准确性高和鲁棒性强的特点&#…

模拟算法专题——算法介绍算法讲解力扣实战应用

目录 1、模拟算法介绍 2、算法应用【leetcode】 2.1 替换所有的问号 2.1.1 算法思想 2.1.2 算法代码 2.2 提莫攻击 2.2.1 算法思想 2.2.2 算法代码 2.3 Z字形变换 2.3.1 算法思想 2.3.2 算法代码 2.4 外观数列 2.4.1 算法思想 2.4.2 算法代码 2.5 数青蛙 2.5.1 算…