54 CHEN

参透AI

在chatgpt流行之前就想把底层的东西好好研究一遍,正好借此机会,保持长期更新,本文会涉及的内容应该会有:非常基础的一系列知识,从监督和非监督学习开始,到浅层神经网络,再到损失函数,梯度下降,如何衡量网络,正则化,卷积,Residual networks,transformers…强化学习,等等,所以要长期更新。

机器学习三个分类

强化学习,监督学习,非监督学习。

万能近似理论

Universal Approximation Theorem

如果一个只有一个隐藏层的浅层网络有足够多的单元的话,一样可以逼近任意的连续函数。

浅层网络的ReLU和线性区间的关系

在这种情况下,有N个ReLU,就可以造出来N+1个线性区间.

深度网络替代浅层网络的原因

同样的隐藏单元,深度网络可以代表更多得多的线性区间。

同样的隐藏单元,深度网络可以更快地train。

同样的隐藏单元,深度网络可以用更少的数据得到相同的准确性。

对数函数作用特点

在与原函数相同的x(或输入)值的情况下,仍能达到最大值(但不一定是原来的值)。

softmax函数

给任意输入的值得到一个从0到1的像概率分布一样的结果。

梯度下降

可能会卡在局部最小值,但这在高维环境中似乎并不是个大问题。

Nesterov动量

Nesterov动量是简单动量思想的一个变种,其中动量步骤是在梯度计算之前进行的。

反向传播算法 前向传导

为了计算weights的导数,我们需要计算和存储隐藏层的activations。这被称为前向传递,因为它涉及到按顺序运行网络方程。算到最后就能知道loss是多少了。

反向传播算法 反向传导

向后传递首先计算网络末端的导数,然后向后工作以利用这些之前计算好的冗余。

梯度爆炸和梯度消失

如果我们初始化的值较大,梯度的大小在我们通过网络后迅速增加。如果我们初始化的值较小,那么幅度就会下降。这些问题分别被称为梯度爆炸和梯度消失问题。

噪声,偏差,方差

这是针对数据的,训练数组和测试数据相对比,经常可以得出结论是因为这三个的原因导致模型效果不好。

噪声先天存在,啥也不能做。

偏差是指模型不够灵活,比如说拿3个ReLU来表达正弦函数,这肯定是有缺陷的,这可以通过提高网络的复杂度来改善。

方差是指模型收敛的结果不太足够拟合数据,并且由于是随机学习算法,每次训练的模型都会有不同的方差,这可以通过增加训练数据量级来提升。

偏差方差权衡

并不是一直增加模型的复杂性,偏差就会一直变小,过于复杂的模型数据不足会导致容易过拟合。

存在一个中间状态,模型的容量和数据量在这个点刚好是最小偏差,方差还不变大。

双重下降

在存在噪声的数据集中,随着增加模型的复杂度(参数数量),基本都会出现两次误差下降的情况,目前原因尚不明确。

三种数据作用

训练数据(用于学习模型参数)、验证数据(用于选择超参数)和测试数据(用于估计最终性能)。

正则化

正则化是指为了减少训练集和测试集的性能差距的一系列方法。严格讲是给损失函数加东西,然后再选参数。 提高泛化能力的一系列办法。

初始化

权重为0的网络代表着都给裁减了。权重太大会出现梯度爆炸,得到NaN值。权重太小会出现梯度消失,训练就无法正常停止。

Loss规律

当测试数据的loss在一定轮数内下降到一个最小值后,逐渐上升的情况通常被认为是模型出现了过拟合现象。

隐式正则

在梯度下降和随机梯度下降算法中,都会对模型参数进行更新,并在更新过程中通过学习率等超参数进行调整。这个调整过程本身就是一种正则化,可以防止模型在过拟合时发生震荡,从而使模型更加平滑。此外,由于随机梯度下降算法采用随机采样,因此每次更新的参数是不同的,也可以视为一种正则化,从而使模型更具泛化能力。

Early stopping and L2

Early stopping和L2正则都试图避免过拟和。Early stopping通过监测训练性能,满足条件就提前结束训练。L2通过在损失函数中加入模型权重的平方和作为正则化项从而避免过度拟合。

集成学习

把一组模型一起计算之后,按照不同的方法得到一个结果的办法。比如说算平均值。

Dropout

这个方法随机将一定的隐藏单元权重置为0,这使得部分单元失效,这可让整个过程不会太过于依赖某一个单独的单元,从而得到避免过拟合的效果。是一种正则化办法。每个mini-batch都要随机一次。可以视作一种对多个网络的隐式集成。

添加噪音

可在三个地方加:输入数据,权重,标签。 每个mini batch都做不同的随机,这导致了不会倾向任何一个点,从而避免了过拟合。

迁移学习

当训练数据不足时,借用已经训练好的模型进行微调后得到较好的结果。 前后两个任务应该具备一定的关联性,将训练好的模型去掉输出层,加上新的输出层或者多层,再一次只对新加的层进行训练,或者直接整个模型进行微调。 迁移学习的概念来源于大多数的参数已经被第一个模型初始化好了,更容易得到一个不错的结果。

多任务学习

训练出来的模型是为了同一时间多个目的输出。比如说,同时预估segment和depth。因为每个单独的任务带来了更多的相关性数据,对每个任务的性能都会有提升。

自监督学习

在有一堆没有打标签的数据情况下很实用。 自监督学习有两个系列的方法:生成式和对比式。 生成式的例子:一堆文章,随机去掉一些词,训练模型识别缺少的内容。ChatGPT就是这么干的,它的词量号称有170T个。 对比式的例子:一张图片,通过变形得到第二张,训练模型识别哪一张是原来的。

数据增强

在数据集不足的时候,通过人为办法增加数据的办法。比如说对同一个图片进行旋转、翻转、模糊等等,标签还是原来的。

CNN输入224原理

经常出现图片进行分类的情况,用CNN的时候,把图片搞成224*224,原因是在256*256的图片中进行剪裁小图的办法。 因为8*32=256,要进行统一大小的剪裁的话,7*32是一个不错的选择。意味着长和宽都可以让出来一个32,剩下的其实就是224。 再在让出来的长和宽都是32的区间里,比如说左上角,选定左上角坐标落在这个区间,就可以产生大约1000(32*32)个244*244的新图出来了。

不变性与等价性

f[t[x]] = f[x] 这是不变性,经过转换的图片还能和原来图片得到相同的结果。 f[t[x]] = t[f[x]] 这是等价性,先转图再计算还是先计算再转图都能得到相同的结果。 卷积的目的就是为了达到这两个属性。卷积操作可以用于提取图像中的特征,并且具有平移不变性。 卷积神经网络中的池化操作可以提高特征的等价性,使得网络可以对不同的图像进行分类

卷积

卷积过程中有三个参数:大小,步长,间隔(kernel size, stride, dilation)。 kernel size决定一次卷几个元素。stride决定每次和上一次卷的时候相比要跳过几个元素。dilation决定单次卷的时候要跳过几个元素选一个。边界上的元素不够卷的时候,就用zero padding进行补0操作。也有办法是放弃边界,但会减小范围。

通道

用多个核并行进行卷积,可以得到一组结果,这样的结果被叫做通道。 卷积网络中越往后的层,其单独元素的感知场越大(能代表更大范围的内容。)

2D卷积

2D情况下,kernel变成k*k。 如果没有做0补齐的情况,就是valid卷积,会丢一些边缘。 如果针对的是2D的RGB图片,则需要k*k*3的卷积核,因为RGB存在3层channel。

下采样和pooling

下采样是为了将一个2D图象的数据从大变小。 有三种办法:第一种是取子集,直接取每个区域的固定位置的值组成新的数组。 第二种是求每个区域里的最大值,也叫最大池化。 第三种是求每个区域里的平均值,也叫平均池化。

上采样

与下采样相反的操作。 可以直接在相关的区域复制元素,直接就能扩大。 还有比较常用的办法就是在其中缺少的元素进行双线性插值。

变形卷积

通过卷积,一样可以实现上采样下采样,从而得到扩大和缩小图片的效果。也叫逆卷积。只要stride变大即可。 无所谓卷积形式好,还是前面的办法好,只是个人偏好。

1*1卷积

1*1的卷积核看起来没什么用,实际可用于多通道数据不经过池化就改变通道数量。 结合偏置和激活函数,它相当于在每个位置的通道上运行相同的全连接网络。

AlexNet

2012年的AlexNet是第一个在ImageNet数据集通过卷积神经网络得到良好表现的模型。 有8个隐藏层,前5个是卷积,后3个是全连接。 16.4% top-5 error,38.1% top-1 error。 另一个VGG,将AlexNext增加了卷积的复杂度,但实际基本结构不变,成绩达到了6.8% top-5 error,23.7% top-1。 VGG的隐藏层到了18个。 相比之下,AlexNet有60m个参数,而VGG有144m个参数。

YOLO

目标检测典型模型。 YOLO的论文是2016年发的。其网络前半部分与VGG相似,最终的卷积层是7x7x1024。7x7的位置里,每个位置都进行画框操作,每个框大小不一还有置信值。 网络运行后,用heuristic算法进行选框操作,删除掉低置信值的框,最后就会框出来最终结果。

语义分割

将前面的框选扩充到每个像索,就可以得到语义分割的结果。 最近的语义分割的网络,前半段是基于VGG的,后面再对接了一个相当于VGG的镜像。 又叫编码器-解码器结构网络。

残差网络

由AlexNet的8层到VGG的18层,性能越来越好,但是再加就不行了。 原因还没搞清楚,但是有一种原因,由于顺序的处理导致了梯度处理到最初始层的时候,可能会丢失信息不受控制了。 所以在此类网络时,多条捷径被提供在各层之间,为的就是将信息直接建立传递的可能性。 残差网络不会有梯度消失的问题,但也有可能出现梯度爆炸。通过下面提到的批量归一,可以控制梯度爆炸。

MaxPooling2D

前面提到的最大池化,当size=(2,2)和strides=(2,2)时,其宽度和高度都减半,通道数量保持不变。

1x1卷积

可以计算所有channel的权重之和。

语义分割

对图片的每个像索进行打标签。需要一个后处理阶段,将具有相同标签的像素合并成区域。通常使用某种形式的编码器-解码器网络。

VGG

与从AlexNet到VGG的规模增加所取得的改进相反,使用更大的VGG版本似乎并没有在ImageNet上产生更好的准确性。

Grad-CAM

可以用来对每层网络怎么看一个分类segment的实际情况生成热点图,是用来解释深层网络图片项目的好办法。 相似的工具还有imageLIME.

残差块

残差块(residual block)是残差网络(ResNet)中的基本构建单元,用于解决深度神经网络中梯度消失和梯度爆炸的问题。 残差块中包含两个卷积层和一个跳跃连接(shortcut connection)。跳跃连接将输入的特征图直接加到卷积层的输出中,形成了残差连接。残差块的设计可以使得网络更深,同时避免梯度消失的问题。 总体上,残差块的设计都遵循着对输入进行一定程度的变换后再加上原始输入的基本原则。

残差网络的加法函数中的操作顺序

加法函数指残差网络在跳跃连接中的操作。 一般来讲如果线性变形放到ReLU前,这样加上去的只相当于是正量,因为ReLU会将负量变0。 使用相反的顺序,可以添加正数和负数。但是,我们必须在网络开头添加一个线性变换,以防输入全为负数。 实际上,在一个差残差块里,通常都会包括很多层。

残差网络的方差

在残差网络中,每个块的输出会被添加回输入,因此方差在每个层上会增加两倍(指数增长)。一种方法是在每个残差块之间通过1/√2来重新缩放信号。第二种方法是将批量归一化(BN)用作残差块的第一步,并将关联的偏移δ初始化为零并将缩放γ初始化为1。

批量归一化

通过对神经网络中每层的输入数据进行规范化,使得网络中间层的数据分布更加稳定,从而加速了训练过程。 BN通常被应用于深度卷积神经网络中,可以显著地提高模型的准确率和收敛速度。 主要思想是在每个小批量的数据上计算均值和标准差,然后对输入数据进行标准化,使其均值为0,方差为1。

最大的好处是可以用大的学习率。

残差网络代表

ResNet,DenseNet,U-Net。

两个创新

相比VGG这样的顺序卷积网络,像resnet这样的残差网络的两个创新在于:

  1. 在残差块之间添加连接,使得一个块的输入连接到了输出。
  2. 批量归一化

残差网络允许我们训练更加更大的网络而不担心梯度消失和爆炸的问题。 其可以被视作一群小网络通过额外的连接串在一起组成的大网络。 比起简单的卷积网络,残差网络可以带来更加简单和平滑的损失平面。

变换器(Transformers)

变换器主要由自然语言处理产生而来,其特点是输入的序列是长度可变的,且与图片不同,没有办法轻易地调整他们的大小。

点积自我注意(dot-product self-attention)

变换器为了解决:1.参数共享以实现文本的长度不一问题 2.相同词可能是不同意思取决于上下文,就利用了点积自我注意机制。 取N个输入,每个输入的size为D,每个输出可以被认为是这N个输入的不同路由,权重之后要为1。

在自我注意机制中,序列中的每个位置都被看作是查询(Query)、键(Key)和值(Value)三个向量。

