读懂diffusion model需要知道的前置知识(持续更新)

写在开头: 我们大致了解一个概念应该从下面三个方面入手,搞清楚它们。
1.输入输出是什么;
2.有什么应用;
3.有什么优缺点。
然后就直接去撸码。最后,有时间的话可以了解一下实现结构(推导)。

超参数

超参数:超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。

马尔科夫

马尔科夫:当前时刻的状态只跟上一时刻的状态相关。

高斯分布

高斯分布:多维的正态分布。

重参数技巧

重参数技巧:在随机采样中,使采样样本可导,并且不失去随机性。

损失函数(loss function)

损失函数(loss function):度量模型的预测值与真实值的差异程度的运算函数,它是一个非负实值函数,损失函数越小,模型的鲁棒性就越好。损失函数也是神经网络中优化的目标函数,神经网络训练或者优化的过程就是最小化损失函数的过程。loss为m个样本的loss均值。

均方误差(Mean squared error,MSE)

均方误差(Mean squared error,MSE):均方误差(Mean Squared Error,MSE)是一种衡量实际值与预测值之间差异的统计量,通常用于评估机器学习模型的性能。它计算方法是将每个实际值与其对应的预测值之差平方,然后将这些平方差求和并除以样本数量,得到平均值。因为平方差总是正数,因此MSE的值越小,表示模型预测结果与实际值之间的误差越小。

激活函数

激活函数:一个没有激活函数的神经网络只不过是一个线性回归模型,它不能表达复杂的数据分布。神经网络中加入了激活函数,相当于引入了非线性因素,从而解决了线性模型不能解决的问题。激活函数一般单调可微。参考博客

常见的激活函数及其常用的任务类型

sigmoid函数:将输入压缩到(0,1)的范围,通常用于二分类问题。

tanh函数:将输入压缩到(-1,1)的范围,通常用于回归问题。

ReLU函数:将负数输入直接置为0,通常用于深度神经网络,能够有效地解决梯度消失问题。

Leaky ReLU函数:在负数输入时输出一个较小的斜率,通常用于缓解ReLU函数的“死亡神经元”问题。

ELU函数:与ReLU函数类似,但能够处理负数输入并保证输出值的连续性,通常用于深度神经网络。

softmax函数:将输入映射到(0,1)的概率分布,通常用于多分类问题。

权重项&偏置项

权重项(Weight)是指连接两个神经元之间的权重值,它表示了两个神经元之间的相对重要性。在神经网络中,每个神经元都与其它神经元相连,每个连接都有一个权重值,这些权重值构成了神经网络的参数。

偏置项(Bias)是指在每个神经元上添加的常数值,它类似于线性方程中的截距。在神经网络中,偏置项被用来调整神经元的激活值,从而使神经网络能够更好地拟合数据。

权重项和偏置项都是神经网络中的可学习参数,通过反向传播算法,神经网络可以自动学习到最优的权重值和偏置值,从而提高模型的预测准确度。

交叉熵

交叉熵:表达目标与预测值之间概率分布的差异。随着预测越来越准确,交叉熵的值越来越小,如果预测完全正确,交叉熵的值就为0。参考博客1参考博客2

噪声

噪声:衡量数据集的数据的质量如何,即真实标记与数据集中的实际标记间的偏差,包括错误值和偏离期望的孤立点值。参考博客

批标准化

批标准化 (Batch Normalization):是将分散的数据统一的一种做法,被添加在每一个全连接和激活函数之间。参考博客

非凸函数

非凸函数:凸函数指的是顺着梯度方向走,函数能得到最优解 ,大部分传统机器学习问题都是凸的。而非凸指的是顺着梯度方向走能够保证是局部最优,但不能保证是全局最优,深度学习以及小部分传统机器学习问题都是非凸的。非凸函数通常有鞍点(即损失函数的一阶导数为 0 的点),我们可以将这些鞍点视为「陷阱」,鞍点的存在阻止梯度下降到最优点,因为梯度下降在导数为 0 时不能向前移动。参考博客

Epoch

Epoch:当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一次epoch。(也就是说,所有训练样本在神经网络中都 进行了一次正向传播 和一次反向传播 )随着epoch数量增加,神经网络中的权重的更新次数也在增加,曲线从欠拟合变得过拟合。

batch szie

