什么是Loss
Loss是衡量模型預測值與真實值之間差異的函數。
為什么需要看懂這個東西
對於一個模型的訓練,我們常常會認為只要數據質量好,輪次越高,那么最終得到的模型就會越好,從本篇文章中,你將會對這種認知有所改變。
在許多模型訓練工具中都會内置一個工具,Tensorboard,Tensorboard 是一係列圖表,我們可以在訓練過程中監控模型的進度。
目前許多訓練工具中Tensorboard常常圖標很多,很難理解,接下來我會分析RVC中需要註意的loss曲線進行講解。
如何使用
tensorboard --logdir=logs/xxxxx
如果沒有安裝可使用
pip install tensorboard
看懂圖標
1.一旦 TensorBoard 運行,打開您的網絡瀏覽器並導航到http://localhost:6006(或終端中顯示的地址)。
2.点擊 TensorBoard 中的“標量”選項卡。
3.查找頂部的“g/total”指標來監控您的訓練進度。
![圖片[1]-妙音-RVC音色模型工坊](https://apis.klrvc.com/wp-content/uploads/2025/03/75083427bc20250305120000-1024x752.png)
該圖像提供了在“標量”選項卡中定位“g/total”度量的視覺指南。
小技巧
- 將平滑度設置為 0.950 或 0.987 以更好地查看圖形。
- 您可以点擊:gear: 來標記每 30 秒重新加載數據的選項。
- 每個圖表下方都有 3 個按鈕。第一個按鈕用於將其放大到最大尺寸,第二個按鈕用於停用 Y 軸,最後一個按鈕用於將數據調整到圖表大小。
- 取消選中忽略圖表縮放中的異常值的選項。
最低点
當圖表降到某個点時,這種情況不會再發生。在訓練期間,會有几個低点,你應該測試這些低点,以找到模型的指示 pth,這樣可以防止我們的模型過度訓練。要知道選擇哪一個,我們轉到最低点並查看它有多少步。知道了這一点,我們可以在打開的 cmd 或 colab 筆記本中搜尋具有該步驟的時期或距離保存点最近的時期。
![圖片[2]-妙音-RVC音色模型工坊](https://apis.klrvc.com/wp-content/uploads/2025/03/28b286e90e20250305120217.png)
還需要註意
除了檢查 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)以直觀評估生成的音頻的質量。