位置编码

用来表示序列中位置信息。

包括 绝对位置嵌入 (Absolute position embeddings) 和 相对位置嵌入 (Relative position embeddings)两种方法。第一种办法是用一个位置向量,而这个位置向量是可以提前学习的,第二种是考虑相对位置计算,通常要更多的资源。

多头自我注意(Multi-Head Self-Attention)

把原来size为D变成多个头(D/N),每个头可以单独计算,也可并行计算。再用另一个线性变换把他们重新组合在一起。 多头自我注意的优点是可以提高模型的表达能力和泛化能力,特别是在处理长序列时更为有效。同时,多头自注意也可以使模型更关注不同特征的信息,从而提高模型的性能。在Transformer等模型中被广泛使用。

Transformer层

Self-attention只是一个transformer层的一小部分。实际上包括了多头self-attention单元,紧接着一个全连接层,这两部分都得是残差网络(意味着要多一条路径从输入到输出),同时这二者末尾都有一个LayerNorm的正则化操作。

自然语言处理的常见工作流

首先,分词器(tokeniser)将文本拆分为更小的组成单元(token)的词汇。 然后,将这些单元映射到一个有全部信息的词嵌入(embedding)中,就可以得到向量值。

分词(Tokenisation)

一个Token其实并非就是一个单词。比如说专有名词可能不是一个正常词汇。 标点符号依旧有被考虑的必要。相同的单词在内容中不同的版本可能有不同的Token。

常用办法如按词频的子串分词器。

词嵌入(embeddings)

每个Token都将会映射到一个固定词汇表的词嵌入位置。 相同的Token往往映射到相同的词嵌入位置。 对每个Token的位置来讲,实际上是一个具有词汇表长度的one-hot向量(就是除了正确位置是1其他全是0的向量)。

转换器模型(transformer model)

通过一系列的Token的向量组成的矩阵传给一系列的转换层(tranformer layer),就构成了转化器模型。有三种转换器模型: 1.编码器模型 2.解码器模型 3.编码-解码模型 后续再细讲。

BERT编码器模型

BERT是一个使用了三万个token词汇表的编码器模型。每个token有1024维。拥有24个转换层。 整体拥有340M的参数。

类似BERT的编码器模型充分利用了迁移学习,在预训练阶段,通过大量的文本语料进行自监督学习,这个阶段的目标是学会了语言统计意义上的一般信息。在微调阶段,最终的网络被用来解决一个具体的任务,用一些少量的有监督训练数据。

BERT模型在预训练阶段主要是在预测互联网语料中缺失的字词。这样就学到了句法规则。比如说形容词后面都往往是名词。尽管如此,这类似理解也是非常有限制的。

BERT的微调阶段,需要在transformer网络之上再加额外的层来转出向量到需要的结果。比如:文本分类-情感分析,词分类-人物、地点识别,文本跨度预测-寻找问题和答案。

GPT3解码器模型

解码器模型的目标是在一个序列里产生下一token。 GPT3严格讲是一个自回归语言模型。 使用转换层的自注意机制,针对单个token的时候,其后续还未出现的内容都将通过softmax被忽略。叫掩盖自注意机制(masked self-attention)。 解码器模型的特别之处在于,在转换层中,因为使用了掩盖自注意机制,它们只会关注到当前和之前的tokens。

GPT3的参数达到了175B。它产生的预测结果是有道理的(plausible),但不是完成正确的。

这个规模的模型有个惊喜的点是,许多事情它都不需要微调就能干了。有人认为GPT3已经是少数数据学习者(few-shot learner)了,它可以通过一小部分实例就学到东西,但是实际上并不确定它是从哪里学到的,而且表现也不稳定。

机器翻译-编解码器模型

原来的解码器中转换层需要修改,不再使用掩盖自注意机制,需要同时注意机器翻译时的两个组件上下文,又叫编码解码注意或者交叉注意机制。

长文本转换

不管是编码还是解码,都存在每个token和其他所有token的交互,于是会出现随着文本长度的增加,计算量以二次方增长。有一些方法是使用卷积结构减少token交互。

图片的转换

Transformers最开始是为文本设计的,取得了不错的结果后就开始有人往图片上用。 ImageGPT就是一个解码器模型,通过部分图片预测剩下的部分。其转换器网络的复杂度决定了其6.8B的参数只能处理64x64的图片。

可视转换(ViT)

ViT解决的是图片分辨率问题。它是一个编码器模型。但其表现并没有超过最好的CNN。要想与CNN竞争,其所需要的训练数据将会多得多。

编码器和解码器模型最大的区别

编码器是纯自注意机制(plain/full self-attention),而解码器模型是用的掩盖自注意机制(masked self-attention)。

图神经网络矩阵A、X和E

A:邻接矩阵(adjacency matrix)。NxN,任何两个节点相连刚对应位置在矩阵中设置为1。 X:针对节点嵌入(node embeddings)的矩阵,有N个节点,每个节点有D个属性,则为DxN。 E:针对边嵌入(edge embeddings)的矩阵,有E个边,每个节点有D个属性,则为DxE。

图神经网络的三种任务

1.图级别任务:针对一整个图,预测其所属的分类,或者产生的值(分类和回归)。比如针对化学结构判断是否有害。为得到loss函数,可定义为先将输出的嵌入进行合并求平均之后的操作。 2.节点级别任务:针对图中每个节点进行预测分类或者值。比如说在3d点云中预测一个点是否是属于飞机的某一部分。此时的loss函数只看单独的一个节点,不再求平均。 3.边预测任务:预测两个节点之间是否存在边。比如社交网络中的好友推荐。为得loss函数的一个办法就将两个节点进行点积。

归纳式和感应式模型

图神经网络归纳式模型:是半监督学习的一种,比如在社交网络中,根据已经存在的好友,推断可能认识的人(发现新的节点和边)。

图神经网络感应式模型:基于图的节点分类任务。比如在社交网络中,可能只有一小部分人的标签,这时可通过标签传导算法,将更多的未知用户的标签传导出来。

拆分大图办法

近邻取样:在多个批次中采取不同固定距离的随机邻居节点选取,这有点像dropout,增加了正规性。

图分布:通过将大图变成分裂的子集,使得可能拥有多个数据集。

通过上述两种办法,可以将一个单个的大图搞出来不同用意的数据集,也能有效地将传导式问题转为归纳式。在进行预测的阶段,只要选取k跳的邻居做节点估计就可以得到结果,相对省很多内存。

图卷积网络可进行的操作

GCNs网络可以进行大多数CNN网络的操作。

当前节点和所有邻居节点结合:对角线聚合。

残差连接。

平均值聚合:其中一种叫做 Kipf 一般化。

最大池化聚合。

注意力聚合。

无监督学习

前面全部是监督学习的工作流,现在进入无监督学习。

判别模型从数据x映射到潜在变量z。生成模型从潜在变量z映射到数据x。

生成对抗模型。概率生成模型。

好的生成模型要有:

1.高效采样

2.高质量采样

3.高覆盖

4.表现良好的潜在空间

5.可解释的潜在空间

6.充分的似然计算

量化无监督学习性能

1.检验可能性 2.Inception score(IS)评分 3.Fréchet接受距离 4.流形精确度/召回率

生成对抗网络

GAN是无监督模型,目的是生成新的样本,并使得其无法与训练样本区分开来。只用来生成新样本。要想评估生成的样本有多好并非易事。

模型一般都有两部分,生成器(generator)和区分器(discriminator)。

如果在区分器能够区分,则作为信号返回给生成器调整其参数,重新生成。

训练GAN的过程,两个部分的loss分别在两个方向上,生成器在寻找最大化loss,区分器在寻找最小化loss。这是一个纳什均衡问题。 通过数学办法,在生成器的loss函数上乘以-1,就变成寻找最小化loss,同时也就去掉了对自身权重的依赖。

DCGAN 深度卷积生成对抗网络

训练不易,需要满足:

1.在上采样和下采样时,使用分层卷积法;

2.生成器和区分器都要用BatchNorm,除了最开始和结束;

3.激活函数用leaky ReLU;

4.使用较低动量系数的Adam。

模式下降和模式崩溃

mode dropping:模式下降,就是生成的样本不够全面(比如生成人脸里没有胡子)。

mode collapse:模式崩溃,就是完全忽略输入z,所有样本都一个或几个结果。

Wasserstein距离

Wasserstein距离(Wasserstein distance),也称为Earth Mover’s距离(EMD),是一种用于衡量两个概率分布之间差异的度量。它基于最小成本传输问题(Minimum Cost Transport Problem)的思想,用于比较两个分布之间的相似性。

Wasserstein公式可以使GAN训练更加稳定。其实可以增加输出图片质量的办法有: 渐进式增长(progressive growing), 小批量区分(minibatch discrimination), 截断法(truncation)。

条件生成

条件对抗网络cGAN,给生成器和区分器都加一个条件向量c。

辅助分类器GAN,ACGAN。生成器加c,区分器不加,但输出时判定c。

infoGAN, 生成器输入加c,区分器不加,输出预估c。

图片转换

比如 灰度图片转彩色,降噪图片,锐化图片,草图变高清。

Pix2Pix使用前后图片对来训练,CycleGAN使用非配对图片,StyleGAN使用多个样式向量进行细微控制。

生成网络的可能性

GANs相比Normalizing Flows, VAEs, Diffusion models等生成模型,是唯一不能给出概率的模型。

判断生成网络的质量

生成图片的真实性和多样性同样重要。

生成网络结果的距离计算

相比Kullback-Leibler距离,Wasserstein距离更适合GAN。

条件生成网络cGAN

数据中的label被同时用于生成器和区分器。

深度网络学更快

将把一部分数据的label进行随机化,足够大的网络仍然可以学习到正确的label。

Inception score, Frechet inception distance, and Manifold precision/recall

三者都是用来评估生成网络的质量的。都依赖于一个预训练的分类器,常常是基于ImageNet的。某种程度上是在衡量生成的图片和训练样本有多相似。

Loss函数的形状

平坦的最小值似乎对测试的准确性有帮助。

网络的内存占用

剪枝,知识提炼,权重量化。都可以减少网络的内存占用。

标准化流(Normalizing Flow)

简单讲,在1D情况下,目标是把潜在变量z通过一个函数f映射到x,使得x的分布和真实数据的分布一致。这个函数f就是标准化流。 z的分布为Pr(z), x的分布为Pr(x)。z和x的关系为x=f(z,φ)。 既可以前向对照也可逆向对照。前向就是生成方向,逆向就是标准化方向。因为逆向到的z是一个标准化分布。 从1D扩展到nD,就是把z和x都变成向量,f就是一个多元函数,本质上就是连续多次地进行映射。

流就是可逆网络层。标准化流就是可逆网络层的组合。根据不同的组合方式,可以得到不同的流模型。比如:线性流,非线性流(聪明元素流),自回归流,逆向自回归流, 耦合流,残差流,多尺寸流。

GLOW

GLOW是Generative flows生成式流。合成的图片要略差于GANs,但尚不清楚原因是不是不可逆层的缘故还是因为投入的时间不够。 用在合成两张真实图片之间的插值上,效果很好。比如说,用两张真人脸,生成中间的脸。

变分自编码器(Variational Autoencoder)

VAEs和标准化流,都是概率生成模型。GANs的目标是让生成的图片和训练集尽可能不能区分。VAEs和标准化流的目标都是学习训练集的分布,然后生成新的样本。VAE是一种潜变量模型。2014年提出,2019年才有完全的解释。

现在已经可以利用VAE生成高质量图片,但要进行每层的调试和专门的架构设计。这也就是Diffusion模型了。

VAEs还可以用于非常细致的修改图片,比如说人脸上张开嘴巴,或者眼睛向左看。

扩散模型(Diffusion)

扩散模型有一个encoder和一个decoder。encoder是前向的,decoder是逆向的。在训练decoder的时候,需要有一个扩散核(difussion kernel),用来快速计算中间潜变量。

扩散模型通过一系列的潜在变量来映射数据实例,重复地将当前的表示与随机噪声混合。

对于图像生成,每个去噪步骤都是用U-Net实现的,所以与其他生成模型相比,采样速度很慢。为了提高生成速度,可以将扩散模型改为确定性的表述,这里用较少的步骤进行采样效果很好。当前文本生成图片的最佳模型是扩散模型。

强化学习

是一个连续的决策框架,在这个框架中,代理学习在一个环境中执行行动,目的是使收到的奖励最大化。常用在AI游戏中。

比较有名的马尔可夫决策流程。马尔可夫决策流程是一个五元组,包括状态空间,行动空间,转移函数,奖励函数,折扣因子。

政策梯度方法直接优化政策,而不是给行动赋值。它们产生随机的政策,当环境是部分可观察的时候,这很重要。更新是有噪音的,许多改进措施被引入以减少其方差。

当我们不能与环境互动而必须从历史数据中学习时,就会使用离线强化学习。决策转化器利用深度学习的最新进展,建立一个状态-行动-奖励序列的模型,并预测能使奖励最大化的行动。

常见方法:动态编程,蒙特卡洛方法,时间差异方法(Deep Q-Learning)。

References

#big data #cutting-edge #Algorithms