batch szie:将整个训练样本分成若干个Batch,每批样本的大小。GPU对2的幂次的batch可以发挥更佳的性能,因此设置成16、32、64、128…参考博客

GD(Gradient Descent)

GD(Gradient Descent):就是没有利用Batch Size,用基于整个数据库得到梯度,梯度准确。但数据量大时,计算非常耗时,GPU内存撑不住。同时神经网络常是非凸的,网络最终可能收敛到初始点附近的局部最优点。

SGD(Stochastic Gradient Descent)

SGD(Stochastic Gradient Descent):就是Batch Size=1,每次计算一个样本,梯度不准确,所以学习率要降低。如果数据量不大,noise数据存在时,模型容易被noise带偏。增大BATCH_SIZE的大小可以使得梯度方差的大小减小,直接使梯度更加准确。

mini-batch SGD

mini-batch SGD:就是选着合适Batch Size的SGD算法,mini-batch利用噪声梯度,一定程度上缓解了GD算法直接掉进初始点附近的局部最优值。同时梯度准确了,学习率要加大。

Iteration

Iteration:训练一个Batch就是一次Iteration。公开的神经网络模拟网站

学习率(Learning Rate)

学习率指的是在机器学习算法中用于控制权重更新幅度的超参数。

优化器(Optimizer)

优化器是机器学习算法中用于更新模型参数的一种算法,其主要作用是根据损失函数和梯度信息来更新模型的权重和偏置值,从而最小化损失函数。学习率(Learning Rate) & 优化器(Optimizer)

优化器的选取

对于大多数情况,Adam 或其变体是一个很好的选择。常见优化器(Optimizer)及选取经验

内部协变量漂移(Internal Covariate Shift)

内部协变量漂移(Internal Covariate Shift)是指在深度神经网络中,由于每一层的参数都在不断更新,每一层的输入分布也会发生变化,从而导致每一层的输出分布也会发生变化,这种变化会影响到后续层的学习效果,从而影响整个网络的学习效果。内部协变量漂移的存在会使得网络的学习变得困难,因为每一层的输出分布不稳定,会导致后续层的输入分布也不稳定,进而影响后续层的学习效果。此外,由于每一层的输入分布与输出分布之间存在着相关性,因此,每一层的学习都需要同时适应当前层的输入分布和前一层的输出分布,这也增加了网络的学习难度。

归一化(Normalization)

归一化(Normalization)指的是将数据按比例缩放到某个特定的区间内,一般是将数据缩放到 [0, 1] 或 [-1, 1] 区间内。归一化可以将不同量纲的数据转化为同一量纲,以便于不同特征之间的比较和统计分析。

标准化(Standardization)

标准化(Standardization)是指将数据按照均值和标准差的标准正态分布进行转化,使得转化后的数据符合标准正态分布,即均值为0,方差为1。标准化可以将数据转化为以0为中心的分布,方便模型的训练和收敛。在预处理数据时,常常会对数据进行标准化处理,标准化的计算公式如下:
x − μ σ \frac{x−μ}{σ} σxμ
其中, x x x 表示原始数据, μ \mu μ 表示均值, σ \sigma σ 表示标准差。

正则化(Regularization)

正则化(Regularization)则是一种用于防止过拟合的技术,通过向模型的损失函数中添加正则化项来惩罚模型的复杂度,从而避免模型对于训练数据的过分拟合。

Batch Normalization(批归一化)

在深度神经网络中,每一层的输入数据的分布往往是不同的,这种数据分布的不同会导致深度神经网络在训练时出现一些问题,例如梯度消失/爆炸、训练时间长、难以调参等问题。Batch normalization通过对每个batch的数据进行标准化处理,使得每个神经元的输入数据的分布均值为0,方差为1,从而使得神经网络的输入分布更加稳定,减少了梯度消失/爆炸的情况的发生,从而加速了模型的收敛。

此外,Batch normalization还可以作为一种正则化手段来防止模型过拟合,同时也可以提高模型的泛化能力。

Dropout(随机失活)

Dropout(随机失活)是一种常用的正则化技术,用于防止神经网络过拟合。在训练过程中,随机失活会随机地将一些神经元的输出置为零,使得这些神经元在这一次训练中不会对网络的输出产生影响。这样,神经网络不会过分依赖任何一个神经元,从而减少了过拟合的风险。

前馈神经网络(Feedforward Neural Network)

