生成模型之生成器

2024-09-04 07:36
文章标签 模型 生成 生成器

本文主要是介绍生成模型之生成器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        生成模 型中网络会被作为一个生成器(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.chinasem.cn/article/1135395

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe