1.FCN评价指标与标注工具
常见语义分割评价目标
2.风格迁移
定义:使用卷积神经网络自动将某图像中的样式应用在 另一图像之上。
方法:首先,初始化合成图像,例如将其初始化成内容图像。该合成图像是样式迁移过程中唯一需要更新的变量,即样式迁移所需迭代的模型参数。然后,选择一个预训练的卷积神经网络来抽取图像的特征,其中的模型参数在训练中无须更新。深度卷积神经网络凭借多个层逐级抽取图像的特征。我们可以选择其中某些层的输出作为内容特征或样式特征。
样式迁移常用的损失函数由3部分组成:
内容损失(content loss)使合成图像与内容图像在内容特征上接近。样式损失(style loss)令合成图像与样式图像在样式特征上接近。总变差损失(total variation loss)则有助于减少合成图像中的噪点。
最后,当模型训练结束时,我们输出样式迁移的模型参数,即得到最终 的合成图像。
内容代价函数:内容代价函数衡量了生成图像与原始图像之间的内容相似度。通常使用的是均方误差或者余弦相似度等指标来计算两个图像之间的内容差异。内容代价函数的目标是确保生成图像与原始图像在内容上保持一致。
风格代价函数:风格代价函数则用来衡量生成图像与某一参考图像之间的风格相似度。通常使用的是基于统计特征的方法,如Gram矩阵或小波变换等,来捕捉图像的风格信息。风格代价函数的目标是确保生成图像在风格上与参考图像保持一致。
在风格迁移算法中,通常将内容代价函数和风格代价函数结合起来,通过加权和它们的输出来最小化总体代价函数,以生成既保留了原始图像内容又具有参考图像风格的新图像。
总体代价函数:
实践中步骤:
(1)读取内容图像和样式图像
(2)预处理和后处理图像
预处理函数preprocess对先对更改输入图像的尺寸
然后再将PIL图片转成卷积神经网络接受的输入格式
再在RGB三个通道分别做标准化
由于预训练模型是在均值为[0.485, 0.456, 0.406]的图片数据上预训练的, 所以我们要将图片标准化保持相同的均值和标准差。
后处理函数postprocess则将输出图像中的像素值还原回标准化之前的值 。由于图像每个像素的浮点数值在0到1之间,我们使用clamp函数对小 于0和大于1的值分别取0和1
(3)抽取特征
使用基于ImageNet数据集预训练的VGG-19模型来抽取图像特征。为了抽取图像的内容特征和样式特征,我们可以选择VGG网络中某些层的输 出。 一般来说,越靠近输入层的输出越容易抽取图像的细节信息,反之则越容易 抽取图像的全局信息。 为了避免合成图像过多保留内容图像的细节,我们选择VGG较靠近输出的层 ,也称内容层,来输出图像的内容特征。 我们还从VGG中选择不同层的输出来匹配局部和全局的样式,这些层也叫样 式层。
(4)定义损失函数
样式迁移的损失函数的组成:内容损失、样式损失、总变差损失
(5)创建和初始化合成图像
在样式迁移中,合成图像是唯一需要更新的变量。因此,我们可以定义一 个简单的模型GeneratedImage,并将合成图像视为模型参数。模型的前向计 算只需返回模型参数即可。
(6)训练
在训练模型时,我们不断抽取合成图像的内容特征和样式特征,并计算损失函数。
小结:
(1)样式迁移常用的损失函数由3部分组成:内容损失使合成图像与内容图 像在内容特征上接近,样式损失令合成图像与样式图像在样式特征上 接近,而总变差损失则有助于减少合成图像中的噪点。
(2)可以通过预训练的卷积神经网络来抽取图像的特征,并通过最小化损 失函数来不断更新合成图像。
(3)用格拉姆矩阵表达样式层输出的样式。
3.视觉应用展望
(1)生成对抗网络
模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别 模型(Discriminative Model)的互相博弈学习产生相当好的输出。
原始 GAN 理论中,并不要求 G 和 D 都是神经网络,只需要是能拟合相应 生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。
整体结构:
生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯 分布等)的噪声 z 生成一个类似真实训练数据的样本,追求效果是越 像真实样本越好。
判别模型 D 是一个二分类器,估计一个样本来自于训练数据(而非生 成数据)的概率,如果样本来自于真实的训练数据,D 输出大概率, 否则,D 输出小概率。
4.分类问题与预测问题
图像分类:当前输入−>当前输出
时间序列预测:当前+过去输入−>当前输出
5.自回归模型
自回归模型是一种常见的统计模型,用于描述时间序列数据中变量之间的关系。它基于过去时间步的观测值来预测未来的观测值。自回归模型通常用于分析和预测时间序列数据,例如股票价格、气温变化、经济指标等。
6.数据预处理
(1)数值特征与类别特征
数值特征是指那些表示为数值或者实数的特征。
类别特征是指那些表示为类别或者离散取值的特征。
(2)文本处理
两种方式:按字母处理、按单词处理
7,文本预处理
步骤:1.将文本作为字符串加载到内存中。2.将字符串切分为词元(如单词和字符)。 3.建立一个字典,将拆分的词元映射到数字索引。 4.将文本转换为数字索引序列,方便模型操作。
8.文本嵌入
词嵌入:将独热向量映射为低维向量
原始向量:𝑣维;映射后:𝑑维,𝑑 ≪ 𝑣;映射矩阵:𝑑 × 𝑣,根据训练数据学习得到
映射参数矩阵
词嵌入训练效果
9.RNN模型
建模序列数据:图像分类中使用:1对1模型;输入和输出维度:固定
文本处理中: 输入维度不定(可能一直有单词输入); 输出维度不定或者是1(直接最终理解结果)
用RNN建模序列数据
使用RNN进行IMDB评论
随着输入的增加,会产生“遗忘”问题
10.RNN误差反传
每个时间步的隐状态和输出可以写为:
通过一个目标函数在所有𝑇个时间步内评估输出𝑜𝑡和对应的标签𝑦𝑡之间的差异:
按照链式法则:
门控循环单元
基本结构:
候选隐状态:
隐状态:
总结
11.长短期记忆网络(LSTM)
(1)LSTM网络模型
(2)遗忘门
值为0:什么都记不住(0通过) 值为1:全记住(全部通过)
(3)输入门
(4)更新传送带
计算传送带更新值
更新状态:
参数量
12.深度循环神经网络
具有𝑳个隐含层的深度循环神经网络
13.GAN
GAN是一类神经网络,可以像人类一样生成图像、音乐、语音或文本等素材。
GANs是近年来一个活跃的研究课题。Facebook的人工智能研究主管Yann LeCun称对抗式训练是机器学习领域“过去10年中最有趣的想法”。
GANs由两个神经网络组成,一个用于生成数据,另一个用于区分虚假数据 和真实数据。目前典型的应用包括:
使用CycleGan进行风格转换;使用Deepfacelab生成人脸
14.判别模型与生成模型
判别模型:在训练过程中,将使用算法调整模型的参数。目标是最小化损失函数,以使 模型学习在给定输入时的输出概率分布。在训练阶段之后,使用该模型通过 估计输入对应的最可能的数字对手写数字图像进行分类
生成模型
然而,像GANs这样的生成模型经过训练,可以用概率模型来描述数据集是如 何生成的。通过从生成模型中采样,您可以生成新数据。判别模型用于监督 学习,而生成模型通常用于未标记的数据集,可以看作是一种无监督学习。
为了输出新的样本,生成模型通常考虑一个随机元素影响模型生成的样本。 用于驱动生成器的随机样本来自一个隐空间,其中的向量代表了生成样本的 一种压缩形式。与判别性模型不同,生成性模型学习输入数据x的概率P(x),通过掌握输入数 据的分布,它们能够生成新的数据实例。
14.GAN架构
生成式对抗网络由两个神经网络组成,即生成器和判别器。
生成器的作用是估计真实样本的概率分布,以便提供与真实数据相似的生成 样本。
判别器被训练来估计一个给定样本来自真实数据而不是由生成器提供的概率。
这些结构被称为生成式对抗网络,因为生成器和鉴别器被训练成相互竞争: 生成器试图更好地欺骗鉴别器,而鉴别器则试图更好地识别生成的样本。
在架构中:
(1)生成器 𝐺 输入为隐空间的随机数据,它的作用是生成类似于真实样本的数据。 在这个例子中,你有一个二维的隐空间,因此生成器被输入随机的(𝑧1,𝑧2) 对,并对它们进行转换,使它们与真实样本相似。
(2)𝐺的结构可以是任意的,可使用多层感知器(MLP)、卷积神经网络(CNN) 或任何其他结构,只要输入和输出的尺寸与隐空间和真实数据的维数相匹配。
(3)鉴别器𝐷接收来自训练数据集的真实样本或G提供的生成样本,其作用是估计 输入属于真实数据集的概率。输入来自真实样本时输出1,来自生成样本时 输出0。
(4)鉴别器𝐷 同样可选择任意的神经网络结构。在本例中,输入是二维的,输出 可以是从0到1的标量。
(5)GAN训练过程由两人minimax博弈组成,其中D用于最小化真实样本和生成样 本之间的识别误差,G用于最大化D出错的概率。虽然包含真实数据的数据集 没有标记,但D和G的训练过程是以有监督的方式执行的。
(6)在训练的每个步骤中,𝐷和𝐺都会更新其参数。
(7)在最初的GAN方案中, 𝐷的参数被更新𝑘次,而𝐺的参数对于每个训练步骤只 更新一次。本例中,为了使训练更简单,考虑𝑘等于1。
(8)为了训练𝐷,在每次迭代中,将从训练数据中获取的真实样本标记为1,将𝐺 提供的一些生成样本标记为0。这样,可以使用传统的监督训练框架来更新 𝐷的参数,以最小化损失函数
(9)将由G和D组成的系统想象为一个单独的分类系统,该系统接收随机样本作为 输入并输出分类,在本例中可以将其解释为概率。
(10)当G的表现足以愚弄D时,输出概率应该接近1。这里还可以使用传统的监督 训练框架:训练由G和D组成的分类系统的数据集将由随机输入样本提供,与 每个输入样本关联的标签将为1。
(11)在训练期间,随着D和G参数的更新,预计G给出的生成样本将更接近真实数 据,而D将更难区分真实数据和生成数据。
15.大规模语言图像模型
在多模态异常检测的背景下对GPT-4V进行了彻底的评估:
考虑四个模式:图像、视频、点云和时间序列
探索九项特定任务,包括工业图像异常检测/定位、点云异常检测、医学 图像异常检测/定位,逻辑异常检测,行人异常检测、交通异常检测和时 间序列异常检测。
评估包括15个数据集的多样性。
16.Transformer
将Transformer模型看成是一个黑箱操作。在机器翻译中,就是输入一种语言,输出另一种语言。
由编码组件、解码组件和它们之间的连接组成。
编码组件部分由6个编码器(encoder)叠在一起构成。解码组件部 分也是由相同数量的解码器(decoder)组成的。
17.编码器与解码器
所有的编码器在结构上都是相同的,但它们没有共享参数。每个解码 器都可以分解成两个子层。
从编码器输入的句子首先会经过一个自注意力(self-attention)层 ,这层帮助编码器在对每个单词编码时关注输入句子的其他单词。
自注意力层的输出会传递到前馈神经网络中。每个位置的单词对应 的前馈神经网络都完全一样。
解码器中也有编码器的自注意力层和前馈层。除此之外,这两个层之 间还有一个注意力层,用来关注输入句子的相关部分。
18.编码
(1)词嵌入
在NLP中,将每个输入单词通过词嵌入算法转换为词向量。每个单词都被嵌入为512维的向量,我们使用方框格子来表示这些 向量。
(2)编码
编码器接收向量列表作为输入,接着将向量列表中的向量传递到自注意 力层进行处理,然后传递到前馈神经网络层中,将输出结果传递到下一 个编码器中。
19.注意力机制
(1)查询、键与值向量
计算自注意力的第一步就是从每个编码器的输入向量(每个单词的词向量)中 生成三个向量。也就是说对于每个单词,我们创造一个查询向量、一个键向量 和一个值向量。这三个向量是通过词嵌入与三个权重矩阵后相乘创建的。
计算自注意力的第二步是计算得分。为这个例子中的第一个词“Thinking”计算 自注意力向量,需要拿输入句子中的每个单词对“Thinking”打分。这些分数决 定了在编码单词“Thinking”的过程中有多重视句子的其它部分。
第三步和第四步是将分数除以8(8是论文中使用的键向量的维数64的平方根,这 会让梯度更稳定。这里也可以使用其它值,8只是默认值),然后通过softmax传 递结果,使得到的分数都是正值且和为1。
第五步是将每个值向量乘以softmax分数(为了准备之后求和)。这里的直觉是希 望关注语义上相关的单词,并弱化不相关的单词(例如,让它们乘以0.001这样的 小数)。
第六步是对加权值向量求和然后即得到自注意力层在该位置的输出(在我们的例子中是对于第一个单词。
所有步骤合并为以下公式:
20.多头注意力机制
增加 “多头”注意力机制,在两方面提高了注意力层性能
扩展了模型专注于不同位置的能力。
给出了注意力层的多个“表示子空间”
需八次不同的权重矩阵运算,我们就会得到八个不同的Z矩阵。
21.训练与输出
模型训练:
比如说我们正在训练模型——把“merci”翻译为“thanks”。
这意味着我们想要一个表示单词“thanks”概率分布的输出。但是因为这个模 型还没被训练好,所以不太可能现在就出现这个结果。
输入“je suis étudiant”并期望输出是:
22.大语言模型与GPT
大语言模型:
大语言模型训练
步骤:
阶段一:无监督预训练
无监督预训练技术分为两个阶段,分别是语言模型预训练和掩码语言模型预训练。语言模型预训练的目标是预测下一个单词的概率,掩码语言模型预训练的目标是根据输入的部分文本预测掩码位置上的单词。
阶段二:有监督训练微调技术
微调技术是ChatGPT实现对话生成的关键技术之一,它可以通过在有标注数据上进行有监督训练,从而使模型适应特定任务和场景。微调技术通常采用基于梯度下降的优化算法,不断地调整模型的权重和偏置,以最小化损失函数,从而提高模型的表现能力。
阶段三:奖励模型训练
一个奖励模型(RM)训练:一个奖励模型(RM)的目标是刻画模型的输出是否在人类看来表现不错。即,输入【提示,模型生成的文本】,输出一个刻画文本质量的标量数字。用于训练奖励模型的Promptt数据一 般来自于一个预先富集的数据集, 比如Anthropic 的Prompt数据主要 来自Amazon Mechanical Turk上面 的一个聊天工具;OpenAI 的Prompt 数据则主要来自那些调用GPT API 的用户。
基于前面提到的预先富集的数据 , 从里面采样prompt输入 ,同时丢给 初始的语言模型和我们当前训练中的语言模型 (policy ) ,得到俩模 型的输出文本 y 1 , y 2 。然后用奖励模型RM 对 y 1 、 y 2打分 ,判断谁更优秀 。打分的差值便可以作为训练策 略模型参数的信号 。
有了这个reward,可以使用PPO) 算法更新模型参数。
23.稳定扩散
定义:稳定扩散是指训练过程中参数更新逐渐减小并趋于稳定的现象。这种现象通常在神经网络训练的后期阶段观察得最为明显,当网络接近收敛状态时会更加显著。
工作原理:
(1)文本编码器:
功能:把人类理解的文字转换为机器理解的数学向量。
输入:人类语言
输出:语义向量
(2)图片生成器:
信息生成器:
功能:结合语义向量,从纯噪声开始逐步迭代去除噪声,生成图片信息隐变量。
输入:噪声隐变量+语义向量
输出:去噪的隐变量
解码器:
功能:将图片信息隐变量升维放大,转换为一张真正的图片。
输入:去噪的隐变量
输出:一张真正的图片
扩散过程:扩散过程是一个多次迭代的过程。每一步迭代的输入都是一个隐变量,输出也是一个隐 变量,只不过输出的这个隐变量噪声更少,并且语义信息更多。
UNet会结合语义向量不断的去除纯噪声隐变量中的噪声,重复50~100次左右就完全去除了噪声, 同时不断的向隐变量中注入语义信息,以此得到一个有语义的隐变量。同时Scheduler在去噪的 不同阶段中动态地调整去噪强度,以统筹整个去噪过程。
扩散模型训练:
(1)为去噪任务设计训练数据集
制作过程:1.选择图片
2.用random函数生成从强到弱各个强度的噪声
3.从中选择噪声(比如强度1)
4.为图片添加噪声
实际上我们可以更细腻地划分噪声 的等级,将其分为几十个甚至上百个档位,这样就可以创建出成千上万个训练集。比如我们现在 噪声设置成100个档位,下面就展示了利用不同的档位结合不同的图片创建6张训练集的过程:
一组训练集包括:噪声强度、加噪后的图片以及噪声图
训练过程:
1 、 从训练集中选取一张加噪过的图片和噪声强度,比如 左面的加噪街 道图和噪声强度3。
2 、 输入UNet,让UNet预测噪声图(预测原图上所加过的噪声),比如左图的UNet prediction。
3、计算和真正的噪声图之间的误差
4、通过反向传播更新UNet的参数。
生成去噪图片
重复预测噪声图并减去噪声图这个过程,从而不断的去除一张噪声图片的噪声,最终我们就可以得到合理正常的图片。这个图片是接近训练集分布的,它和训练集保有相同的像素规律。
24.文本编码器
(1)Clip模型:训练样本
CLIP基于图像及其对应字幕数据集上做训练,数据集有4亿张图片及字幕
(2)将语义信息与图片信息相耦合
从数据集中随机取出文字和图片后,用图片Encoder和文字Encoder分别压缩成两个embedding向量,然后用余弦相似度来比较图片和文字的embedding向量的相似性,以判断我们随机抽取的文字和图片是否匹配,并根据结果反向更新两个Encoder的参数。
(3)在噪声生成器中加入文本作为输入
为了将文本作为图像生成过程的一部分,我们需要调整噪声生成器来适配文本也作为输入。
数据集现在包含了编码的文本。由于我们将要在潜在空间中操作,所以输入的图像和已 经预测的噪声都是在潜在空间的。
(4)利用Clip模型为图片注入语义信息
注意:整个UNet是由一系列Resnet和Attention模块构成的,每一层的输入都是上一层的输出。
Clip Encoder得到的语义embedding由Attention模块来处理。
一些输出用Residual connection直接跳跃到后面去,如图中的虚线,这种residual+skip的操作是很经典的unet思想。
噪声强度被转换成一个embedding向量,输入到每一个子的Resnet里面。