前馈神经网络(Feedforward Neural Network):些地方也会称之为多层感知机(Multilayer Perceptron,MLP),前馈神经网络中数据是从输入层到输出层按照一个方向流动的,中间没有任何循环,这种前向传播的网络区别于循环神经网络(RNN)。

反向传播算法(Backpropagation,BP)

反向传播算法(Backpropagation,缩写为BP):是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。 该方法再前向传播后,将网络输出值与真实值之差(误差)进行回传,对网络中所有权重计算损失函数的梯度, 这个梯度会反馈给最优化方法,用来更新权重以最小化损失函数。“正向传播”求损失,“反向传播”回传误差。参考博客

LSTM

LSTM:用于解决一般递归神经网络(RNN)中普遍存在的长期依赖问题,使用LSTM可以有效的传递和表达长时间序列中的信息并且不会导致长时间前的有用信息被忽略(遗忘),而且只有一部分的信息需要长期的记忆,而有的信息可以不记下来。同时,我们还需要一套机制可以动态的处理神经网络的“记忆”,因为有的信息可能一开始价值很高,后面价值逐渐衰减,这时候我们也需要让神经网络学会“遗忘”特定的信息。除此之外,LSTM还可以解决RNN中的梯度消失/爆炸问题。参考博客

Embedding

Embedding:简单来说,Embedding 就是用一个数值向量“表示”一个对象(Object)的方法。嵌入(Embedding)是一种常见的自然语言处理(NLP)技术,用于将离散的符号(例如单词、字符或标记)映射到连续的向量空间中。在NLP任务中,嵌入通常用于表示文本中的单词或短语,并且这些向量可以作为机器学习算法的输入。嵌入通常是通过训练神经网络来学习的,这个过程被称为“嵌入学习”(Embedding Learning)。在训练期间,神经网络尝试学习如何将输入中的符号映射到连续的向量空间中,以最大限度地减少某个目标函数(例如分类或回归误差)。学习的嵌入可以捕捉单词之间的语义和上下文关系,因此在NLP任务中经常用于提取有关文本数据的特征。例如,在文本分类任务中,可以使用嵌入来表示每个单词,并将这些表示输入到分类器中。这种方法可以有效地捕捉单词的语义和上下文信息,从而提高分类器的准确性。

图像分割

图像分割:图像分割是指将一张数字图像划分成多个子区域的过程,使得每个子区域代表图像中的不同对象或区域。在图像分割中,每个子区域被称为“分割结果”或“分割标签”,其目的是为了提取图像中不同对象或区域的信息,以便进一步分析或处理。例如,一张医学图像中可能包含多个器官或病变区域,通过进行图像分割可以将这些不同的区域分别提取出来,以便进行进一步的分析或诊断。又如,自动驾驶汽车需要对道路、车辆和行人等不同的区域进行识别和分割,以便做出正确的驾驶决策。

U-net结构

U-net结构:U-Net是一种用于图像分割的深度卷积神经网络架构。U-Net的输入是一个图像,通常是一个灰度或彩色图像,输出是一个与输入图像相同大小的分割图像,其中每个像素被分配了一个标签,表示它属于哪个对象或背景。U-net

数据的增广分布

主要用于增加训练数据集,让数据集尽可能的多样化,使得训练的模型具有更强的泛化能力。目前数据增广主要包括:水平/垂直翻转,旋转,缩放,裁剪,剪切,平移,对比度,色彩抖动,噪声等。数据增广之详细理解

Encoder(编码)&Decoder(解码)

编码的本质是将信息从一种格式/形式转为另一种格式/形式的过程。为什么要做转换这个过程呢?因为转换后的形式有一些原本不具备的优良性质。比如,将图片编码较短的张量,这样可以节约空间。在人脸识别领域,经常将人脸图片编码成向量,这样便于进行相似度计算。这种图片到向量的转换过程就叫做编码,反过来也可以说这个向量是图片的一种表示(representation)。Decoder与Encoder对称,例如用以将向量还原成图片。

AutoEncoder(自编码器,简称AE)

在深度学习中,自动编码器是一种无监督的神经网络模型,它可以学习到输入数据的隐含特征,这称为编码(coding),同时用学习到的新特征可以重构出原始输入数据,称之为解码(decoding)。从直观上来看,自动编码器可以用于特征降维,类似主成分分析PCA,但是其相比PCA其性能更强,这是由于神经网络模型可以提取更有效的新特征。除了进行特征降维,自动编码器学习到的新特征可以送入有监督学习模型中,所以自动编码器可以起到特征提取器的作用。

