生成式人工智能笔记-AIGC笔记

生成式人工智能笔记-AIGC笔记

十多年前,人工智能还只是一个不被人看好的小众领域,但是现在,它却已经成了街头巷尾的热点谈资,几乎任何事情都可以和人工智能联系在一起。

人工智能包括基础层、技术层和应用层。

基础层是人工智能产业的基础,为人工智能提供数据及算力支撑;

技术层是人工智能产业的核心,主要包括各类模型和算法的研发和升级;

应用层则是人工智能面向特定场景需求而形成的软硬件产品或解决方案。

决策式 AI 和 生成式 AI

人工智能可从不同的维度进行划分。如果按其模型来划分(人工智能是由模型支撑的)可以分为决策式AI和生成式AI。

决策式AI

决策式AI(也被称作判别式AI)学习数据中的条件概率分布,即一个样本归属于特定类别的概率,再对新的场景进行判断、分析和预测。决策式AI有几个主要的应用领域:人脸识别、推荐系统、风控系统、其他智能决策系统、机器人、自动驾驶。

生成式AI

生成式AI则学习数据中的联合概率分布,即数据中多个变量组成的向量的概率分布,对已有的数据进行总结归纳,并在此基础上使用深度学习技术等,创作模仿式、缝合式的内容,相当于自动生成全新的内容。

不管是哪种类型的模型,它的基础逻辑是一致的:AI模型从本质上来说是一个函数,要想找到函数准确的表达式,只靠逻辑是难以推导的,这个函数其实是被训练出来的。

从宏观角度来看,决策式AI是一种用于决策的技术,它利用机器学习、深度学习和计算机视觉等技术来处理专业领域的问题,并帮助企业和组织优化决策。

而生成式AI则是一种用于自动生成新内容的AI技术,它可以使用语言模型、图像模型和深度学习等技术,自动生成新的文本、图片、音频和视频内容。

因此,决策式AI可以说是在对人类的决策过程进行模仿,但生成式AI就聚焦在创作新内容上。

在这里插入图片描述

从大数据到大模型

大数据指的是海量的数据。

在人工智能领域,通过大量的数据来训练模型。拥有海量参数的模型都被称为“大模型

大模型能分析处理海量的数据,在解决问题上取得更好的效果。

生成式AI就是大模型的产物。

目前,“内容”生产经历了四次迭代:

PGC(professional generated content)

PGC(professional generated content),即“专业生产内容”,主要指具备专业背景的内容生产者所创造的内容

UGC(user generated content)

UGC(user generated content),“用户生产内容”,其内容的源头更偏大众化,人人都可作为用户进行内容生产

AIUGC(artificially intelligent UGC)

AIUGC则为人工智能与UGC的结合,人工智能参与到了用户创作内容的过程中

AIGC

与PGC、UGC和AIUGC不同的是,在AIGC的概念中,“无生命的”人工智能成了完全的内容源头,“无生命主体”成了为人类创作内容的生产者。

AIGC就是利用人工智能自动生成内容的生产方式,它可以在生成式AI模型、训练数据等的基础上,生成文本、图片、音频、视频、代码等多样化内容,这种快速的内容生产方式给市场注入了令人兴奋的新鲜血液。

在这里插入图片描述

生成式 AI 和 决策式 AI 聚焦于不同的认知层面

生成式AI还渗透到了3D领域,Magic3D就是GPU(图形处理器)制造商英伟达推出的一款应用,它会先用低分辨率粗略地对事物进行3D建模,然后进阶优化为更高分辨率。OpenAI的Dream Fields更是不需要照片就能生成3D模型,把“无中生有”玩得透彻。

生成式AI通过学习数据中的联合概率分布,对已有的数据进行总结归纳,再创作出新的内容。

ChatGPT的“前世”与Transformer(变换器)模型关系紧密,而Transformer模型诞生于2017年。

2017年,谷歌大脑团队在神经信息处理系统大会发表了一篇名为《注意力是你所需要的全部》(Attention Is All You Need)的论文。这篇论文的作者在文章中第一次提出了一个基于注意力机制的Transformer模型,并且把这个模型首次用在理解人类的语言上,这就是自然语言处理。谷歌大脑团队利用非常多已经公开的语言数据集来训练这个最初的Transformer模型,而这个Transformer模型包括6500万个可调参数。

经过大量的训练后,这个Transformer模型在英语成分句法分析、翻译准确度等多项评分上都在业内达到了第一的水准,世界领先,成为当时最为先进的大型语言模型。

仅几年内,这个模型的影响力就已经渗透到人工智能的各个领域,包括多种形式的自然语言模型,以及预测蛋白质结构的AlphaFold 2模型等。也就是说,它就是后续许多功能强大的AI模型的源头。

在Transformer模型被推出还不足一年的2018年,OpenAI公司有了自己的技术突破,他们发表了论文《用生成式预训练提高模型的语言理解力》(Improving Language Understanding by Generative Pre training),还推出了具备1.17亿个参数的GPT-1模型。GPT-1模型是一个基于Transformer结构的模型,但训练它的数据集更为庞大。

最终训练出的模型GPT-1,在文本分类、问答、文本相似性评估、蕴含语义判定这四个评价维度上,都取得了比基础Transformer模型更好的结果,因此也取代Transformer模型,摇身一变成为新的业内龙头。

接着,GPT-2,GPT-3,GPT-… 不断推出。

在2022年神经信息处理系统大会中,OpenAI公司再次向大家宣布了它的新突破,它又推出了全新的大型语言预训练模型:ChatGPT。GPT-3.5是ChatGPT的前身,也是OpenAI对GPT-3模型进行微调后开发出来的模型,在GPT-3.5诞生后,ChatGPT才横空出世。

AIGC 的底层逻辑

人工智能的发展,技术上最大的功臣就是深度学习。

深度学习的爆发式增长则得益于海量的数据、图形处理器带来的强大算力以及模型的持续改进。

2006年,计算机科学家、认知心理学家杰弗里·辛顿(Geoffrey Hinton)首次提出了“深度信念网络”。与传统的训练方式不同,深度信念网络有一个“预训练”(pre-training)的过程,可以方便地让神经网络中的权值找到一个接近最优解的值,之后再使用“微调”(fine-tuning)来对整个网络进行优化训练。这种分阶段的训练方法大幅度减少了训练深度学习模型的时间。

深度学习的前世今生

机器学习是人工智能的分支,它专门研究计算机如何模拟和实现人类的学习行为。

深度学习是机器学习的一种。

在这里插入图片描述

深度学习的概念最初起源于人工神经网络(artificial neural networks)。

人工神经网络

人工神经网络是一种模仿人类神经网络来进行信息处理的模型,它具有自主学习和自适应的能力。

1943年,数学家皮茨(Pitts)和麦卡洛克(McCulloch)建立了第一个神经网络模型M-P模型,能够进行逻辑运算,为神经网络的发展奠定了基础。

生物神经元一共由四个部分组成:细胞体、树突、轴突和轴突末梢。M-P模型其实是对生物神经元结构的模仿。

在这里插入图片描述

神经元及M-P模型示意图

20世纪80年代,人工智能科学家拉姆梅尔哈特(Rumelhart)、威廉斯(Williams)、辛顿、杨立昆(Yann LeCun)等人发明的多层感知机解决了【对复杂函数的预测】的难题,推动了人工神经网络的进一步发展。

20世纪90年代,诺贝尔奖获得者埃德尔曼(Edelman)提出Darwinism模型并建立了一种神经网络系统理论。他从达尔文的自然选择理论中获得启发,将其与大脑的思维方式联系在了一起,认为“面对未知的未来,成功适应的基本要求是预先存在的多样性”,这与我们现在谈论较多的模型训练和预测方式相契合,对90年代神经网络的发展产生了重大意义。

深度学习

直到2006年,被称为“人工智能教父”的辛顿正式提出了深度学习的概念,认为通过无监督学习和有监督学习相结合的方式可以对现有的模型进行优化。这一观点的提出在人工智能领域引起了很大反响,许多像斯坦福大学这样的著名高校的学者纷纷开始研究深度学习。2006年被称为“深度学习元年”。

2009年,深度学习应用于语音识别领域。

2012年,深度学习模型AlexNet在ImageNet图像识别大赛中拔得头筹,深度学习开始被视为神经网络的代名词。

同样是在这一年,人工智能领域权威学者吴恩达教授开发的深度神经网络将图像识别的错误率从26%降低到了15%,这是人工智能在图像识别领域的一大进步。

2014年,脸书开发的深度学习项目DeepFace在识别人脸方面的准确率达到了97%以上。

2016年,基于深度学习的AlphaGo在围棋比赛中战胜了韩国顶尖棋手李世石,在世界范围内引起轰动,这一事件不但使深度学习受到了认可,人工智能也因此被社会大众熟知。

2017年,深度学习开始在各个领域展开应用,如城市安防、医学影像、金融风控、课堂教学等。

一直到最近的现象级产品ChatGPT,它在不知不觉中已经渗透到我们的生活中。

深度学习的经典模型

深度学习是建立在计算机神经网络理论和机器学习理论上的科学,它使用建立在复杂网络结构上的多处理层,结合非线性转换方法,对复杂数据模型进行抽象,能够很好地识别图像、声音和文本。

深度学习的两种经典模型:CNN 和 RNN

CNN 卷积神经网络

CNN的全称是convolutional neural network,也就是卷积神经网络。

卷积神经网络共分为以下几个层级部分:输入层(input layer)、卷积层(convolution layer)、池化层(pooling layer)、全连接层(fully connected layer)。

在这里插入图片描述

卷积神经网络工作过程示意图

输入层

对图像进行简单处理,如降低图像维度,便于图像识别

卷积层

卷积层的神经元对图像进行各个维度的特征提取。

针对的是图像的局部进行特征提取:如需要识别图像中的小狗,神经元只负责处理狗的耳朵、眼睛等。

卷积层对图像进行不同尺度的特征提取,大大丰富了获取特征的维度,有助于提升最终识别的准确度。

池化

对图像进行压缩降维,减少图像识别需要处理的数据量。

全连接

将前面提取出来的所有图像特征连接组合起来:如将提取到的小狗的头部、身体、腿部等局部特征组合起来,形成完整的包含小狗的特征向量,然后识别出类别。

卷积神经网络的三个特点

1、每个神经元只需要聚焦图像的一小部分,而不是图像的全部,识别难度降低

2、卷积层的神经元可以应用于不同的图像识别任务(如训练好的可以识别小狗的神经元也可以继续识别其他相似物体)

3、图像特征维度降低但保留了图像主要特征,减少了数据量。

所以,卷积神经网络特别适合于图像识别。

在这里插入图片描述

卷积神经网络图像识别过程示意图
RNN 循环神经网络

RNN的全称是recurrent neural network,也就是循环神经网络。对循环神经网络的研究最早出现于20世纪80年代末,由几位神经网络专家提出,该模型经常用于时序信号(如语音)的识别和理解。

循环就是重复的意思,循环神经网络模型在运行时会对同一个序列进行循环重复的操作。序列是被排成一列的对象,序列中的元素相互依赖,排列顺序非常重要,比如时序数据、对话等,一旦顺序错乱,含义和作用都会发生巨大改变。循环神经网络解决了卷积神经网络不能很好地识别连续性事件(一段连续的话、一个语言故事,“小明每次去超市都会买很多苹果,因为他喜欢吃()”,这个问题的答案是很容易推测出“苹果”,但人工神经网络和卷积神经网络却很难联系上下文,给出答案,循环神经网络就是对它们不足之处的弥补)的问题,在深度学习领域发挥着不可替代的作用。

循环神经网络之所以能对连续性事件进行识别,是因为它不仅将当前的输入数据作为网络输入,还将之前感知到的数据一并作为输入。根据记忆的长短,从第一层开始,将激活传递到下一层,以此类推,最后得到输出结果。

一个循环神经网络由输入层、隐藏层和输出层三部分组成。

循环就发生在隐藏层。

隐藏层里一般会设置一个特定的预测函数,当我们向循环神经网络模型输入一个连续性事件后,在隐藏层的这个函数就会进行运算,这个运算结果又可以作为输入进入隐藏层再一次进行运算。如此这般,就形成了一个不断循环的预测,这个预测既与新输入的数据有关,也取决于每一次循环的输入。

在这里插入图片描述

循环神经网络原理示意图
GAN 生成式对抗网络

GAN的全称是generative adversarial networks,即生成式对抗网络,由伊恩·古德费洛(Ian Goodfellow)等人在2014年提出,此后各种花式变体,如CycleGAN、StyleGAN等层出不穷,在“换脸”“换衣”等场景下生成的图片和视频足以以假乱真。2020年,PaddleGAN实现的表情迁移模型能用一张照片生成一段唱歌视频,使“蚂蚁呀嘿”等各种搞笑视频火遍全网。

生成式对抗网络是基于无监督学习方法的一种模型,即通过两个神经网络相互博弈的方式进行学习,这两个神经网络一个是生成网络,另一个是判别网络。

生成网络从潜在空间中随机取样作为输入,生成网络接收噪声向量,再将这个噪声向量转换为虚拟数据,其输出结果需要尽量模仿训练集中的真实样本,然后将虚拟数据发送到判别网络进行分类。

而判别网络的输入则为真实样本和生成网络的输出结果,其工作是将生成网络的输出与真实样本区别开来。两个网络相互对抗、不断调整参数,最终达到生成网络的输出结果与真实样本无二。

在这里插入图片描述

GAN 网络架构示意图
噪声向量

何为噪声?

简单说,如下图,我们要识别图片中的“水”,那么“沙漠”就是噪声。

在这里插入图片描述

再比如一张图片里有猫和狗,我们要识别猫,那么图片中的狗就是噪声。

在深度学习中,训练时往往会在输入数据中加入噪声,以提高模型的鲁棒性和泛化能力。 这称为数据扩充。 通过向输入数据添加噪声,模型被迫学习对输入中的微小变化具有鲁棒性的特征,这可以帮助它在新的、看不见的数据上表现更好。

鲁棒性也称为健壮性,指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性。

GAN生成器Generator的输入是随机噪声,目的是每次生成不同的图片。但如果完全随机,就不知道生成的图像有什么特征,结果就会不可控,因此通常从一个先验的随机分布产生噪声。常用的随机分布:

  • 高斯分布:连续变量中最广泛使用的概率分布;
  • 均匀分布:连续变量x的一种简单分布。

引入随机噪声使得生成的图片具有多样性,比如下图不同的噪声z可以产生不同的数字:

在这里插入图片描述

所以噪声的作用就是,保证生成的图片不同但又在合适区间内(不是完全随机)。即保证结果不同且可控、可靠。

生成式对抗网络的通俗原理

通俗来说,GAN的工作原理类似于这样的场景:

  • 一个男生试图拍出摄影师级别的照片,而一个女生要找出照片的瑕疵。

  • 这个过程是男生先拍出一些照片,然后由女生分辨出男生拍的照片与摄影师级别的照片的区别。

  • 男生再根据反馈改进自己的拍摄技术和方法,拍出一些新的照片,女生再对这些新照片继续提出修改意见。

  • 直到达到均衡状态——女生无法再分辨男生拍的照片与摄影师级别的照片有什么区别。

通过这种方式,GAN能够从多个维度学习到大量无标注数据的特性。以往的模型训练过程,要标注员将输入数据打上标签之后,模型才开始进行学习;

而利用生成网络和判别网络之间的相互对抗,GAN可自发学习输入数据的规律,确保生成结果接近训练集中的真实样本,从而实现无标注数据的学习。

其实,GAN和所有的生成式模型都一样,目标就是拟合训练数据的分布,对于图片生成任务来说,就是拟合训练集图片的像素概率分布。

在这里插入图片描述

GAN模型实现图片的风格迁移

Transformer:从序列到序列 seq2seq

Transformer是“转换器”的意思。这也正是Transformer的核心,也就是它能实现的功能——从序列到序列。但这个从序列到序列,可不是简单地从一个词跳到另一个词,中间要经过很多道“工序”,才能实现想要的效果。

序列(翻译自英文 sequence),指的是文本数据、语音数据、视频数据等一系列具有连续关系的数据。不同于图片数据,不同图片之间往往不具有什么关系,文本、语音和视频这种数据具有连续关系。这些数据在这一时刻的内容,往往与前几个时刻的内容相关,同样也会影响着后续时刻的内容。

在这里插入图片描述

序列到序列的问题示例

序列到序列模型一般是由编码器(encoder)和解码器(decoder)组成的。其工作流程可以简单描述为,在编码器侧对输入序列进行编码,生成一个中间的语义编码向量,然后在解码器侧对这个中间向量进行解码,得到目标输出序列。

以中译英场景为例,编码器侧对应的输入是一段中文序列,解码器侧对应的输出就是翻译出来的英文序列。

在这里插入图片描述

编解码机制结构图

在实际应用过程中,序列到序列模型的输入输出数据可以是不同形式的数据,对应的编码器侧和解码器侧采用的模型结构可以是不同的。

