城东住着一位大名鼎鼎的造假画师,城中还有一位火眼金睛的鉴定师。造假师日夜临摹名画,一心要骗过鉴定师;鉴定师则不断研究笔触漏洞,一心要揭穿每一幅赝品。两人斗了整整一年,结果令人吃惊:鉴定师的眼力越来越毒,造假师的画技也越来越高,最后他画出的画连鉴定大师本人都要端详片刻。这个故事里藏着一个改写AI数据版图的秘密——生成对抗网络(GAN)。 在AI训练中,数据就像学画的临摹范本。医学影像、工业缺陷这类小众领域,范本常常只有几十张,模型根本学不够。GAN的思路正是让电脑自己当“造假师”:从一个随机的草稿开始,反复琢磨真实样本的分布规律,最终批量画出以假乱真的新样本,为小样本训练补足弹药。从最朴素的对抗博弈,到条件GAN按需定制、DCGAN与StyleGAN升级画技、再到FID验货与训练稳定性治理,这套“造数据”的完整打法,就是本文要讲的故事。
掌握GAN数据增强,能让你在小样本的医学影像、工业检测等场景里,用“无中生有”的数据把模型效果再推高一截,成为团队里解决数据荒的关键角色。
目录
可视化演示
展示GAN对抗训练的核心流程:生成器从噪声合成数据,判别器区分真假,两者对抗博弈使生成数据质量不断提升。
本节配有交互动效(进入视口后自动加载,约 3KB)。
生成:噪声→合成数据 生成器G接收随机噪声向量z,通过神经网络映射为合成数据样本 生成目标是让合成数据分布逼近真实数据分布 x_fake = G(z; θ_G) 生成器不断优化以欺骗判别器
GAN基本原理:造假师与鉴定师的博弈
从前有座城,城里住着一位以假乱真闻名的造假画师,和一位火眼金睛的鉴定师。造假师天天临摹名画,想骗过鉴定师;鉴定师则不断提高眼力,专挑赝品里的破绽。两人日复一日较量,半年后,造假师的画技突飞猛进,画出的作品连鉴定师都要端详半天。这个故事正是生成对抗网络(GAN)的朴素蓝图。
2014年,Goodfellow把这场较量量化成了数学博弈。造假师就是生成器G,鉴定师就是判别器D。G接收一段随机噪声z,把它“画”成一张假样本;D接收样本(真的或假的),输出一个0到1之间的真实度分数。G想让假样本骗过D,D想识破G的谎言——两个神经网络互相逼迫,最终G产出的样本分布逼近真实数据分布,这就是“对抗增强”的原料来源。
整个博弈统一在一个目标函数里:G希望最小化它(让骗局成功),D希望最大化它(让骗局破产)。这个“对赌契约”是理解一切GAN变体的起点。
所以当你想为小样本任务造数据时,别急着学各种高级架构——先理解这对“造假师与鉴定师”的博弈,它才是所有GAN数据增强的地基。地基稳了,后面每一种升级才有意义。
- 价值函数V(D,G)表示这场博弈的总收益,数值上衡量D与G目标的对立程度。
- 真样本期望对来自真实数据分布p_data的样本x求期望,D(x)越接近1越好,log D(x)因此越大越好。
- 假样本期望对噪声z求期望,D(G(z))是判别器给假样本的分数,log(1 - D(G(z)))越大说明D越能识破假样本。
- 极小极大博弈D想让整个V变大即max_D,G想让整个V变小即min_G,两者在对抗中共同进步。
条件GAN:按“订单”造类别的定制增强
光会画风景的造假师满足不了数据工程师的订单——医学影像缺的是“肺结节”切片,工业检测缺的是“划痕”照片。于是造假师给自己接了订单:类别标签y就是订单,指定“今天画猫就画猫,要画狗就画狗”。条件GAN(cGAN)给生成器和判别器各递了一张订单纸,让博弈从“无主题自由发挥”变成“按需求定制生产”。
cGAN把标签y同时拼接到生成器输入(与噪声z拼接)和判别器输入(与样本x拼接)。判别器不仅要判断样本真伪,还要判断样本是否与标签y匹配。这意味着工程师想要“良性肿瘤”的合成样本时,生成器就不能偷懒画出“恶性肿瘤”来凑数——因为判别器会以“货不对板”为由退货。
有了条件GAN,造假师就从“自由画家”变成了“接单画师”。对数据增强来说,这解决了最头疼的不平衡问题:哪个类别样本少,就在哪个类别上多下几张订单,让训练集分布更均衡。
- 条件标签y是类别标签,例如“肺结节”“良性肿瘤”,告诉模型本次生成或鉴别的目标类别。
- 条件判别D(x|y)表示“在看到样本x且已知其声称类别y时”判断真伪,防止生成器张冠李戴。
- 条件生成G(z|y)表示“按标签y和噪声z”生成指定类别的样本,噪声z负责让同类别内还有多样变化。
- 目标函数整体形式与原始GAN一致,只是每一项都带上条件y,让对抗博弈在指定类别内进行。
DCGAN架构升级:流水线取代手工作坊
最初的GAN像一家手工作坊:造假师用简单的多层感知机(全连接网络)一颗颗地摆像素,效率低、效果糙。2016年DCGAN的出现,相当于给作坊上了流水线——用卷积网络替代全连接层,配合批归一化(BatchNorm),让造假师学会“先画轮廓再画细节”的空间层次。
批量归一化是这个升级的“定海神针”。训练中每层特征的数值常常忽大忽小,像学徒工心情不定时下笔的轻重。BatchNorm把每个批次的特征拉回零均值、单位方差,再用可学习的缩放γ和平移β恢复表达能力,让网络每层输入都保持稳定,梯度不再剧烈震荡。
DCGAN让GAN真正能开工画大图,也为后来StyleGAN铺平了道路。在数据增强实践中,DCGAN最大的贡献是:它让“无中生有”从理论口号变成了能落地产出图像的成熟工具。
- 批次均值计算一个小批次内所有样本在某个通道上的均值,代表这批数据的“中心位置”。
- 批次方差计算这批数据偏离均值的程度,代表数据的“波动范围”。
- 标准化用均值方差把特征拉回零均值单位方差,ε是一个很小的常数防止除零。
- 缩放平移γ和β是可学习参数,让网络自己决定最适合的分布范围,而不是被硬性约束在标准正态。
StyleGAN分层掌控:风格大师的精细操控
DCGAN的造假师能画出不错的画,但分不清“画面里内容是猫还是猫的笔触”。StyleGAN给造假师装了一个“风格调音台”:每一层卷积对应一个旋钮,粗旋钮控制姿态构图,细旋钮控制毛发纹理。造假师先通过映射网络把噪声变成风格向量w,再在每一层用AdaIN(自适应实例归一化)把风格注入特征图,实现了对生成图像从粗到细的分层控制。
AdaIN是StyleGAN的核心机关:它把内容特征x“标准化”掉,再用风格特征y的统计量重新着色。这样,网络各层看到的输入虽然都是标准化的,但每层都掺入了不同尺度的风格信息——低层管颜色纹理,高层管人脸朝向,互不干扰。
对小样本增强而言,StyleGAN的价值在于:它能让“缺陷的纹理细节”与“正常组织的结构”解耦。以工业缺陷为例,工程师可以固定“工件轮廓”而只调节“划痕纹理”,生成大量形貌各异的缺陷样本,弥补真实样本中“划痕角度、深浅、长度”覆盖不足的短板。
- 内容统计量对内容特征图x按通道计算均值μ(x)和标准差σ(x),描述它的明暗分布。
- 风格统计量对风格特征y同样计算均值μ(y)和标准差σ(y),描述它想要的色泽和反差。
- 内容标准化把x减去自身均值、除以自身标准差,得到“无色”的归一化特征。
- 风格重着色按σ(y)放大反差、加上μ(y)平移亮度,完成从“素稿”到“成品”的风格注入。
生成质量评估:验货是造假的另一半学问
造假师把大批赝品送上门,工程师不能照单全收——总得有个验收标准。FID(Fréchet Inception Distance)就是最常用的验收尺子:把真品与赝品都送进预训练的Inception网络“品鉴”,提取深层特征,然后比较两堆特征分布的距离。距离越小,说明赝品分布越贴近真品。IS(Inception Score)则同时考察清晰度和多样性。此外,最终要看下游任务(分类/检测)指标提升多少,这是最实在的验收。
FID的计算分为三步:提取特征、算均值向量差、算协方差矩阵距离。它本质上是在比较高维空间中两个“特征云团”的重叠程度——就像鉴定师不是看单张画,而是把真品库和赝品库整体摊开,比较两个库的“气质”差异。
有了FID这把尺子,“造假工厂”的质检就有了硬标准。但FID只是体检报告,真正的入职考试还是下游任务——把合成样本混进训练集,看分类准确率涨了多少,这才是数据增强的最终验收。
- 特征提取将真实图像和生成图像分别送入Inception网络,取某个隐藏层输出作为特征向量f。
- 均值距离μ_r与μ_g分别是真实、生成特征集的均值向量,二者欧氏距离的平方衡量“平均气质”差异。
- 协方差矩阵C_r、C_g描述各自特征集内部的联动关系,形象地说就是特征云团的“胖瘦和朝向”。
- 矩阵迹运算Tr表示对角线元素之和,这一项衡量两个云团的形状重叠程度,完全重合时为零。
训练稳定性治理:降服会偷懒的造假师
最让数据增强工程师头疼的,是造假师“走火入魔”:画了一千张几乎一模一样的画——这叫模式坍塌。原因在于原始GAN用JS散度做对抗,当真实分布与生成分布重叠太少时梯度消失,造假师根本学不到东西,只能原地复读。解决办法之一是WGAN-GP:用Wasserstein距离替代JS散度,再对判别器施加梯度惩罚,强迫它平滑地打分——相当于给鉴定师立规矩:打分不能太陡,不能一言不合就打击造假师的创作热情。
WGAN-GP的损失函数看起来复杂,拆开其实只有三笔账:对真实样本打高的分、对生成样本打低的分,以及一个“梯度惩罚”作为裁判员的哨子——约束判别器在真假样本之间的过渡区域变化不要太剧烈。这样判别器的打分曲面平滑,生成器总能接收到有意义的梯度信号。
实际调参中,还会配合标签平滑、学习率调节等技巧来防止判别器过强或过弱。训练稳定了,造假师才不敢偷懒,产出的合成样本才真正可堪大用——否则一整批“复读机”式的数据混进训练集,只会让下游模型也跟着钻牛角尖。
- 真样本得分判别器对真实样本x的打分期望,训练目标是让它尽量高。
- 生成样本得分对生成样本x̃的打分期望,训练目标是让它尽量低,二者之差近似估计分布距离。
- 梯度惩罚在真假样本连线上随机取插值点x̂,要求判别器在这些点的梯度模长接近1,λ控制惩罚强度。
- 整体优化判别器最小化整个L,等价于既想拉开真假分差,又不敢把打分曲面弄得太陡峭。
实战流程落地:从一间画室到完整造假工厂
把前面所有装备组装成完整流水线:先收集少量真实样本(原料),训练GAN(培养造假师),产出合成样本(赝品库),用FID筛出合格品(验货),与真实样本混合(入库),训练下游分类器并对比增强前后的F1分数(出货验证)。这套流程是无数小样本竞赛方案的标准骨架。
在实际项目中,最关键的评估指标是F1分数而不是准确率,因为缺陷检测、疾病筛查等场景正负样本极不均衡——98%的样本是“正常”,就算全猜正常也有98%准确率。F1分数综合了精确率P(判出的缺陷里真缺陷占多少)和召回率R(真正的缺陷里找回了多少),是更诚实的验收标准,也是对造假师成果的最终考核。
至此,从培养造假师、接单定制、升级画技、验货把关到治理偷懒,一整套基于GAN的数据增强工厂正式投产。有了它,小样本不再是无解的困局——只要你有几十张高质量的真实样本,就能训练一个AI“造假画师”,为模型批量产出合格的训练弹药。
- 精确率P = TP / (TP + FP),衡量“筛出来的阳性里有多少是真病变”,担心误报时看它。
- 召回率R = TP / (TP + FN),衡量“真正的病变里有多少被找到”,担心漏诊时看它。
- 调和平均F1 = 2PR / (P + R),当P与R接近时F1才高,防止用牺牲一项换另一项的自欺欺人。
AI 应用场景
医学影像小样本增强
阶段:数据准备与增强阶段
解决的问题:医院里罕见病CT、病理切片样本往往只有几十张,训练分割或分类模型极易过拟合。传统数据增强(旋转、翻转、加噪声)只改变外观,不改变分布本性,无法引入实质性变体。用条件GAN按“病灶类型”标签生成指定病变类别的合成切片,用FID筛选合格样本,能弥补稀疏类别的数量缺口。
具体案例:某三甲医院收集了80张早期肺结节CT切片,训练检测模型后验证集mAP仅0.52。团队用条件GAN以“结节类型”为标签生成400张合成切片,FID评估确认质量合格后混合训练,mAP提升至0.71,漏检率明显下降。
工业缺陷检测样本扩充
阶段:数据准备与增强阶段
解决的问题:产线上合格工件占99%,缺陷(划痕、污点、气泡)出现概率极低,采集足够缺陷样本成本很高。利用DCGAN或StyleGAN从少量缺陷照片学习生成大量形貌各异的缺陷图,让检测模型充分见识各种“长歪了”的样本,配合FID评估与F1指标验证增强效果。
具体案例:半导体晶圆表面缺陷检测项目中,原始缺陷样本仅120张,检测模型对真实缺陷的召回率只有82%。团队用StyleGAN固定“晶圆结构”、只调节“缺陷纹理”风格,生成1200张缺陷样本,混合训练后召回率提升到93%,误检率同步下降。
Python 演示
import torchimport torch.nn as nnimport numpy as np torch.manual_seed(42) def make_ring(n=300, r_min=0.8, r_max=1.2, noise=0.03): theta = np.random.uniform(0, 2 * np.pi, n) r = np.random.uniform(r_min, r_max, n) x = np.stack([r * np.cos(theta), r * np.sin(theta)], axis=1) return torch.tensor(x + noise * np.random.randn(n, 2), dtype=torch.float32) real = make_ring(60) # 只有60个真实样本, 模拟医学小样本困境 class Generator(nn.Module): def __init__(self, z_dim=8): super().__init__() self.net = nn.Sequential( nn.Linear(z_dim, 32), nn.ReLU(), nn.Linear(32, 32), nn.ReLU(), nn.Linear(32, 2)) def forward(self, z): return self.net(z) class Discriminator(nn.Module): def __init__(self): super().__init__() self.net = nn.Sequential( nn.Linear(2, 32), nn.ReLU(), nn.Linear(32, 32), nn.ReLU(), nn.Linear(32, 1), nn.Sigmoid()) def forward(self, x): return self.net(x).squeeze(-1) G, D = Generator(), Discriminator()opt_G = torch.optim.Adam(G.parameters(), lr=1e-3)opt_D = torch.optim.Adam(D.parameters(), lr=1e-3)loss_fn = nn.BCELoss() for epoch in range(800): # 先训判别器: 真样本判1, 假样本判0 z = torch.randn(128, 8) fake = G(z).detach() d_loss = loss_fn(D(real), torch.ones(real.size(0))) + \ loss_fn(D(fake), torch.zeros(128)) opt_D.zero_grad() d_loss.backward() opt_D.step() # 再训生成器: 让假样本骗过判别器 z = torch.randn(128, 8) fake = G(z) g_loss = loss_fn(D(fake), torch.ones(128)) opt_G.zero_grad() g_loss.backward() opt_G.step() if epoch % 200 == 0: print(f"epoch {epoch:3d} | D {d_loss.item():.3f} | G {g_loss.item():.3f}") # 训练完成后批量产出200个合成样本, 补足训练集syn = G(torch.randn(200, 8)).detach().numpy()real_np = real.numpy()print("真实样本均值:", real_np.mean(axis=0).round(3))print("生成样本均值:", syn.mean(axis=0).round(3))print("真实样本标准差:", real_np.std(axis=0).round(3))print("生成样本标准差:", syn.std(axis=0).round(3))
real = make_ring(60)只准备60个真实样本,刻意制造小样本困境fake = G(z).detach()生成假样本并阻断梯度,让判别器先独立学会分辨真伪d_loss = loss_fn(D(real), torch.ones(real.size(0))) + loss_fn(D(fake), torch.zeros(128))判别器同时学“真样本判1、假样本判0”两路损失g_loss = loss_fn(D(fake), torch.ones(128))生成器的目标是让判别器把假样本也判为1,即“骗过鉴定师”opt_G.zero_grad(); g_loss.backward(); opt_G.step()反向传播并更新生成器参数syn = G(torch.randn(200, 8)).detach().numpy()训练完成后调用生成器,一次性产出200个补充样本print("生成样本均值:", syn.mean(axis=0).round(3))对比真实与生成的均值、标准差,分布接近即说明造假成功
常见误区
误区训练集只有几十张医学片子,那我用GAN生成几万张,模型肯定更准。数据增强嘛,量变总能引起质变。
正解生成数据不是“量变产生质变”。如果生成器没训练好,产出的样本高度相似(模式坍塌),加入训练集反而让模型对少数几种样貌过拟合,甚至引入错误标注的噪声样本。稳妥做法是用FID筛选一批高质量样本,与真实样本按一定比例混合,并在下游任务上做消融对比。就像造假画攒一万张同一个人的赝品,不如十张真迹加上五十张高质量赝品更能让学生进步。
为何常见:人们直觉上认为数据越多越好,忽略了生成样本的质量和多样性,也受到“深度学习靠大数据”口号的影响。
误区两个模型生成的数据,谁的FID低就说明谁更强,直接拿去增强训练集就对了。
正解FID衡量的是分布层面的相似度,但它需要足够的真实样本做参考(通常几千张),在小样本场景下统计本身就不稳定;而且FID不保证单张样本的语义标签正确——如果生成了“病灶画到正常组织上”的错位样本,分布距离照样很小,判别器也难以察觉。FID要结合下游任务指标一起评估,就像鉴定赝品不能只看整体色调像,还要逐笔找细节失误。
为何常见:FID被许多评测基准当作唯一公制,数值可比较、榜单常引用,人们容易把它奉为绝对标准。
误区训练日志里生成器和判别器的loss稳定在同一个值,说明模型已经收敛,可以大量出图做增强了。
正解GAN是两位玩家的零和博弈,loss平衡可能是纳什均衡,也可能是两边都在原地打转——假样本毫无变化,判别器也懒得升级。更可靠的观测是:生成样本可视化是否有意义、FID是否持续下降、判别器对真假样本的分数差是否拉开。就像鉴定师和造假师天天对饮混日子,表面和气,其实赝品水平毫无长进。
为何常见:传统监督学习里loss下降就意味着模型变好,这种惯性思维被直接带到了对抗训练里,忽略了GAN没有全局损失函数的特殊性。
误区我用生成数据把训练集从100张扩到10000张,就不需要再辛苦收集真实数据了,反正AI能造假。
正解GAN学到的分布上限受限于训练数据,它的本质是隐式密度估计器,只能插值、不能创造训练集中不存在的新模式。罕见的病变形态或缺陷类型会在生成过程中被“平均化”抹掉。真实数据是标定分布的锚点,生成数据只是平滑分布空隙的补充。实践中建议保留全部原始真实样本,让合成样本只做增量,混合训练效果最好。造假师再厉害,也只见过临摹的原作,没见过的题材他画不出来。
为何常见:生成样本看起来足够逼真,让人误以为它创造了新信息,忽略了它只是对已有样本分布的重新采样。
面试题
Q1. 在GAN的对抗博弈中,生成器G的核心目标是什么?
- A.让判别器把假样本判为真实← 正确答案
- B.让判别器把真样本判为假
- C.让真假样本标签完全互换
- D.让生成样本与噪声完全一致
答案:A。G的目标是生成足够逼真的样本来骗过D,即让D对假样本输出接近1。B是反向目标,C偷换概念,D把G的输入和输出混为一谈,均不正确。这就像造假师的目的是让鉴定师把赝品当原作,而不是把原作当赝品。
Q2. 条件GAN(cGAN)与原始GAN最大的区别是什么?
- A.引入了类别标签y控制生成类别← 正确答案
- B.使用了更大的卷积网络
- C.彻底取消了噪声输入z
- D.只训练生成器不训练判别器
答案:A。cGAN把类别标签y同时拼接到生成器和判别器的输入,让生成按指定类别进行。B是DCGAN的特征,C取消噪声会让生成失去多样性,D违背了对抗博弈的基本设定。就像给造假师递了一张“订单”,指定今天画猫还是画狗。
Q3. GAN数据增强最适合解决哪类问题?
- A.小样本场景下训练数据不足← 正确答案
- B.大规模数据清洗更加方便
- C.让模型训练速度线性加快
- D.完全消除模型过拟合现象
答案:A。GAN增强的核心价值是补足小样本场景的数据缺口,医学影像、工业缺陷检测都是典型应用。B的清洗与生成无关,C的训练加速不是GAN的作用,D任何数据增强都无法“完全消除”过拟合,只能缓解。
Q4. 关于DCGAN的架构改进,下列说法正确的是?
- A.用卷积替换全连接层并加入批归一化← 正确答案
- B.将生成器层数设计为判别器的九倍
- C.彻底移除激活函数以加快训练
- D.让判别器与生成器共享全部参数
答案:A。DCGAN的关键改进是卷积网络替代全连接层、引入BatchNorm稳定训练、移除全连接隐藏层。B是编造的层数比例,C去掉激活函数网络就失去非线性表达能力,D两个网络职责不同不可能共享全部参数。如同把造假师的手工作坊升级成带质检工序的流水线。
Q5. FID指标数值越低说明什么?
- A.生成分布与真实分布越接近← 正确答案
- B.生成图像的像素均值越小
- C.判别器已经完全训练崩溃
- D.生成图像的尺寸变得更小
答案:A。FID计算真实与生成特征分布之间的Fréchet距离,值越低两个分布越接近,说明生成质量越高。B、D与像素均值、图像尺寸无关,C中判别器崩溃是训练异常而非FID低的含义。就像两堆画作的“平均气质”和“风格波动”越接近,赝品越以假乱真。
Q6. WGAN-GP在原始WGAN基础上新增的核心约束是什么?
- A.对判别器梯度模长施加惩罚← 正确答案
- B.用分类交叉熵替代回归损失
- C.增加判别器隐藏层的数量
- D.将生成器替换为自编码器
答案:A。WGAN-GP在Wasserstein距离基础上增加梯度惩罚项λ(‖∇D‖₂−1)²,约束判别器的打分曲面平滑,防止梯度爆炸或消失。B与WGAN-GP无关,C增加层数不是核心创新,D改变网络结构也不是该方法的重点。如同给鉴定师立规矩:打分不许忽上忽下。
Q7. StyleGAN中AdaIN操作完成的核心动作是什么?
- A.用风格特征统计量重着色内容特征← 正确答案
- B.用内容特征直接覆盖风格特征
- C.把图像通道数压缩到固定位数
- D.将生成器与判别器的特征拼接
答案:A。AdaIN先对内容特征x做标准化,再用风格特征y的均值μ(y)和标准差σ(y)重新着色,实现“素稿雕刻完毕、按调色盘上色”。B是直接覆盖,C与通道位数无关,D是两个网络间的特征拼接,均不准确。
Q8. 在GAN训练中,模式坍塌现象最典型的表现为?
- A.生成样本高度雷同缺乏多样性← 正确答案
- B.判别器损失持续快速下降
- C.生成样本分辨率越来越清晰
- D.生成器参数出现负数增长
答案:A。模式坍塌是生成器找到一条“低成本捷径”,只输出少数几种能骗过判别器的样本,导致多样性丧失,即产出一千张几乎一样的画。B中损失快速下降本身不一定异常,C是正常变好,D参数正负与坍塌无直接关系。
Q9. 下列哪些手段常用于缓解GAN训练不稳定性?
- A.使用WGAN-GP的梯度惩罚← 正确答案
- B.适当调节生成器的学习率← 正确答案
- C.应用标签平滑技巧稳定判别器← 正确答案
- D.将噪声输入维度设置为零
答案:ABC。A通过梯度惩罚保证判别器平滑,B学习率调节是常见的调参手段,C标签平滑防止判别器过于自信,都用于稳定GAN训练。D把噪声维设为零会让生成器失去多样性输入,反而加剧模式坍塌,是错误的。
Q10. 关于基于GAN的数据增强流程,下列说法正确的有?
- A.生成样本需要通过FID等指标评估质量← 正确答案
- B.生成样本可直接无筛选地无限扩充数据集
- C.混合真实样本与生成样本训练下游分类器← 正确答案
- D.最终性能需用下游任务指标验证增强效果← 正确答案
答案:ACD。A是FID验货环节,C是“真假混装”的标准训练方式,D用F1等指标闭环验证增强效果,三者都是正确流程。B错误,无筛选无限扩充可能引入低质量或重复样本反而损害模型,必须验货后再混合。