一般来说,我们不应该将自编码器设计成输入到输出完全相等。这通常需要向自编码器强加一些约束,使它只能近似地复制,并只能复制与训练数据相似的输入。这些约束强制模型考虑输入数据的哪些部分需要被优先复制,因此它往往能学习到数据的有用特性。一文带你了解自编码器(AutoEncoder)

变分自编码器(Variational auto-encoder,VAE)

变分自编码器(Variational auto-encoder,VAE):是一种生成模型,它可以从输入数据中学习潜在变量,并生成新的样本。一分钟理解VAE(变分自编码器)

去噪自编码器(denoisingautoencoder, DAE)

是一类接受损坏数据作为输入,并训练来预测原始未被损坏数据作为输出的自编码器。

残差模块(残差连接)

残差模块的基本思想是,通过在网络中添加一个跨层的“残差连接”(Residual Connection),残差连接通过在每个隐藏层添加一个跨层连接,将输入信号直接传递到后面的层,将原本的前向传递变成跳跃式传递。能够避免梯度消失问题,让神经网络更加容易训练和深度化。

一个典型的残差模块包括两个主要部分:一条跨层连接和一个残差函数。跨层连接直接将输入作为输出,使得信息可以绕过一些卷积层或池化层,直接到达下一层。残差函数则负责对输入进行变换,通常包括一些卷积操作和非线性激活函数,将输入映射到一个更高维度的特征空间中,同时保持输入和输出的形状相同,使得跨层连接可以直接相加。

残差模块最初在ResNet中被提出,现在已经被广泛应用于卷积神经网络、循环神经网络等深度学习模型中。

ResNet

ResNet的主要特点是使用残差模块(Residual Module)和残差连接(Residual Connection)来构建网络,这使得它可以训练更深的网络而不会出现梯度消失的问题。具体来说,ResNet引入了“跳跃式连接”(Shortcut Connection),即在每个残差模块中增加一个跨层连接,让信息可以直接传递到后面的层次,从而保留原始特征,并避免特征逐层消失。
一分钟搞懂ResNet

卷积层

卷积层通过卷积运算对输入数据进行特征提取,提取出输入数据的空间特征和局部相关性。卷积运算可以看作是一种滑动窗口操作,将窗口内的数据与卷积核进行点乘和求和运算,得到一个单一的输出值,并将该值作为输出的一个元素。通过对整个输入数据进行卷积运算,可以得到一个特征图(Feature Map),其中每个元素对应一个特定的局部特征。

卷积层通常包括多个卷积核,每个卷积核可以提取不同的特征。卷积核的大小、步幅和填充等超参数可以根据需要进行调整,以控制输出特征图的大小和形状。卷积层还可以通过激活函数和批归一化等操作进一步增强特征提取能力,并缓解梯度消失和梯度爆炸等问题。

卷积层通常作为深度学习神经网络的核心部分,可以用于处理各种类型的数据,包括图像、视频、语音、文本等。在深度学习领域,卷积神经网络(Convolutional Neural Network,CNN)已经成为处理图像和视觉任务的主流方法。

使用小卷积核的好处

更少的参数:使用小卷积核可以大大减少网络参数的数量,从而降低模型的复杂度,减小过拟合的风险。

更强的非线性表达能力:使用多个小卷积核可以组合出更复杂、更多样化的特征,从而增强网络的非线性表达能力。

更好的局部感受野:小卷积核的大小比较小,可以捕捉到更小的局部特征,从而更好地提取细节信息。

卷积层涉及的主要参数

卷积核大小:卷积层通过将卷积核(也称为过滤器)应用于输入数据来提取特征。卷积核是一个小的矩阵,它沿着输入数据的宽度和高度移动,并执行逐元素乘法和求和操作。卷积核的大小通常是一个正方形或矩形,例如3x3或5x5。

步幅:步幅指的是卷积核每次在输入数据上移动的距离。如果步幅为1,卷积核每次只向右移动一个像素;如果步幅为2,卷积核每次向右移动两个像素。步幅的大小可以影响输出的大小和形状。

填充:填充指的是在输入数据的周围添加一些虚拟像素。填充可以在卷积计算时保留输入数据的边缘特征。填充通常用于两个目的:一是保持输出形状与输入形状相同,二是减少特征图边缘的信息丢失。

卷积核个数:卷积核个数定义了卷积层中卷积核的数量,也决定了卷积层的输出特征图的深度。通常情况下,卷积核的个数在深度学习中被视为一个超参数,需要经过调整才能得到最佳结果。卷积层 调参经验

池化层

池化层(Pooling Layer)是深度学习神经网络中的一种常用层,通常跟卷积层一起构成卷积神经网络(Convolutional Neural Network,CNN)。

池化层的主要作用是降低卷积层的输出维度,从而减少网络中的参数数量,同时还能够缓解过拟合问题。具体来说,池化层通过对输入数据进行滑动窗口操作,将窗口内的值聚合为一个单一的输出值,并将该输出值作为池化层的输出。常用的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)两种。最大池化在滑动窗口内选择最大的值作为输出,而平均池化则取窗口内所有值的平均值作为输出。这些操作可以帮助网络学习输入数据的主要特征,并减少输入数据中的噪声和冗余信息。

需要注意的是,池化层通常不会改变输入数据的通道数,只会降低数据的空间尺寸。同时,池化操作通常使用非重叠的窗口进行,以便避免信息重复和损失。

全连接层

全连接层(Fully Connected Layer),也称为密集连接层(Dense Layer),是深度学习神经网络中的一种常用层,通常用于将特征图转化为分类或回归结果。

全连接层的输入和输出都是一维向量,其中输入向量的每个元素都与输出向量的每个元素都有连接。全连接层通过矩阵乘法和偏置项的加法运算,将输入特征映射到输出特征,同时引入非线性变换,使网络可以学习非线性的决策边界。

全连接层通常用于分类任务的最后一层,将提取出的特征映射到分类标签上。对于回归任务,全连接层也可以用于将特征映射到连续的数值上。全连接层的输出可以经过Softmax函数、Sigmoid函数或ReLU函数等激活函数处理,以得到更好的分类或回归结果。

需要注意的是,全连接层通常需要大量的参数,尤其是在输入数据很大的情况下。为了避免过拟合和提高模型的泛化能力,可以使用Dropout、正则化等技术进行优化和改进。

全局平均池化

全局平均池化(Global Average Pooling)是一种常用于深度学习神经网络中的池化层,它可以将卷积层的输出特征图映射为固定长度的特征向量,从而进行分类或回归等任务。

全局平均池化与普通的池化层不同,它的池化窗口大小等于输入特征图的大小,也就是说,它会对整个特征图进行池化操作。在进行全局平均池化时,将输入特征图的每个通道中的所有元素求平均值,得到一个单一的值,然后将这些值组成一个特征向量作为全局平均池化的输出。

全局平均池化有以下几个优点:

减少参数:全局平均池化可以将卷积层输出的特征图映射为一个固定长度的特征向量,从而减少模型中的参数数量,减轻模型过拟合的风险。

强化特征:全局平均池化能够通过池化操作对特征图进行特征聚合,提取出输入特征图的主要特征,增强模型的表征能力,从而提高模型的分类或回归性能。

加速计算:全局平均池化是一种高效的计算方式,能够减少模型中的计算量,加速模型的训练和推理。

全局平均池化通常用于卷积神经网络的最后一层,将卷积层输出的特征图映射为固定长度的特征向量,然后通过全连接层等操作将其映射到输出标签上。

上采样(反卷积)

上采样(Upsampling),也称为反卷积(Deconvolution),是深度学习中常用的一种操作,通常用于将低分辨率图像或特征图增加尺寸和维度,从而实现图像或特征的放大和恢复。

在卷积神经网络中,上采样可以用于特征图的还原和重建,或者用于将低分辨率的特征图放大到与高分辨率特征图相同的大小,从而进行更细粒度的分类或定位任务。通常,上采样是通过反卷积或转置卷积操作来实现的,这些操作可以将特征图中的每个像素扩展成更大的区域,并且通过插值或填充等方式来填充新生成的像素值。

在上采样操作中,需要选择合适的上采样方法和上采样倍数。常用的上采样方法包括最近邻插值、双线性插值、三次样条插值等,其中最近邻插值是速度最快的一种方法,但是会导致图像或特征的锯齿状边缘;而双线性插值和三次样条插值可以得到更平滑的结果,但是速度较慢。上采样倍数的选择需要根据具体任务和模型而定,通常选择2、4或8等倍数进行上采样。