序列到序列模型看似非常完美,但是在实际使用的过程中仍然会遇到一些问题。比如在翻译场景下,如果句子过长,会产生梯度消失的问题。由于解码时使用的是最后一个隐藏层输出的定长向量,那么越靠近末端的单词会被“记忆”得越深刻,而远离末端的单词则会被逐渐稀释掉,最终模型输出的结果也因此不尽如人意。面对这些问题,研究人员也提出了对应的解决方案,比如加入注意力(attention)机制。

Transformer:注意力机制

传统的编码器—解码器架构对序列长度有限制,本质原因是它无法体现对一个句子序列中不同词语的关注程度。在不同的自然语言处理任务中,一个句子中的不同部分是有不同含义和重要性的,比如“我喜欢这本书,因为它讲了很多关于养花的知识”这句话:如果对这句话做情感分析,训练的时候明显应该对“喜欢”这个词语进行更多的关注;而如果基于书的内容进行分类,我们应该更关注“养花”这个词。这就涉及我们接下来要谈的注意力机制,这其实是借鉴了人类的注意力思维方式:人类从直觉出发,能利用有限的注意力,从大量信息中快速获取最有价值的信息。

注意力机制通过计算编码器端的输出结果中每个向量与解码器端的输出结果中每个向量的相关性,得出若干相关性分数,再进行归一化处理将其转化为相关性权重,用来表征输入序列与输出序列各元素之间的相关性。注意力机制训练的过程中,不断调整、优化这个权重向量,最终目标就是要帮助解码器在生成结果时,对于输入序列中每个元素都能有一个合理的相关性权重参考。

自注意力机制是注意力机制的一种变体。它减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。例如这样一句英文:“He thought it was light before he lifted the backpack.”(在举起这个背包之前,他觉得它是轻的。)这里“light”的意思是“灯”还是“轻的”呢?这就需要我们联系上下文来理解。我们在看到“backpack”之后就应该知道,这里的“light”很大概率指的是“轻的”。自注意力机制会计算每个单词与其他所有单词之间的关联,在这句话里,当翻译“light”一词时,“backpack”一词就有较高的相关性权重。

Transformer 模型

Transformer模型在普通的编码器—解码器结构基础上做了升级,它的编码端是由多个编码器串联构成的,而解码端同样由多个解码器构成。

它同时也在输入编码和自注意力方面做了优化,例如采用多头注意力机制、引入位置编码机制等等,能够识别更复杂的语言情况,从而能够处理更为复杂的任务。

在这里插入图片描述

Transformer 网络结构图

在这里插入图片描述

Transformer 编解码器内部结构图

多头注意力(multi-head attention)。简单点说,不同标记相互之间的注意力通过多个注意力头来实现,而多个注意力头针对标记之间的相关性来计算注意力权重)。

如在一个句子中,某个注意力头主要关注上一个单词和下一个单词的关系,而另一个注意力头就会把关注点放在句子中动词和其对应宾语的关系上。

而在实际操作中,这些注意力头的计算都是同步进行的,这样整体反应速度就会加快。这些注意力头的计算完成以后会被拼接在一起,由最终的前馈神经网络层进行处理后输出。

“The monkey ate the banana quickly and it looks hungry.”(猴子快速地吃了香蕉,它看起来很饿。)这句话中的“it”指的是什么?是“banana”还是“monkey”?

在多头注意力机制中,其中一个编码器对单词“it”进行编码时,可能更专注于“monkey”,而另一个编码器的结果可能认为“it”和“banana”之间的关联性更强,这种情况下模型最后输出的结果较大可能会出现偏差。这时候多头注意力机制就发挥了作用,有其他更多编码器注意到“hungry”,通过多个编码结果的加权组合,最终单词“hungry”的出现将导致“it”与“monkey”之间产生更大的关联性,也就最大限度上消除了语义理解上的偏差。

位置编码(positional encoding)机制也是Transformer特有的。在输入的时候,加上位置编码的作用在于计算时不但要知道注意力聚焦在哪个单词上面,还需要知道单词之间的相对位置关系。例如:“She bought a book and a pen.”(她买了书和笔。)这句话中的两个“a”修饰的是什么?是“book”还是“pen”?意思是“一本”还是“一支”?

如果只使用自注意力机制,可能会忽略两个“a”和它们后面名词之间的关系,而只关注“a”和其他单词之间的相关性。引入位置编码就能很好地解决这个问题。通过加入位置编码信息,每个单词都会被加上一个表示它在序列中位置的向量。这样,在计算相关性时,模型不仅能够考虑单词之间的语义相关性,还能够考虑单词之间的位置相关性,也就能够更准确地理解句子中每个单词所指代或修饰的对象。

多头注意力机制关注的是语义相关性,位置编码机制关注的是位置相关性。

通过引入多头注意力机制、位置编码等方式,Transformer有了最大限度理解语义并输出相应回答的能力,这也为后续GPT模型这种大规模预训练模型的出现奠定了基础。

GPT 系列模型

一般的神经网络在进行训练时,先对网络中的参数进行随机初始化,再利用算法不断优化模型参数。

GPT属于典型的“预训练+微调”两阶段模型。

GPT的训练方式是,模型参数不再是随机初始化的,而是使用大量通用数据进行“预训练”,得到一套模型参数;

然后用这套参数对模型进行初始化,再利用少量特定领域的数据进行训练,这个过程即为“微调”。

预训练属于迁移学习的一种。预训练语言模型把自然语言处理带入了一个新的阶段——通过大数据预训练加小数据微调,自然语言处理任务的解决无须再依赖大量的人工调参。

GPT系列的模型结构秉承了不断堆叠Transformer的思想,将Transformer作为特征抽取器,使用超大的训练语料库、超多的模型参数以及超强的计算资源来进行训练,并通过不断提升训练语料的规模和质量,提升网络的参数数量,完成迭代更新。GPT模型的更新迭代也证明了,通过不断提升模型

ChatGPT的训练分为三个步骤。

第一步,通过人工标注的方式生成微调模型。标注团队首先准备一定数量的提示词样本,一部分由标注团队自行准备,另一部分来自OpenAI现有的数据积累。

然后,他们对这些样本进行了标注,其实就是人工对这些提示词输出了对应的答复,从而构成了“提示词—答复对”这样的数据集。最后用这些数据集来微调GPT-3.5,得到一个微调模型。

在这里插入图片描述

ChatGPT 模型训练步骤

第二步,训练一个可以评价答复满意度的奖励模型。同样准备一个提示词样本集,让第一步得到的模型来对其进行答复。对于每个提示词,要求模型输出多个答复。标注团队需要做的工作,就是将每个提示词的答复进行排序,这其中隐含了人类对模型输出效果的预期,以此形成了新的标注数据集,最终用来训练奖励模型。通过这个奖励模型,可以对模型的答复进行打分,也就为模型的答复提供了评价标准。

第三步,利用第二步训练好的奖励模型,通过强化学习算法来优化答复策略。这里采用的是一种策略优化模型,它会根据正在采取的行动和收到的奖励不断调整当前策略。具体来说,首先准备一个提示词样本集,对其中的提示词进行答复,然后利用第二步训练好的奖励模型去对该答复进行打分,根据打分结果调整答复策略。在此过程中,人工已经不再参与,而是利用“AI训练AI”的方式进行策略的更新。最终重复这个过程多次之后,就能得到一个答复质量更好的策略。

Diffusion 模型

促进AIGC领域快速发展的另一大功臣当然要数AI绘画技术的进步。尤其是2022年4月OpenAI发布的一款强大的AI绘画工具——DALL·E2。运用该工具,只需输入简短的文字,就可以生成全新的图像。

而它背后的技术核心就是——Diffusion模型。

生成对抗网络模型的缺点

在Diffusion模型出现之前,以GAN(生成对抗网络)模型为基础的图像生成模型还一直是研究的主流,但是GAN存在一些已知的缺陷。它可能不能学习完整的概率分布,比如用各种动物的图像训练GAN,它可能仅生成狗的图像;另外,还存在难训练等阻碍其广泛使用的一些技术问题。

Diffusion 模型的优点

而Diffusion模型利用最新的训练技术,跨越了GAN模型调优的阶段,可以直接用来做特定领域的任务,能实现令人震惊的生成效果,这也使得Diffusion模型领域的研究呈现出百花齐放的状态。

Diffusion 模型的本质与原理

Diffusion在中文中被译为“扩散”。扩散是一种物理学现象,指的是一种基于分子热运动的输运现象,是分子通过布朗运动从高浓度区域向低浓度区域转移的过程。它是趋向于热平衡态的过程,也是熵驱动的过程。

比如,

一滴墨水扩散到整个盛水的容器中。在这个扩散过程中,尝试计算容器的某个小体积内墨水分子的分布情况,是非常困难的,因为这种分布很复杂,也很难取样。但是,墨水最终会完全扩散到水中,这时候就可以直接用数学表达式来描述这种均匀且简单的分子概率分布。

统计热力学可以描述扩散过程中每一时刻的概率分布,而且每一时刻都是可逆的,只要步间距足够小,就可以从简单分布重新回到复杂分布。

Diffusion模型亦即扩散模型,最早是2015年在《基于非平衡热力学的深度无监督学习》(Deep Unsupervised Learning using Nonequilibrium Thermodynamics)论文中提出的。作者受统计热力学的启发,开发了一种新的生成模型。想法其实很简单:首先向训练数据集中的图像不断加入噪声,使之最终变成一张模糊的图像,这个过程就类似于向水中加入一滴墨水,墨水扩散,水变成淡蓝色,然后教模型学习如何逆转这一过程,将噪声转化为图像。

扩散模型的算法实现分为两个过程:正向扩散过程和逆向扩散过程。正向扩散过程可以描述为逐渐将高斯噪声应用于图像,直到图像变得完全无法识别。

比如 通过正向扩散过程,图中的风景变得模糊起来,直到最后一整张图变成马赛克。这个过程看上去充满随机性,但实际上是存在特定意义的,整个过程可以表述为正向扩散过程的马尔可夫链——描述从一个状态到另一个状态的转换的随机过程。而这个随机过程中的每一个状态概率分布,只能由其前一个状态决定,与其他状态无关。对应地,我们可以把整个正向扩散过程的每一张图片定义为一个状态,那每一张图片是什么样子只跟它的上一张图片有关,并且遵循一定的概率分布。如此我们首先得到了一个定义明确的正向过程。

在这里插入图片描述

扩散模型的扩散过程

那如何应用这一过程将马赛克图像恢复到原始图像?其中的问题在于,从正向过程推导出明确的逆向过程是非常困难的。这一点根据实际情况也可以想象得到,一张多次加入随机噪声的非常模糊的图像,几乎是不可能完全恢复成原始图像的。

于是扩散模型采用的是一种近似的方式,即通过神经网络学习的方式近似计算逆向扩散过程的概率分布。

应用这种方法之后,即便是一张多次加入噪声后变得完全模糊的图像,也能被恢复成一张接近原始模样的图像,而且随着模型的迭代学习,最终生成的结果也将更符合要求。

通过正向扩散和逆向扩散两个过程,扩散模型就能实现以一张原始图像为基础,生成一张全新的图像。这大大降低了模型训练过程中数据处理的难度,相当于用一个新的数学范式,从另一个角度定义“生成”过程。和GAN模型相比,扩散模型只需要训练“生成器”,训练目标函数简单,而且不需要训练别的网络,实现了易用性的极大增强。

扩散模型在提出之初并没有受到很大的关注。

这一方面是因为当时GAN模型大行其道,研究人员的研究重心依然围绕在GAN基础上的优化;

另一方面是因为最开始的扩散模型生成的结果不是很理想,而且由于扩散过程是一个马尔可夫链,其缺点就是需要比较多的扩散步数才可以获得比较好的效果,这导致了样本生成很慢。

正如前述论文作者回忆时称的,“当时,这个模型并不令人惊喜”。

殊不知,更现代化的图像生成技术已悄悄萌芽,这一新的生成模型迸发出了令人意想不到的生命力,真正地登上了历史舞台,生成式图像应用也进入了“文本到图像”的摩登时代。

Stable Diffusion

Stable Diffusion是由Stability AI主导开发的文本生成图像模型,其交互简单,生成速度快,在极大地降低了使用门槛的同时还保持了令人惊讶的生成效果,从而掀起了另一股AI绘画的创作热潮。

在这里插入图片描述

Stable Diffusion的工作原理就是通过文本编码器将语义转化为计算机可以处理的语言,也就是将文本编码成计算机能理解的数学表示,之后将这些编码后的结果通过图像生成器转换为符合语义要求的图像。

首先来看文本编码器部分。计算机本身无法理解人类语言,需要使用一种文本编码的技术,即CLIP模型。CLIP模型是由OpenAI开源的深度学习领域的一个多模态模型。CLIP全称为contrastive language-image pre-training,即基于对比学习的大规模图文预训练模型。CLIP模型不仅有着语义理解的功能,还有将文本信息和图像信息结合,并通过注意力机制进行耦合的功能。CLIP模型在Stable Diffusion是怎么被训练并在文图转换中发挥作用的呢?

要训练一个能够处理人类语言并将其转化成计算机视觉语言的CLIP模型,必须先有一个结合人类语言和计算机视觉的数据集。实际上,CLIP模型就是在从网上收集到的4亿张图片和它们对应的文字描述基础上训练出来的。

CLIP模型由一个图像编码器和一个文本编码器构成。CLIP模型的训练过程如下图所示。首先从积累的数据集中随机抽取出一张图片和一段文字,在这里,文字和图片不一定是匹配的。抽取出的图片和文字会通过图像编码器和文本编码器被编码成两个向量。CLIP模型的任务就是确保图文匹配,并在此基础上进行训练,最终得到两个编码器各自最优的参数。

在这里插入图片描述

CLIP 训练图片及相关描述示例

在这里插入图片描述

CLIP 模型训练过程

比如一张狗的图片和“一只狗”的文字,训练好的CLIP模型就会将这两个内容通过图像编码器和文本编码器生成相似的编码结果,确保文字和图片是匹配的,这两者之间也就有了可以相互转化的基础。同时通过CLIP模型,人类语言和计算机视觉就有了统一的数学表示,这也就是文字生成图像的秘密所在。可以说,CLIP模型在Stable Diffusion的文本编码器部分发挥了最核心的作用。

图像生成器部分由两个阶段构成,一个是图像信息生成阶段,一个是图像解码阶段。

在图像信息生成阶段,扩散模型首先利用随机数生成函数生成一个随机噪声,之后与文本编码器部分利用CLIP模型生成的编码信息结合,生成一个包含噪声的语义编码信息。

然后这个语义编码信息又生成较低维度的图像信息,也就是所谓的隐空间信息(information of latent space),代表着这个图像存在着隐变量。这也是Stable Diffusion较之前扩散模型在处理速度和资源利用上更胜一筹的原因。

一般的扩散模型在这个阶段都是直接生成图像,所以生成的信息更多,处理难度也更大。但是Stable Diffusion先生成隐变量,所以需要处理的信息更少,负荷也更小。

从技术上来说,Stable Diffusion是怎么做到的呢?其实是由一个深度学习分割网络(Unet)和一个调度算法共同完成的。调度算法控制生成的进度,Unet就具体去一步一步地执行生成的过程。在这个过程中,整个Unet的生成迭代过程要重复50~100次,隐变量的质量也在这个迭代的过程中变得更好。

图像信息生成之后就到了图像解码阶段。图像解码过程实际就是接过图像信息的隐变量,将其升维放大,还原成一张完整的图片。图像解码过程也是我们真正能获得一张图片的最终过程。由于扩散过程是一步一步迭代去噪的,每一步都向隐变量中注入语义信息,不断重复直到去噪完成。在图像解码过程中通过Unet的生成迭代,图片一步一步地成为我们想要的样子。

在这里插入图片描述

总结下就是:

Stable Diffusion首先通过CLIP模型对输入提示词进行语义理解,将其转换成与图像编码接近的编码信息,在后续模块看来,一段文字已经变成一张相似语义的图片了;然后在图像生成器模块中,完成完整的扩散、去噪、图像生成过程,生成一张符合提示词要求的图片。最终,通过文本编码器和图像生成器的共同作用,“字”变成“画”、“文字变图片”这种看似神奇的事就发生了。

AGI

近年来,人工智能解决方案在自然语言处理、视觉识别,文本、图片和视频生成等关键领域取得了令人难以置信的进步。而现在,人工智能正试图在匹配人类智能方面取得巨大飞跃,从只能适配特定领域的“弱人工智能”,向着更具通用性也可以说更强大的人工智能——AGI(artificial general intelligence,通用人工智能)前进。AGI无疑会成为下一个迅速发展的方向。

AGI也可称为“强人工智能”(strong AI),指的是具备与人类同等智慧或超越人类智慧的人工智能,能表现出正常人类的所有智能行为。相较而言,我们现在和过去的所有人工智能都还属于“弱人工智能”或“窄人工智能”,虽然针对某一特定问题的解决能力可以很强,甚至超越人类,但很难解决其他问题。比如,我们教会机器识别人脸,但这一能力以及习得这一能力的过程和基本方法,对帮助它控制身体平衡和导航没什么帮助。

未来,人工智能若要达到AGI的水平,还需具备更加强大的能力,例如:存在不确定性因素时进行推理和制定决策的能力;知识表示的能力,包括常识性知识的表示能力;规划、学习以及使用自然语言进行沟通的能力;将上述能力整合起来实现既定目标的能力。

AGI将会是人工智能研究领域的下一个重要飞跃。

AGI 未来的研究方向

第一,跨模态感知。

我们将平时接触到的每一个信息来源域称为一个模态,这些来源可以是文字、声音、图像、味觉、触觉等等。

而当前绝大部分的人工智能系统只能单独运用其中的一项作为传感器来感知世界,对于不同的模态,需要设计不同的专有模型。

各种模型之间无法真正打通是走向AGI的一大痛点。因此,研究如何让人工智能系统实现跨模态感知非常关键。

第二,多任务协作。

人类能够同时处理多个任务,并在不同任务之间进行协调和转换。当人们面对机器人时,一句简单的吩咐,比如“请帮我热一下午餐”“请帮我把遥控器拿过来”等等,这些指令听上去简单,执行时却包含了理解指令、分解任务、规划路线、识别物体等一系列动作,针对每一个细分的动作都有专门的系统或者模型的设计。这就要求机器人有多任务协作的能力。因此,多任务协作是AGI最重要的研究方向之一。让“通用性”体现为不仅能够同时完成多种任务,还能够快速适应与其训练情况不同的新任务。

第三,自我学习和适应。

人类具有学习和适应能力,能够通过不断的学习和经验积累来提高自己的能力。因此,研究如何让人工智能系统具有自我学习和适应能力也是实现AGI的必要步骤。

其中主要包括增量学习、迁移学习和领域自适应三个方向。

增量学习就像人每天不断学习和接收新的知识,并且对已经学习到的知识不会遗忘,增量学习是指一个学习系统能不断地从新样本中学习新的知识,并能保存大部分以前已经学习到的知识,它解决的是深度学习中“灾难性遗忘”的问题。

迁移学习是人类的一种很常见的能力,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习弹钢琴。在机器学习中,我们可以把为任务A开发的模型作为初始点,重新使用在为任务B开发模型的过程中,即通过从已学习的相关任务中转移知识来改进学习的新任务。迁移学习的核心是找到并合理利用源领域和目标领域之间的相似性。

领域自适应可以看成迁移学习的一种,旨在利用源领域中标注好的数据,学习一个精确的模型,运用到无标注或只有少量标注的目标领域中。它要解决的核心问题是源领域和目标领域数据的联合概率分布不匹配。

第四,情感理解。

能够理解并表达情感是人类最重要的特征,它在交流协作中甚至常常影响事件的下一步走向。让人工智能系统理解情感,包括情感表达、情感分析和情感生成等,是实现AGI的一个关键方向。

第五,超级计算能力。

实现AGI需要庞大的计算资源和超级计算能力。

AIGC 的优势与瓶颈

优势

以ChatGPT为代表的AIGC应用目前已深度参与到企业的业务流程改造工作中,将文本、图片、视频、代码等内容的自动化生成能力,与原有的企业管理系统集成与融合,能够精简和优化原本复杂的业务流程,大幅提升组织的业务运行效率。

AIGC对业务流程的影响无疑是积极的,无论将AIGC用于内容撰写、智能客服、日程管理,还是用于市场营销、销售、财务、人力等业务领域,它都能够不同程度地精简或优化业务流程,缩短业务流程周期,提高业务流程效率,最终对企业和组织起到降本增效的作用。

瓶颈

1、内容准确率不高、可信性不强、文本直接拼凑、没有逻辑性等

2、AIGC的运行需要庞大的算力支持,技术的发展也加剧着对算力的需求,这势必产生巨大的成本,甚至需要探索计算方式的变革。

3、AIGC的发展和应用也可能会造成人员失业问题,取代部分蓝领和白领的工作,由此带来社会大范围的焦虑和恐慌。数据安全与隐私保护、著作权争议等问题也是AIGC进一步发展的瓶颈。

4、AIGC的生成能力来自数据和模型,而数据来源本身就会引起隐忧。AIGC的发展同样需要面对和解决数据问题(数据传输的安全、数据保护的安全等)。

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

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

相关文章

WebRTC AEC回声消除算法拆解

WebRTC AEC算法流程分析——时延估计(一) 其实,网上有很多类似资料,各个大厂研发不同应用场景设备的音频工程师基本都对其进行了拆解,有些闪烁其词,有些却很深奥,笔者随着对WebRTC了解的深入&a…

scripty妙用

在monorepo项目中,随着子模块增多, 每个子项目都需要配置各自的package.json,并且大同小异,为了进一步提高配置效率,引入了scripty,自己写脚本,直接就可以用哦 1、安装 npm install scripty --save-dev 2…

实现安装“自由化”!在Windows 11中如何绕过“您尝试安装的应用程序未通过微软验证”

这篇文章描述了如果你不能安装应用程序,而是当你在Windows 11中看到消息“您尝试安装的应用程序未通过微软验证”时该怎么办。完成这些步骤将取消你安装的应用程序必须经过Microsoft验证的要求。 使用设置应用程序 “设置”应用程序提供了绕过此警告消息的最简单方法,以便你…

基于JavaWeb+SSM+Vue马拉松报名系统微信小程序的设计和实现

基于JavaWebSSMVue马拉松报名系统微信小程序的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.…

记录 | vscode设置自动换行

右上菜单栏 -> 查看 -> 打开自动换行 或者还有种方式,如下, 左下角小齿轮,点击设置 然后输入 Editor: Word Wrap ,把开关打开为 on

微信小程序 长按录音+录制视频

<view class"bigCircle" bindtouchstart"start" bindtouchend"stop"><view class"smallCircle {{startVedio?onVedio:}}"><text>{{startVedio?正在录音:长按录音}}</text></view> </view> <…

AWTK 串口屏开发(1) - Hello World

1. 功能 这个例子很简单&#xff0c;制作一个调节温度的界面。在这里例子中&#xff0c;模型&#xff08;也就是数据&#xff09;里只有一个温度变量&#xff1a; 变量名数据类型功能说明温度整数温度。范围 (0-100) 摄氏度 2. 创建项目 从模板创建项目&#xff0c;将 hmi/…

adb命令学习记录

1、 adb ( android debug bridge)安卓调试桥&#xff0c;用于完成电脑和手机之间的通信控制。 xcode来完成对于ios设备的操控&#xff0c;前提是有个mac电脑。 安卓系统是基于linux内核来进行开发的。 2、adb的安装: 本身 adb是 android SDK 其中自带的工具&#xff0c;用于完…

【无标题】从0到1 搭建一个vue3+Django项目

目录 一、后端项目python django二、前端项目vitevue3三、后端配置3.1 将路由指向app3.2 app下创建urls.py&#xff0c; 写入路由3.3 views写入test函数3.4 启动服务&#xff0c;访问路由 四、前端配置4.1 安装一些工具库及创建文件4.1.1 安装需要用的三方库4.1.2 创建文件 4.2…

尝试通过AI模型进行简单的编码

一、前言 最近尝试通过AI来编程&#xff0c;总体感觉还是能处理写简单的问题&#xff0c;复杂的问题目前还是无法解决。主要的痛点还是数据噪音&#xff0c;就是AI永远不会承认它不会&#xff0c;它会给你的一个错误的信息&#xff0c;它也不会告诉你你的问题它暂时无法完整正…

JUC并发编程03——LockSupport与线程中断

一.线程中断机制 假设从网络下载一个100M的文件&#xff0c;如果网速很慢&#xff0c;用户等得不耐烦&#xff0c;就可能在下载过程中点“取消”&#xff0c;这时&#xff0c;程序就需要中断下载线程的执行。 1.1如何停止中断运行中的线程&#xff1f; 通过一个volatile变量…

智能优化算法应用:基于郊狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于郊狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于郊狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.郊狼算法4.实验参数设定5.算法结果6.参考文献7.MA…

ES6原生音乐播放器(有接口)

视频展示 ES6音乐播放器 项目介绍 GutHub地址&#xff1a;GitHub - baozixiangqianchong/ES6_MusicPlayer: 音乐播放器 ES6_MusicPlayer 是基于JavaScriptES6Ajax等通过原生构建的项目。能够充分锻炼JS能力。 本项目有主页、详情页、歌单页面三部分组成 ├── assets&…

Visual Studio 2022+Python3.11实现C++调用python接口

大家好&#xff01;我是编码小哥&#xff0c;欢迎关注&#xff0c;持续分享更多实用的编程经验和开发技巧&#xff0c;共同进步。 查了一些资料&#xff0c;不是报这个错&#xff0c;就是报哪个错&#xff0c;没有找到和我安装的环境的一致的案例&#xff0c;于是将自己的摸索分…

HHDESK右键管理简介

在HHDESK管理文件&#xff0c;除了基本的打开、删除、复制、粘贴、重命名外&#xff0c;还有多种便捷编辑方式。 可以分别以下列模式打开文档&#xff1a; 文本模式即是以文本编辑器打开文档。 1 二进制模式 可进行二进制编辑。 2 JSON模式 可对JSON文件进行直观的解析…

用户登录权限

文章目录 [TOC](文章目录) 前言一、鉴权二、 Cookie与session1.HTTP无状态2.cookie的重要属性3.cookie 和 session 的生命周期3.1 cookie 生命周期影响因素3.2 session 生命周期影响因素 4.cookie 和 session 的区别5.工作原理3 用户登录Node.js和Express验证session 三、JSON …

LinuxBasicsForHackers笔记 -- 管理用户环境变量

查看和修改环境变量 env – 您可以通过从任何目录在终端中输入 env 来查看所有默认环境变量。环境变量的名称始终为大写&#xff0c;如 HOME、PATH、SHELL 等。 查看所有环境变量 set – 查看所有环境变量&#xff0c;包括 shell 变量、局部变量和 shell 函数&#xff08;例…

记一次测试环境git翻车经历

本来想拉一个功能分支进行新的功能开发&#xff0c;合并代码发现没有冲突居然有文件被修改了&#xff0c;贸然选择最近的一次回滚提交&#xff0c;没想到不假思索的push -f 导致一部分dev主干的代码不见了。 事故记录 开发分支origin/dev&#xff0c;功能分支file 合并之后发…

UE Websocket笔记

参考链接 [UE4 C入门到进阶]12.Websocket网络通信 - 哔哩哔哩 包含怎么用Nodejs 写测试服务器 UE4_使用WebSocket和Json&#xff08;上&#xff09; - 知乎 包含Python写测试服务器 UE4_使用WebSocket和Json&#xff08;下&#xff09; - 知乎 示例代码 xxx.Build.cs"W…

带有 RaspiCam 的 Raspberry Pi 监控和延时摄影摄像机

一、说明 一段时间以来&#xff0c;我一直想构建一个运动激活且具有延时功能的树莓派相机&#xff0c;但从未真正找到我喜欢的案例。我在thingiverse上找到了这个适合树莓派和相机的好案例。它是为特定的鱼眼相机设计的&#xff0c;但从模型来看&#xff0c;我拥有的廉价中国鱼…