首页 > 其他分享 >【转载】人人都能看懂的大模型原理(四)

【转载】人人都能看懂的大模型原理(四)

时间:2023-09-22 16:47:48浏览次数:63  
标签:可控 模型 语义 生成 能看懂 人人 图像 转载 高斯分布

 

四、 AIGC可控生成原理

        本章我们将揭露AIGC的神秘面纱,解答AIGC和大模型的区别和关系。我们也将讨论open AI和其他大模型公司的关键区别点,为什么他们能够遥遥领先。本章试图从机器学习理论出发,对图像生成和文本生成建立统一的理论。本章诸多理论和观点均为作者原创,如有纰漏,请包含,也希望大家积极讨论。

4.1 图像的语义是什么

第二章我们讨论了语言的语义是什么。同样的道理,为了对图像的语义进行建模,我们还要讨论下什么是图像的语义。第三章讨论过机器视觉是在像素矩阵中找到模式,但是模式包含哪些内容呢?图像语义是像素块拼凑在一起表达出来的某种概念,并且这种概念通常是人类赋予的。比如图像里面的目标和目标关系、图像的构图、图像的纹理、图像的颜色、图像的风格、图像表达的三维空间信息等等。

但是无论图像的语义多么复杂,它都是由一系列像素在一起共同表达出来的,相似的语义有相似的像素表达。像素表达也叫做表观特征(appearance feature)。因此我们可以给语义下这么一个定义:语义是表观特征构成的分布。为什么说是分布呢?因为往往同一个语义对应的表观特征不是完全固定的。它在一定范围内存在变化,我们仍然认为它语义不变。

上述定义非常抽象,为了方便大家理解,我举一个简单的例子,如图4.1所示。眉型有非常多的形态,人类给不同形态的眉毛赋予一个语义。但是从表观特征上讲,不同眉形只是像素在一起构建的形状不一样而已。因此一系列相似形状的眉毛就共同构成某一种眉形。

图4.1 各种不同含义的眉毛的表观特征

上述例子只是解释了某一种简单的局部图像语义的表观构成。但是并不是所有的语义都有这么简单直接的表观构成。比如图像风格、图像构图、图像的人物故事等。这些语义需要更大范围的表观特征表达,甚至还依赖多个表观特征直接的相互关系。这些深层次的语义挖掘正式深度学习所擅长的(还记得第三章我们介绍的机器学习第一性原理吗?)。

4.2 图像语义的学习和不可控生成

4.2.1 图像生成的理论原理

在图像识别领域,学习图像的语义非常容易想到。对图像打上语义标签,然后利用这些标签指导机器学习模型学习表观特征。但是如果我们的目标是进行图像生成,那么怎么样进行语义对应的表观特征的学习呢?假如所有样本构成一个Y空间,如果我们能够通过编码器学习到其对应的语义空间X的分布。那么重建一个样本就是从P(X)中采样并进行解码就够了,如图4.2所示。

图4.2 图像生成的数学原理

        如此这般,我们就能够对某些图像目标进行编码压缩,并且能够重建了,有些情况下,设置可以进行随机编辑了。再过去图像生成领域,出现了两个优秀的工作,一个是styleGAN,一个是VAE。他们相关的变种我就不再赘述。为了加深大家的理解,我对这两个模型都分别做原理介绍。

4.2.2 styleGAN

        styleGAN是过去几年图像生成领域最成功的模型之一。它巧妙之处在于假设图像风格是在图像编码过程中不同层上的多个高斯分布,并设计一种高斯分布的normalize方法,进行风格编辑。如图4.3所示,左图A代表在语义空间W中采样的多个代表不同风格的高斯分布,通过AdaIN操作(均值方差替代),就可以实现目标图像的风格编辑。右图京剧脸谱实际上是一个动图,可以实现脸谱的连续变化。该图是作者以前做的一个项目的结果。大致做法就是收集大量脸谱,通过训练得到各种脸谱风格的高斯分布W。然后当我们从W空间中连续采用{A}的时候,我们就能够生成连续变化的脸谱。(GAN、VAE都是类似)

  

图4.3 styleGAN的原理示意图

        styleGAN的应用非常广泛,特别适用于做图像编辑。但是作者认为最大的价值是验证了我们对于4.2.1中关于语义的定义。语义是表观特征的分布,并且可以解耦出来的。

4.2.3 VAE

        除了styleGAN以外呢,过去几年科学家还发明了另外一个工作变分自编码器(Variational Auto-Encoder,VAE)。VAE和styleGAN很相似,但是结构更加简单,假设更加激进。如图4.4所示,它将样本空间X编码到一系列高斯分布Z,然后从高斯分布中采样并解码以重建图像。如右图所示,在Z的高斯分布中连续采用,就可以得到0-9的连续变化图像。

   

图4.4 VAE的原理示意图

        那么有同学会问,为什么上述两个工作都要求图像语义空间z是高斯分布式呢?为什么样本空间一定能够压缩编码成高斯分布?实际上作者认为任何分布的假设都是可以的,深度学习的强大之处在于,可以拟合任何编码器函数,将X映射到任何z空间。

4.2.4 不可控生成

        无论是styleGAN还是VAE都有一个致命的缺陷。虽然它们似乎能够学习到解耦的语义空间分布,但是却不知道这个分布上的数值对应什么具体语义。因此随机采样就能得到随机的图像,连续采样就能得到连续的图像。而无法根据需要进行采样。这便是不可控生成缺陷。

4.3 图像的可控生成

        为了达到可控的生成目标,需要利用自然语言或者其他信号对生成的内容进行控制。只有这样,这项技术才有可能进入更多应用领域。图像的可控生成和语言的可控生成完全不一样。

        为了实现用自然语言进行图像生成控制,科学家设计了stable diffusion结构,如图4.5所示。这个模型主要有两部分构成,CLIP语言模块和LDM图像编码模块。CLIP模块负责构建语言概念,LDM模块负责构建视觉概念。中间用cross attention连接,这样一来,就可以建立语言和视觉概念的联系。LDM模块是一种新的图像生成模型(扩散模型),他的数学原理也非常有意思。他讲图像分解成若干个有相关性约束的高斯噪声,利用这组高斯噪声对白噪声图像去噪,就可以恢复图像。但是diffusion model不作为本文的重点。感兴趣的同学可以找我交流,说不定我可以单独写一篇介绍文章。

 

  

图4.5 图像可控生成示意图

        图像生成的另外一个进步是高精度。我在此简单提一下。一副图像有低频信号和高频信号构成。频率越高的信号代表更细节的像素构成,当然它的分布就越复杂。当我们对图建模的时候,这部分喜欢是最难建模的。因此很多方法都无法生成超高清的图像,但是diffusion model却有这种能力。这也是AIGC得以发展的一个原因。

4.4 语言的可控生成

        什么语言的可控生成?当你希望机器人代替人输出文字的时候,你当然希望它完全能够按照你的意图来生成文字,甚至能够根据你的问题来回答,而不是胡说八道(很多传统方法的模型不就是胡说八道,甚至出现对骂的情况)。所以只有语言模型能够达到可控生成,才对应用有价值。

        我们在第二章讨论过什么是自然语言系统,什么是语义,什么是语言模型。并且也讨论过无监督的大语言模型是可以通过transformer算子和大规模语料训练出来的。可是这种预训练模型并不能够进行可控生成。预训练模型我们只是学习到各种语义X的分布P(X)。和图像一样,我们只能够对P(X)进行随机或者连续采样,生成文本。如果需要用控制信号Y进行可控生成,我们还需要将P(X)训练成为P(X|Y)这种条件分布。这一点是Open AI和其他大语言模型最为本质的区别。除Open AI以外,几乎所有得语言大模型公司训练P(X)模型之后,都直接用于各种下游任务,而没有意识到需要将其继续训练成条件概率。

 

#instruction:检查这个句子的拼写和语法错误

#input:他吃完饭离开了餐厅。

#output:这句话中有两个拼写错误。正确的句子应该是:“他吃完饭离开了餐厅。

 

        Open AI采用了有监督微调(Supervised Fine-Tuning SFT)来实现这一目标。SFT微调数据通常包含三大部分:任务描述、任务的输入、任务的答案。下表是SFT数据的典型案例。这种微调数据包含了任务的类型或者范围,同时包含了要处理的文本数据和期望生成的结果。大规模的微调数据集基本上描绘了对大模型的生成的要求Y的分布和生成结果的分布X。经过大规模的SFT训练之后,模型能够有效偏移到P(X|Y)这种条件分布。

 

        现在读者能否思考下为什么AIGC领域会出现prompt工程了吗? 我们知道预训练阶段我们的训练预料多达万亿token,但是SFT数据通常只有千万级别。因此其实Y的采样率是非常低的。这么低的采样率会导致泛化性很差,稍微更改一下问法,可能模型就无法回答,或者答案千差万别了。实际上,为了保障结果是可控的,我们不得不利用规则来约束用户输入的问题是和训练数据的分布尽可能相似的。这就是prompt 工程的本质。

4.5 数据飞轮

        既然理论方法大家都搞懂了,那么为什么大半年过去了,大家还是没有达到去年底chatGPT或者midjourney的水平呢。难道是我们的预训练预料不够?难道是我们的模型不够大?难道是我们的训练方法不行?

        其实作者认为,关键在于openAI和midjourney作为AIGC的首发公司,利用优先者优势,已经形成了数据飞轮了。想象一下,chatGPT和midjourney分别有超过1亿的注册用户,每天有上千万次请求,他们能容易大量的用户请求数据。因此他们对用户的条件输入可以刻画非常精准。反观后来者,还在利用人工制作的方法构建数据,构建1千万sft数据都很难,所以追赶难度可想而知。

标签:可控,模型,语义,生成,能看懂,人人,图像,转载,高斯分布
From: https://www.cnblogs.com/bonelee/p/17722790.html

相关文章

  • 小白也能看懂的插件化DroidPlugin原理(三)-- 如何拦截startActivity方法
    **前言:**在前两篇文章中分别介绍了动态代理、反射机制和Hook机制,如果对这些还不太了解的童鞋建议先去参考一下前两篇文章。经过了前面两篇文章的铺垫,终于可以玩点真刀实弹的了,本篇将会通过Hook掉startActivity方法的一个小例子来介绍如何找出合适的Hook切入点。开始之前我们......
  • 【转载】求根公式(Latex版)
    目录一次方程的求根公式二次方程的求根公式三次方程的求根公式四次方程的求根公式TheQuarticFormula一次方程的求根公式\[x={-b\overa}\]Thelinearformulagivesthesolutionof\(ax+b=0\)forrealnumbers\(a\),\(b\)with\(a\neq0\).二次方程的求根公式\[x......
  • 【转载】Vue Provide / Inject 详细介绍(跨组件通信、响应式变化、版本变化)
    版权声明:本文为CSDN博主「前端不释卷leo」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_41809113/article/details/122071958 一、背景通常,当我们需要从父组件向子组件传递数据时,我们使用props。想象一下这样的结......
  • 响应头:关于文件下载的Content-Disposition和Content-Type(转载)
    Content-Type实体头部用于指示资源的MIME类型,在响应中,Content-Type标头告诉客户端实际返回的内容的类型,指示客户端如何显示附加的文件。  Content-Disposition是MIME协议的扩展,指示回复的内容该以何种形式展示,是以内联的形式(即网页或者页面的一部分,这种方式就与Content-Type......
  • 转载:孟德尔随机化(Mendelian Randomization) 统计功效(power)和样本量计算
    链接:>https://mp.weixin.qq.com/s?__biz=Mzg2MDA2MDQzMQ==&mid=2247484734&idx=1&sn=6c4a5ba21bad0058ead4f0e8d9399c72&chksm=ce2d6b5ef95ae248ae7566d87d8aa4a373ccc33082a10e37773d89a137ac4d350e591844a0bd&scene=21#wechat_redirect......
  • 人人都能学的数据分析体系课(16周完整版+源码+PDF课件)
    点击下载——人人都能学的数据分析体系课(16周完整版+源码+PDF课件)  提取码:nsep 人人都能学的数据分析体系课(16周完整版+源码+PDF课件),数据也称为观测值,是实验、测量、观察、调查等的结果。数据分析中所处理的数据分为定性数据和定量数据。只能归入某一类而不能用数值进行测度的数......
  • 人人都能学的数据分析体系课(16周完整版+源码+PDF课件)
    点击下载——人人都能学的数据分析体系课(16周完整版+源码+PDF课件) 提取码:4vxi人人都能学的数据分析(16周完整版+源码+PDF课件),其中包含Excel从入门到表格分析、从0开始学SQL、数据可视化利器Tableau、Python实现数据分析、Python实现网络爬虫、构建用户画像、预售销售额、调整运......
  • 关于getClass().getClassLoader().getResourceAsStream——转载自https://www.cnblogs
    关于getClass().getClassLoader().getResourceAsStreamInputStreamis=getClass().getClassLoader().getResourceAsStream("helloworld.properties");getClass():取得当前对象所属的Class对象getClassLoader():取得该Class对象的类装载器类装载器负责从Java字符文件将字符流读......
  • 小白也能看懂的插件化DroidPlugin原理(一)-- 动态代理
    前言:插件化在Android开发中的优点不言而喻,也有很多文章介绍插件化的优势,所以在此不再赘述。前一阵子在项目中用到DroidPlugin插件框架,近期准备投入生产环境时出现了一些小问题,所以决心花些时间研究了一下DroidPlugin插件框架的原理,以便再出现问题时也能从容应对。打开源码后发......
  • 转载:Ubuntu 开机自动运行脚本(适用于Ubuntu20.04版本及之后)
    Ubuntu开机自动运行脚本(适用于Ubuntu20.04版本及之后)原文网址:Ubuntu20.04--开机自动运行脚本(命令)--方法/实例_IT利刃出鞘的博客-CSDN博客1.创建rc-local.service文件sudocp/lib/systemd/system/rc-local.service/etc/systemd/system然后修改/etc/systemd/system/rc-l......