需要注意的是,上采样操作可能会引入一定程度的噪声或信息丢失,因此在进行上采样时需要根据具体情况进行优化和调整,以达到更好的性能和效果。

下采样(压缩、池化)

下采样(Downsampling),也称为降采样,是指将图像或特征图的分辨率降低的操作。在深度学习中,下采样通常使用池化(Pooling)操作实现,可以有效地减少特征图的尺寸和参数数量,提高模型的计算效率和泛化能力。

在卷积神经网络中,下采样可以通过池化操作实现。池化操作将输入特征图分割成若干个不重叠的区域,然后对每个区域进行池化操作,从而得到一个新的特征图。常用的池化操作包括最大池化和平均池化,最大池化取每个区域中的最大值作为池化结果,平均池化取每个区域中的平均值作为池化结果。通过池化操作,可以将特征图的尺寸减少一半或更多,从而减少特征数量和参数数量,加快模型的训练和推理速度,并防止过拟合。

此外,下采样和上采样一样都可能会导致信息损失,因此需要适时地结合上采样等操作,以恢复图像或特征的精细度和细节。

微调(fine-tuning)和prompt

微调是指在已有的预训练语言模型基础上,通过少量的数据来对模型进行进一步的训练,使得模型能够更好地适应新的任务或领域。微调的目的是利用已有的语言模型,尽量减少训练新模型的时间和资源消耗。因此,微调是一种快速迁移学习的方法。

而prompt是指为了训练特定类型的语言模型而设计的一系列文本或代码提示。prompt可以看作是一种能够帮助语言模型更好地理解特定任务或领域的“指令”。prompt通常包括一个问题、任务描述或预定义的文本片段,用于指导模型生成合适的文本结果。

大家都是希望让预训练语言模型和下游任务靠的更近,只是实现的方式不一样。Fine-tuning中:是预训练语言模型“迁就“各种下游任务。Prompting中,是各种下游任务“迁就“预训练语言模型。
一分钟搞懂 微调(fine-tuning)和prompt

标签编码(LabelEncoder)

标签编码(LabelEncoder)是指将文本标签转换为数值编码的过程。在机器学习中,很多算法都需要输入数值型数据,而文本标签通常是非数值型的。因此,需要将文本标签转换为数值编码,才能使用机器学习算法对其进行处理。标签编码的基本思路是将每个不同的标签映射为一个唯一的整数。

sinusoidal position embedding(正弦位置编码)

正弦位置编码是一种将序列中每个元素的位置嵌入到模型中的技术。它的主要思想是通过将每个位置映射到一个高维空间中的一个固定的正弦函数,来为每个位置分配一个唯一的编码。在自然语言处理中,例如在使用Transformer等深度学习模型时,Sinusoidal Position Embedding被用来编码句子中每个词语的位置。在这种情况下,每个位置被映射到一个固定的正弦函数,函数中的频率和偏移量是根据位置计算出来的。通过这种方式,Sinusoidal Position Embedding可以提供一个有序的位置信息,帮助模型理解序列中不同元素之间的相对位置关系。这对于很多任务,如机器翻译、文本分类、问答等来说都非常重要。

张量(Tensor)

张量(Tensor)是一个多维数组,可以用于表示向量、矩阵、和高维数组等数据结构。

张量的形状(Shape)

张量的形状(Shape)是指张量中每个维度的大小。例如,一个形状为(2, 3, 4)的张量有3个维度,第一个维度大小为2,第二个维度大小为3,第三个维度大小为4。

形状张量(Shape Tensor)

形状张量(Shape Tensor)是指一个张量,它的元素值是另一个张量的形状。形状张量通常用于描述神经网络中的层或者操作输出的形状,因为在神经网络中,张量的形状通常是在运行时确定的,而不是预先确定的。
在TensorFlow和PyTorch等深度学习框架中,可以使用.shape属性来获取张量的形状。例如,如果x是一个形状为(2, 3, 4)的张量,则x.shape是一个形状为(3,)的张量,其中元素值为[2, 3, 4]。

感受野

