什么是Loss
Loss是衡量模型预测值与真实值之间差异的函数。
为什么需要看懂这个东西
对于一个模型的训练,我们常常会认为只要数据质量好,轮次越高,那么最终得到的模型就会越好,从本篇文章中,你将会对这种认知有所改变。
在许多模型训练工具中都会内置一个工具,Tensorboard,Tensorboard 是一系列图表,我们可以在训练过程中监控模型的进度。
目前许多训练工具中Tensorboard常常图标很多,很难理解,接下来我会分析RVC中需要注意的loss曲线进行讲解。
如何使用
tensorboard --logdir=logs/xxxxx
如果没有安装可使用
pip install tensorboard
看懂图标
1.一旦 TensorBoard 运行,打开您的网络浏览器并导航到http://localhost:6006
(或终端中显示的地址)。
2.点击 TensorBoard 中的“标量”选项卡。
3.查找顶部的“g/total”指标来监控您的训练进度。
该图像提供了在“标量”选项卡中定位“g/total”度量的视觉指南。
小技巧
- 将平滑度设置为 0.950 或 0.987 以更好地查看图形。
- 您可以点击:gear: 来标记每 30 秒重新加载数据的选项。
- 每个图表下方都有 3 个按钮。第一个按钮用于将其放大到最大尺寸,第二个按钮用于停用 Y 轴,最后一个按钮用于将数据调整到图表大小。
- 取消选中忽略图表缩放中的异常值的选项。
最低点
当图表降到某个点时,这种情况不会再发生。在训练期间,会有几个低点,你应该测试这些低点,以找到模型的指示 pth,这样可以防止我们的模型过度训练。要知道选择哪一个,我们转到最低点并查看它有多少步。知道了这一点,我们可以在打开的 cmd 或 colab 笔记本中搜索具有该步骤的时期或距离保存点最近的时期。
还需要注意
除了检查 loss/g/total 之外,还需要监控 loss/g/mel、loss/g/kl 和 loss/d/total 图表。如果这些值中的任何一个增加并且没有再次减少,则表明过度训练。在训练开始时,d/total 上升而 g/total 下降是正常的,但最终它们会稳定下来并开始下降。在训练期间,所有指标都应下降或在类似值附近波动,例如,如果梅尔图开始上升而不是下降,则表明模型失败了。梅尔图显示模型从数据集中重现梅尔频谱图的准确性,反映了音频质量。下面我们将进一步解释它们
损失条款
损失项在 GAN 的训练过程中提供了有价值的反馈,有助于提高生成的合成数据的质量和真实性。
将这些损失项放在一起监控可以全面了解训练进度。成功的训练运行通常会在减少生成器和鉴别器损失以及减少特征匹配、梅尔频谱图和 KL 散度损失之间取得平衡。这表明生成器正在生成越来越逼真的合成数据,同时保持与真实数据类似的底层结构和分布。
最佳值将根据具体任务和数据集而有所不同。但是,通过监控这些损失项的趋势,您可以深入了解训练的进展情况,并识别可能出现的任何潜在问题。
(D)鉴别器损失(loss_disc)
鉴别器损失衡量鉴别器区分真实数据样本和合成数据样本的能力。它通常被表述为交叉熵损失,其中鉴别器因错误分类真实样本和合成样本而受到惩罚。
鉴别器损失的减少表明鉴别器在区分真实数据和合成数据方面越来越好。这通常是一个好兆头,因为它表明生成器正在生成越来越逼真的合成数据。但是,如果鉴别器损失变得太低,则可能表明生成器只是在记忆真实数据样本,而不是学习捕捉数据中的潜在模式。
(G)生成器损失(loss_gen)
生成器损失衡量生成器生成与真实数据难以区分的合成数据样本的能力。它通常被表述为对抗性损失,其中生成器因生成容易被鉴别器归类为合成的数据而受到惩罚。
生成器损失的减少表明生成器成功学习生成真实的合成数据。
特征匹配损失(loss_fm)
特征匹配损失鼓励生成器生成具有与真实数据相似的中间特征表示的合成数据。这是通过比较应用于真实数据和合成数据的特征提取器的中间激活来实现的。
特征匹配损失的减少表明生成器正在生成具有与真实数据相似的中间特征表示的合成数据。这表明生成器正在学习捕捉真实数据的底层结构,这有助于提高合成数据的真实性。
梅尔声谱图损失(loss_mel)
梅尔频谱图损失比较真实数据样本和合成数据样本的梅尔频谱图。梅尔频谱图是一种表示音频信号频率内容的方式,这种损失鼓励生成器生成听起来与真实数据相似的合成数据。
梅尔频谱图损失的减少表明生成器正在生成具有与真实数据相似频谱分布的合成数据。这对于音频生成任务尤为重要,因为它可以确保合成音频听起来与真实音频相似。
KL 散度损失(loss_kl)
KL 散度损失鼓励生成器生成具有与真实数据相似的最新变量分布的合成数据。潜在变量是生成数据的潜在因素的表示,这种损失确保生成器不仅仅是记住真实数据样本,而且还在学习捕捉数据中的潜在模式。
KL 散度损失的减小表明生成器正在生成具有与真实数据相似的潜在变量分布的合成数据。这表明生成器不仅仅是记住真实数据样本,而且还在学习捕捉数据中的潜在模式,从而产生更具通用性的合成数据。
额外须知
- loss/g/total:总生成器损失。这衡量了生成器欺骗鉴别器并产生逼真音频的能力。值越低越好。
- loss/d/total:总鉴别器损失。此损失反映鉴别器区分真实音频和生成音频的能力。值越高,通常表示鉴别器性能越好。
- learning_rate:生成器和鉴别器的优化器的当前学习率。该值通常会随着时间的推移而减小,具体由学习率调度程序定义。
- grad_norm_d:鉴别器的梯度范数。训练期间梯度幅度的度量。它有助于监控梯度是否变得过大(可能导致不稳定)或过小(可能导致学习缓慢)。
- grad_norm_g:生成器的梯度范数。与 grad_norm_d 类似,这测量生成器的梯度幅度。
- loss/g/fm:特征匹配损失。此损失鼓励生成器生成与鉴别器提取的特征图相匹配的音频,从而促进真实音频和生成的音频之间具有相似的声学特性。
- loss/g/mel:梅尔频谱图损失。该损失衡量生成音频的梅尔频谱图与目标梅尔频谱图之间的差异。值越小,表示频谱特性越匹配。
- loss/g/kl:Kullback-Leibler (KL) 散度损失。此损失衡量编码器和后验编码器生成的潜在变量分布之间的差异。值越低,表示这些分布之间的对齐越好,从而有助于建立更稳定、更可控的模型。
- loss/g/{i}:每个鉴别器输出的单独生成器损失。这些损失提供了生成器在不同时间尺度上性能的更详细细分。
- loss/d_r/{i}:每个鉴别器输出端的真实音频的单个鉴别器损失。这些损失显示了鉴别器在不同尺度上对真实音频的表现。
- loss/d_g/{i}:每个鉴别器输出端生成的音频的单个鉴别器损失。这些损失表明鉴别器在不同时间尺度上区分生成的音频和真实音频的能力。
图片
- slice/mel_org:目标音频片段的梅尔频谱图的可视化。
- slice/mel_gen:生成的音频片段的梅尔频谱图的可视化。
- all/mel:整个目标音频的梅尔频谱图的可视化。
解释
- 总体趋势:寻找生成器总损失(loss/g/total)随时间的下降趋势和鉴别器总损失(loss/d/total)随时间的相对稳定或增加趋势。
- 梯度范数:监控梯度范数以确保它们不会变得过大或过小。
- 损失成分:分析各个损失成分(例如 loss/g/mel,loss/g/kl)以了解模型的特定方面的表现。
- 梅尔声谱图:比较梅尔声谱图图像(slice/mel_org 和 slice/mel_gen)以直观评估生成的音频的质量。
请登录后查看评论内容