人工智能生成文字、图片、声音的方法
- 生成的本质
- 生成的策略
- 文字AR (Autoregressive Generation)
- 图像和视频 NAR(Non-Autoregressive Generation)
- 解决NAR生成品质低的问题
- AR + NAR
生成的本质
文字、图像、声音的生成的本质,就是给模型一个输入,模型把基本的单位(token pixel sample)排列好
- 文字。这部分之前的文章讲过很多次了,生成文字的时候,是把输入切分成token,作为模型的输入,然后输出,然后把输入又作为
- 图片。图片是由像素构成的,每个像素可以有多少个颜色是由每个像素由多少bit 决定。比如 8位色,表示一个像素由256个颜色构成,16位色,表示一个像素由65536个颜色组成。
- 声音。它是由取样点组成的。一秒取样16000个点,就表示取样率为16kHZ,听起来正常的声音取样点都要超过24kHZ以上
生成的策略
文字AR (Autoregressive Generation)
我们讲过很多次了,每次生成输出会作为下一次的输入,然后继续输出,这种方式就是 Autoregressive Generation
图像和视频 NAR(Non-Autoregressive Generation)
图像和视频当然也可用AR的方式生成出来,只不过产生的是像素和采样点,每次接龙的也是像素和采样点,但是当今很少的模型会用AR的方式生成,为什么呢?比如1024*1024的图片,这是100万的像素,这意味着要接龙100万次,而且每次都要顺序的生成。所以图像和视频都是采用NAR(Non-Autoregressive Generation)的方式:
模型虽然运算的总量不会减少,但是它可以平行的计算出所有的基本单位,这样可以大幅加速图像的生成的速度。
你可能会说,那既然NAR这么好,为社么文字生成不用这个呢?因为它也有弊端,因为NAR的生成缺失了输出某部分的关联,它不是基于上一部分的输出做的输出,所以就很有可能出现位置一和位置二生成的信息完全不想关,生成的效果并不好。
同样图像和视频的生成也存在效果不佳的问题,因为你告诉模型画一只狗,也许位置一和位置二都在画狗,但是一个想的哈士奇,一个想的是田园犬,画出来就是四不像了。
解决NAR生成品质低的问题
从上面的论述,我们不难发现,它只所以两次生成的可能不一致,因为两次位置的生成完全没关联,我们可以设置一种关联,用这种关联控制这两次 生成的方向得是一致的,比如这个向量里边告诉这些位置,我要画的是田园犬在公园奔跑,这样要画的方向就是一致的了。这种关联在模型就是一个向量,VAE GAN等都是这种做法,每次除了输入以外还要单独生成一个向量来控制所有位置的输出。
AR + NAR
还有一种生成方法就是先用Autoregressive Generation的方法生成一个精简的版本,再用NAR生成精细的版本,这样就解决了关联和速度的问题。
那怎么生成这个精简版本呢:
第一步就是使用Encoder和Decoder,先是压缩输入图片生成向量,然后这个向量输入Decoder再生成输入的这个图片,这两个压缩前和解压缩后图片生成的越像越好
第二步:
Autoregressive只需要产生压缩的版本就好,Decoder还原成解压缩的版本
视频也是同样的方法,但是这个压缩并没有压缩很大,曾经有人写过论文,1616的图片可以压缩到11,依然可以还原到原图片。但是视频依然很大,于是产生了另外一种方法,那就是多次的生成: