欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

GAN0:生成对抗网络简介与分类探讨

最编程 2024-02-03 16:21:01
...

1,GAN的发展历史

总结

The Six Fronts of the Generative Adversarial Networks

GAN最早是由Ian J. Goodfellow等人于2014年10月提出的,他的《Generative Adversarial Nets》可以说是这个领域的开山之作,论文一经发表,就引起了热议。而随着GAN在理论与模型上的高速发展,它在计算机视觉、自然语言处理、人机交互等领域有着越来越深入的应用,并不断向着其它领域继续延伸。

图自李宏毅老师的GAN课程

下面将按照时间顺序,简单介绍GAN的演进历史中的代表性网络

DCGAN

顾名思义,DCGAN[3]主要讨论 CNN 与 GAN 如何结合使用并给出了一系列建议。由于卷积神经网络(Convolutional neural network, CNN)比MLP有更强的拟合与表达能力,并在判别式模型中取得了很大的成果。因此,Alec等人将CNN引入生成器和判别器,称作深度卷积对抗神经网络(Deep Convolutional GAN, DCGAN)。另外还讨论了 GAN 特征的可视化、潜在空间插值等问题。

DCGAN生成的动漫头像:

ImprovedGAN

Ian Goodfellow 等人[4]提供了诸多训练稳定 GAN 的建议,包括特征匹配、mini-batch 识别、历史平均、单边标签平滑以及虚拟批标准化等技巧。讨论了 GAN 不稳定性的最佳假设。

PACGAN

PACGAN[5]讨论的是的如何分析 model collapse,以及提出了 PAC 判别器的方法用于解决 model collapse。思想其实就是将判别器的输入改成多个样本,这样判别器可以同时看到多个样本可以从一定程度上防止 model collapse。

WGAN

WGAN[6]首先从理论上分析了原始 GAN 模型存在的训练不稳定、生成器和判别器的 loss 无法只是训练进程、生成样本缺乏多样性等问题,并通过改进算法流程针对性的给出了改进要点。

CycleGAN

CycleGAN[7]讨论的是 image2image 的转换问题,提出了 Cycle consistency loss 来处理缺乏成对训练样本来做 image2image 的转换问题。Cycle Consistency Loss 背后的主要想法,图片 A 转化得到图片 B,再从图片 B 转换得到图片 A’,那么图片 A 和图片 A’应该是图一张图片。

Vid2Vid

Vid2Vid[8]通过在生成器中加入光流约束,判别器中加入光流信息以及对前景和背景分别建模重点解决了视频转换过程中前后帧图像的不一致性问题。

PGGAN

PGGAN[9]创造性地提出了以一种渐进增大(Progressive growing)的方式训练 GAN,利用逐渐增大的 PGGAN 网络实现了效果令人惊叹的生成图像。“Progressive Growing” 指的是先训练 4x4 的网络,然后训练 8x8,不断增大,最终达到 1024x1024。这既加快了训练速度,又大大稳定了训练速度,并且生成的图像质量非常高。

StackGAN

StackGAN[10]是由文本生成图像,StackGAN 模型与 PGGAN 工作的原理很像,StackGAN 首先输出分辨率为 64×64 的图像,然后将其作为先验信息生成一个 256×256 分辨率的图像。

BigGAN

BigGAN[11]模型是基于 ImageNet 生成图像质量最高的模型之一。该模型很难在本地机器上实现,而且 有许多组件,如 Self-Attention、 Spectral Normalization 和带有投影鉴别器的 cGAN 等。

StyleGAN

StyleGAN[12]应该是截至目前最复杂的 GAN 模型,该模型借鉴了一种称为自适应实例标准化 (AdaIN) 的机制来控制潜在空间向量 z。虽然很难自己实现一个 StyleGAN,但是它提供了很多有趣的想法。

参考文献

[1] Must-Read Papers on GANs/ 必读!生成对抗网络GAN论文TOP 10

[2] Generative Adversarial Networks

[3] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

[4] Improved Techniques for Training GANs

[5] PacGAN: The power of two samples in generative adversarial networks

[6] Wasserstein GAN

[7] Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

[8] Video-to-Video Synthesis

[9] 深度推荐系统

2,相关模型资料

以下是课程中所涉及到的所有模型简介、代码链接及论文。

*注意:实际代码请参考Config文件进行配置。

Wasserstein GAN

论文:Wasserstein GAN

简介:本文从理论上分析了原始 GAN 模型存在的训练不稳定、生成器和判别器的 loss 无法只是训练进程、生成样本缺乏多样性等问题,并通过改进算法流程针对性的给出了改进要点。

代码链接:https://github.com/PaddlePaddle/PaddleGAN/blob/develop/configs/wgan_mnist.yaml

DCGAN

论文:UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS

简介:由于卷积神经网络(Convolutional neural network, CNN)比MLP有更强的拟合与表达能力,并在判别式模型中取得了很大的成果。因此,本文将CNN引入生成器和判别器,称作深度卷积对抗神经网络(Deep Convolutional GAN, DCGAN)。

代码链接:https://github.com/PaddlePaddle/PaddleGAN/blob/develop/configs/dcgan_mnist.yaml

Least Squares GAN

论文:Least Squares Generative Adversarial Networks

简介:本文主要将交叉熵损失函数换做了最小二乘损失函数,改善了传统 GAN 生成的图片质量不高,且训练过程十分不稳定的问题。

Progressive Growing of GAN

论文:PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION

简介:本文提出了一种用来训练生成对抗网络的新方法:渐进式地增加生成器和判别器的规模,同时,提出了一种提高生成图像多样性的方法以及给出一种新的关于图像生成质量和多样性的评价指标。

StyleGAN

论文:A Style-Based Generator Architecture for Generative Adversarial Networks

简介:本文是NVIDIA继ProGAN之后提出的新的生成网络,其主要通过分别修改每一层级的输入,在不影响其他层级的情况下,来控制该层级所表示的视觉特征。 这些特征可以是粗的特征(如姿势、脸型等),也可以是一些细节特征(如瞳色、发色等)。

StyleGAN2

论文:Analyzing and Improving the Image Quality of StyleGAN

简介:本文主要解决StyleGAN生成图像伪影的同时还能得到细节更好的高质量图像。新的改进方案也不会带来更高的计算成本。不管是在现有的分布质量指标上,还是在人所感知的图像质量上,新提出的模型都实现了无条件图像建模任务上新的 SOTA。

代码链接:https://github.com/PaddlePaddle/PaddleGAN/blob/develop/configs/stylegan_v2_256_ffhq.yaml

Conditional GAN

论文:Conditional Generative Adversarial Nets

简介:本文提出在利用 GAN(对抗网络)的方法时,在生成模型G和判别模型D中都加入条件信息来引导模型的训练,并将这种方法应用于跨模态问题,例如图像自动标注等。

代码链接:https://github.com/PaddlePaddle/PaddleGAN/blob/develop/configs/cond_dcgan_mnist.yaml

CycleGAN

论文:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

简介:CycleGAN本质上是两个镜像对称的GAN,构成了一个环形网络。 两个GAN共享两个生成器,并各自带一个判别器,即共有两个判别器和两个生成器。 一个单向GAN两个loss,两个即共四个loss。 可以实现无配对的两个图片集的训练是CycleGAN与Pixel2Pixel相比的一个典型优点。

代码链接:https://github.com/PaddlePaddle/PaddleGAN/blob/develop/configs/cyclegan_horse2zebra.yaml

Pix2Pix

论文:Image-to-Image Translation with Conditional Adversarial Networks

简介:本文在GAN的基础上提供一个通用方法,完成成对的图像转换。

代码链接:https://github.com/PaddlePaddle/PaddleGAN/blob/develop/configs/pix2pix_cityscapes_2gpus.yaml

U-GAT-IT

论文:U-GAT-IT: UNSUPERVISED GENERATIVE ATTENTIONAL NETWORKS WITH ADAPTIVE LAYERINSTANCE NORMALIZATION FOR IMAGE-TO-IMAGE TRANSLATION

简介:本文主要研究无监督的image-to-image translation。在风格转换中引入了注意力模块,并且提出了一种新的可学习的normalization方法。注意力模块根据辅助分类器获得的attention map,使得模型聚能更好地区分源域和目标域的重要区域。同时,AdaLIN(自适应层实例归一化)帮助注意力指导模型根据所学习的数据集灵活地控制形状和纹理的变化量。