感受野指的是神经元在视野中能够接收到的信号范围。在卷积神经网络中,每个神经元在计算时会接收到一个局部区域的输入信号,这个局部区域就是该神经元的感受野。在网络中,初级层的感受野较小,而随着网络深度增加,感受野也会逐渐扩大。一个神经元的感受野大小是由它所在的层数和卷积核大小决定的。感受野的大小对于卷积神经网络的性能和效果有着很大的影响。

迁移学习

将一个已经训练好的模型(源模型)的权重和结构应用到另一个任务(目标任务)中,以加快目标任务的学习速度和提高其准确性。迁移学习需要保证模型结构一样吗?

隐式知识

大模型蕴含的隐式知识可以被视为一种先验知识或模型参数初始化,包括以下方面:

语言结构:大模型可以学习到语言的结构特征,例如句子的语法、句子成分之间的关系等。这些知识对于自然语言处理任务(例如文本分类、命名实体识别等)具有重要的作用。

语义关系:大模型可以学习到不同单词之间的语义关系,例如同义词、反义词、上下位词、近义词等。这些知识对于词义消歧和语义相似度计算等任务非常有用。

情感和情感极性:大模型可以学习到文本中的情感信息,包括情感词、情感强度和情感极性等。这些知识对于情感分析和舆情监测等任务非常有用。

上下文依赖关系:大模型可以学习到文本中单词和句子之间的上下文依赖关系,例如上下文词频、上下文相似度等。这些知识对于文本生成和机器翻译等任务非常有用。

数据泄漏

如果训练集和测试集之间存在数据泄漏,例如测试集中的数据已经在训练集中出现过,或者测试集中的数据与训练集中的数据有重叠或相关性,那么模型的性能评估就会出现问题,从而影响模型的泛化能力和实际应用效果。

数据泄漏的原因可能有很多,例如数据集的采集、处理、存储等环节中存在安全漏洞,或者数据集的划分、选择等操作不当等。为了避免数据泄漏,应该采取一系列措施,例如对数据进行匿名化处理、随机化划分训练集和测试集、采用交叉验证等方法,以确保模型的性能评估具有准确性和可靠性。

Ground truth

Ground truth 是指事实上的真实结果或者状态,通常用于评估模型的性能。在机器学习、计算机视觉、自然语言处理等领域中,通常使用 ground truth 来评估模型的准确性、召回率、精度等性能指标。

在机器学习中,ground truth 通常是指数据集中手动标注的真实标签或者真实输出值,例如分类任务中的标签、回归任务中的目标值等。模型在训练过程中,通过不断地调整模型的参数,尽可能地使模型的预测结果接近 ground truth,从而提高模型的准确性和泛化能力。

在计算机视觉中,ground truth 通常是指手动标注的图像中的物体位置、类别、边界框等信息,用于评估目标检测、语义分割等任务的性能。

在自然语言处理中,ground truth 通常是指手动标注的文本中的实体、关系、事件等信息,用于评估实体识别、关系抽取等任务的性能。

模型的准确性、召回率、精度

模型的准确性、召回率和精度是评估模型性能的重要指标,通常用于分类模型的评估。

准确性(Accuracy)是指模型在所有样本中正确预测的样本数与总样本数之比,即:

A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy = \frac{TP+TN}{TP+TN+FP+FN} Accuracy=TP+TN+FP+FNTP+TN

其中, T P TP TP 表示真正例(True Positive),即正样本被正确预测为正样本的数量; T N TN TN 表示真负例(True Negative),即负样本被正确预测为负样本的数量; F P FP FP表示假正例(False Positive),即负样本被错误地预测为正样本的数量; F N FN FN 表示假负例(False Negative),即正样本被错误地预测为负样本的数量。

召回率(Recall)是指模型正确预测为正样本的数量与实际正样本的数量之比,即:

R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP

精度(Precision)是指模型正确预测为正样本的数量与预测为正样本的样本数之比,即:

P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP

准确性、召回率和精度是三个重要的评估指标,它们通常被用于衡量分类模型的性能。在实际应用中,不同的应用场景和任务需要不同的评估指标。例如,在垃圾邮件过滤任务中,通常需要高召回率,即尽可能地减少漏判(将垃圾邮件标记为正常邮件)的情况;而在疾病诊断任务中,通常需要高精度,即尽可能地减少误诊(将健康人诊断为患病者)的情况。

猜你喜欢

转载自blog.csdn.net/qq_44324007/article/details/128623709