代码链接:https://github.com/PaddlePaddle/PaddleGAN/blob/develop/configs/ugatit_selfie2anime_light.yaml

Super Resolution GAN

论文:Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network

简介:本文主要讲解如何利用卷积神经网络实现单影像的超分辨率,其瓶颈仍在于如何恢复图像的细微纹理信息。

Enhanced Super Resolution GAN

论文:ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks

简介:本文在SRGAN的基础上进行了改进,包括改进网络的结构,判决器的判决形式,以及更换了一个用于计算感知域损失的预训练网络。

代码链接:https://github.com/PaddlePaddle/PaddleGAN/blob/develop/configs/esrgan_x4_div2k.yaml

Residual Channel Attention Networks(RCAN)

论文:Image Super-Resolution Using Very Deep Residual Channel Attention Networks

简介:本文提出了一个深度残差通道注意力网络(RCAN)解决过深的网络难以训练、网络的表示能力较弱的问题。

EDVR

论文:EDVR: Video Restoration with Enhanced Deformable Convolutional Networks

简介:本文主要介绍基于可形变卷积的视频恢复、去模糊、超分的网络。

代码链接:https://github.com/PaddlePaddle/PaddleGAN/blob/develop/configs/edvr.yaml

First Order Motion

论文:First Order Motion Model for Image Animation

简介:本文介绍的是image animation,给定一张源图片,给定一个驱动视频,生成一段视频,其中主角是源图片,动作是驱动视频中的动作。如下图所示,源图像通常包含一个主体,驱动视频包含一系列动作。

Wav2lip

论文:A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild

简介:本文主要介绍如何将任意说话的面部视频与任意语音进行唇形同步。

代码链接:https://github.com/PaddlePaddle/PaddleGAN/blob/develop/configs/wav2lip.yaml

参考资料

[1] 一文看懂生成式对抗网络GANs:介绍指南及前景展望

[2] PaddleGAN GitHub项目

[3] 宋代诗人‘开口’念诗、蒙娜丽莎‘唱’rap-PaddleGAN唇形合成的应用

[6] 老北京城影像修复-PaddleGAN上色、超分、插帧的应用

[7] 一键生成多人版‘脸部动作迁移????’-PaddleGAN表情动作迁移(First Order Motion)*应用

[8] 生成式对抗网络学习笔记

3,PaddleGAN很强

https://github.com/PaddlePaddle/PaddleGAN

4,一些牛逼的知乎、博客等文章

cGANs,Projection Discriminator:https://zhuanlan.zhihu.com/p/63353147 公式推导很厉害

5,GAN的六个发展前沿:

(1),网络体系结构

DCGAN(Deep Convolutional GAN)(深度卷积GAN)(2016)
改进:将全连接层和池化层替换为卷积层。(有可能是第一次提出批处理归一化)
优点:稳定GAN的训练,使得可以应用更深的模型并可以获得更高的分辨率。

LAPGAN(Laplacian Pyramid GAN)(拉普拉斯金字塔GAN)(2015)
改进:一种增量结构,在整个生成流程中,合成样本的分辨率逐渐提高。
优点:提高生成图像的分辨率。

PGAN(Progressive GAN)(渐进式GAN)(2018)
改进:在分辨率提高的同时,不断在生成器和判别器结构中加入新的层。
优点:生成图像的分辨率进一步提高了(LAPGAN:9696-》PGAN:10241024),并且旧的层依旧是可训练的。(不同层生成不同分辨率的样本,在训练时低分辨率的层调整图像的粗略结构,高分辨率的层调整图像的细节。)

SGAN(StyleGAN)(模式GAN)(2019)
改进:保留了PGAN的渐进式训练方法,但是噪声直接输入到生成器每一个层(其他的GAN都是从生成器的首层开始逐层传递,也就是说SGAN增强了噪声)。具体来说:在输入生成器之前,输入的标签数据会经过一个映射网络(由几个顺序的全连接层组成),该网络提取类别信息(作者称为“样式”-style)。然后将类别信息与输入的潜在向量(latent 噪声)组合,通过Adaptive Instance Normalization(AdaIN)[29]层的缩放和偏差参数,将其合并到所有生成器层中。各层所输入的噪声的分布是独立的,作者期望每个噪声源都可以控制生成器不同的方面(例如头发,皮肤毛孔和背景的位置)。
优点:在生成人脸上的效果超过PGAN。

-----------------------------解耦---------------------------
InfoGAN(2016)
改进:最初提出将生成样本的类别与潜在向量解耦的方法。

----------------------------解码器--------------------------
图像到图像的翻译、图像超分、图像分割在结构中会用到解码器。
解码器在其他的生成方法,例如变分自动编码器(VAE)中比较常见,因此又尝试试图将两者结合起来。

----------------------------分类器--------------------------
将分类器、生成器、鉴别器一起训练,从而改进生成和半监督功能。

(2),条件技术(控制所生成样本类别的技术)

-------------------类别标签只在输入中--------------------
CGAN(Conditional GAN)(条件GAN)(2014)
改进:将类标签信息与生成器的输入噪声级联起来。
这样的一步无论多么简单,它都会促使研究人员在GAN输入方面发挥创造力,并使GAN能够解决不同且更复杂的任务。

------------下一步就是将标签包含到损失函数中---------
Salimans等人提出(2016):
扩大判别器的输出尺寸,使得输出可以包括类别,以实现半监督分类。

ACGAN(Auxiliary Classifier GAN)(辅助分类器GAN)(2017)
改进:在向生成器提供类别信息的同时,区分类别标签以及真/假分类两种任务。
优点:相比于同时期的LAPGAN(可生成9696的合成图像),ACGAN可为ImageNet的1000个类别产生128128的合成图像。

TripletGAN(2017)
改进:类信息被串联到所有层的特征向量中。

------------------将标签信息引入到判别器----------------
Miyato等人提出Projection Discriminator(2018):
改进:首先将类信息嵌入,然后通过识别符末尾的内部乘积运算将其集成到模型中。 在他们的解决方案中,生成器继续将标签信息连接到图层的特征向量。
对原文中公式的推导:https://zhuanlan.zhihu.com/p/63353147
(这也指出了数学应该达到的修养:
1,给了条件能够推导至结尾;
2,数学公式与实际意义的对应关系:可以从实际意义出发得到数学公式,也可以从数学公式返回到实际意义,要明白数学公式在说一件什么事情)

--------------------一堆归一化的内容---------------------
Adaptive Instance Normalization(AdaIN)(自适应实例归一化)(2017):
这是一种将类别信息融入到内容信息中的技术。
改进:根据每一个样本和通道的各维度均值和方差归一化特征图,AdaIN使用从样式编码器获得的统计信息来缩放和移动规范化内容,将目标样式注入实例规范化特征中。
Spatially-Adaptive Normalization(SPADE)(空间自适应归一化)(2019):
改进:先前归一化方式(包括:批处理归一化、实例化归一化、自适应实例归一化)的通用化方法被用于将类信息合并到生成过程。(好家伙、大杂烩。)

(3),归一化和约束技术

Batch normalization(BN)
DCGAN倡导使用批处理归一化层(激活层的输出使用当前批次的统计信息:均值和标准差进行归一化。并且增添了两个可训练的参数以缩放和移动归一化的结果。)

Pixelwise Normalizaiton(像素归一化)
PGAN(2018)认为模型稳定性的缺失不在于内部协变量偏移,而是生成器和鉴别器之间的竞争导致信号幅度爆炸。
改进:为了限制信号幅度,抛弃了批处理归一化,并引入了两种限制权重的技术:像素归一化、平等学习率。

Spectral Normalization(频谱归一化)
SNGAN(2018)限制判别器各层的频谱范数对Lipschitz常数进行约束,从而限制判别器权重的变化速率。(相当于约束学习率??)每个权重均按权重的最大奇异值进行缩放。
对L约束的理解(L约束主要是对模型稳定性的限制):https://www.jiqizhixin.com/articles/2018-10-16-19

-------------------一些方法并不是在模型中加入归一化层,取而代之的,这些方法在训练过程中引入细微的变化已解决GAN的诸如训练稳定性以及生成样本的低变异性等问题-------------------
迷你批判别(Minibatch DiscriMination)(2016)给出了正在被分析的迷你批判别信息,这是通过将一个组件添加到判别器的内层实现的。有了这些信息,判别器可以比较微型批处理中的图像,从而迫使生成器创建彼此不同的图像。

PacGAN(2018)
在送入判别器之前,打包(在宽度轴上级联)来自同一源的不同图像(真实或合成)的不同图像。据说,此过程可以帮助生成器覆盖训练数据中的所有目标标签,而不是限制自身生成能够欺骗鉴别器的单个类别的样本(这又被称为模式崩溃)。

(4),损失函数

一个概念:
JSD(在GAN的公式中用于测量真实数据和生成器数据的分布相似度)负责在判别器接近完成训练时消除梯度。

除了JSD散度,用到的距离还有
Pearson χ2((Least Squares GAN)(2017)
Earth-Mover Distance(Wasserstein GAN)(2017)
Cramér Distance(Cramér GAN)(2017)

新损失函数构建的一项核心原则是:即使样本位于决策边界的正确一侧也要对其进行惩罚,从而避免训练过程中梯度消失的问题。

还有就是在损失函数中引入不同的组件以增添生成图像的质量、训练的稳定性以及解决模式崩溃和梯度消失问题。其中一个代表性例子就是:
BSGAN(Boundary-Seeking GAN)(边界寻找GAN)(2018)
BSGAN中含有一个简单组件(可以针对不同的f散度函数进行调整)以引导生成器生成样本,从而使得判别器对每一个样本的输出都是0.5.

Feature Matching(2016)在生成器的损失函数中引入了一个新的组件,以诱使生成器匹配可以更好地描述真实数据的特征;并且训练判别器来找到这些特征。

PercePtural Loss(2016)同样使用来自一个神经网络地分布来对比真实和合成样本并估理他们匹配。
改进:使用ImageNet预训练网络(通常用VGG),并为损失函数增加了一个额外项。

(5),图像到图像的转换

---------------------自动编码器结构-----------------------
Pixel-Level Domain Transfer(2016)
改进:在生成器中增加编码器,使得编码器转变为编码器-解码器网络。源域图像首先编码为潜在表达,之后通过生成器转换到目标域。此外,除了传统的对抗判别器,作者引入了域判别器以分析成对的源域和目标域样本并判断他们是否存在关联性。

pix2pix(2017)
改进:使用了全新结构的生成器和判别器,还有新的损失函数,这是一次完全的进化!(吹的这么厉害,不会是同一个作者吧?)生成器是一种U-NET-LIKE网络,判别器则改进为基于补丁的判别器(patch-based discriminator,作者又将其称为PatchGAN),损失函数增添正式目标样本和合成目标样本之间的L1距离,从而在不破坏变异性的情况下约束合成样本。
优点:在此之前所生成的图像质量都是低质量、低分辨率的(ACGAN 128128),分辨率提高了(pix2pix,512512)

CycleGAN(2017)(与pix2pix是一个研究组构建的)
改进:使用两个生成器以及判别器学习领域X到领域Y的转换,反之亦然。为了评估周期一致性损失,作者强迫生成器在转换后能够从源域重构图像。(生成器可以做到从X到Y,以及从Y到X两种变换)

StarGAN(2018)
改进动机:希望在不按比例缩放生成器、判别器数量的情况下增加域数,并拥有部分标记的数据集(也就是说,每个源-目标域都没有成对的数据集)。
改进:StarGAN的生成器除了收到一个额外的阵列,阵列中包含有目标域的信息(??StarGAN’s generator receives an extra array containing labels’ codification that informs the target domain.)。该信息在传入生成器之前在深度上与源域样本并联,然后利用重构损失执行与CycleGAN相同的循环过程。

pix2pixHD (high definition)(2018)
改进:借鉴了cycleGAN的生成器结构。有‘local’
和‘global’两种生成器。global的输出输入‘local’以引入低分辨率生成的信息。训练过程:‘global’, ‘cocal’, 微调整个结构。判别器有三个,同时应用于同一个图像的三种不同的分辨率,低分辨率的判别器关注主体结构以及粗略的局部区域;高分辨率判别器则关注细节。损失函数也做了改进:除了传统的生成器和判别器的对抗部分,还包括特征匹配和感知损失。

对图像到图像的转化还有一个有趣的问题:
网络的输入通常是语义图,在语义图上的每一个像素点都有相应对象类别的值,这些语义图通常是像素分割的结果。但是有时候相同类别像素组成的对象的轮廓可能是很怪异的:比如在街上依此排列的一列汽车,这些汽车相隔的距离很近,轮廓彼此重合,就会出现一个轮廓很怪异的对象,这个对象也是汽车。
为了解决这一问题,pix2pixHD提出在网络的输入中增加一个instance map(是要通过距离度量对网络进行增强吗??)

这个思想绝了啊!!:
现有的GAN方法的缺陷是:生成的样本是固定的(在测试阶段,对于一个给定的源域样本,给出的生成结果也是相同的。)这并不是一种理想的状态,如果我们想要使用合成样本扩充分类模型的训练数据。
为了解决这个问题,2018年提出了 多态无监督图像转换网络(Multimodal Unsupervised Image- to-image Translation)(MUNIT)以实现使用相同的源样本生成各种样本。生成器由编码器和解码器组合而成,从样本中会提取两种信息:1,content(可在不同域的样本之间共享的信息,用于控制样本的一般特征);2,style(可用于控制每个域特有的细节)。编码器学习提取content和style,解码器则利用这些信息生成样本。
训练过程中的重构损失有两个部分:1,使用content和style重构源样本的重构损失;2,潜在向量重构损失,通过从随机分布中采样的一对源潜在向量与使用它们所构建的合成图像的编码进行比较,以此衡量重构潜在向量自身的能力。MUNIT的解码器中用到了AdaIN归一化。

FUNIT(2019)(Few-shot Unsupervised Image-to-Image Translation)(融合了CycleGAN的训练过程,MUNIT的结构,以及StarGAN像生成器提供信息的过程。)
改进:将CycleGAN的cyclic训练过程扩充到多个源域类别(作者倡议说类别数量越多,模型的泛化效果越好。);采用MUNIT的内容和样式编码器,这些编码器通过AdaIN图层融合到一起;增强了StarGAN向内容生成器提供类别信息的过程,除了内容图像之外,生成器还接收了一组目标域的少量图像,而不是简单的类别信息。 鉴别器还遵循StarGAN,以对每个源类执行输出的方式进行。
如何文雅的说缝合怪?:This is an example of how works influence each other, and of how updating an older idea with enhanced recent techniques can result in a state-of-the-art solution.

以上所采用的结构都是自动编码器的结构:源域图像会被编码为降维的潜在表示(latent representation),并最终又被扩展为全分辨率,编码器承担着提取源域图像信息的重要任务。

-------------------非自动编码器结构----------------------
SPDAE(2019)(Spatially-Adaptive Normalization)(空间自适应归一化)
本文介绍的是一种用于语义图像合成的方法(例如,使用语义图作为生成器的输入进行图像到图像的翻译。)

(6),验证指标

IS(Inception Score)(起始分数)
使用在ImageNet上经过预训练的Inceptionv3网络计算合成样本的对数。
缺陷:不适用于评估不是ImageNet的任何数据集中的合成样本(比如皮肤病变图像)

FID(Frechèt Inception Distance)(Frechèt起始距离)
同样基于inception的评估,不过不同的是,它采用了来自真实和合成样品的Inception倒数第二层的feature,并将它们进行了比较

SWD(Sliced Wasserstein Distance)(切片的Wasserstein距离)
专用于处理高分辨率样本。思路是从16*16的低分辨率一直double到最高的分辨率。对每一个分辨率,使用Sliced Wasserstein Distance距离来评估真实样本以及生成样本之间的距离。

GANtrain以及GANtest:
GANtrain:使用合成样本训练网络然后用真实样本测试;
GANtest:使用真实样本训练然后用合成样本测试。

6,遗留的问题:

  1. 仍然存在模式崩溃,并且当类数很高或数据集不平衡时,该问题变得更加严重。