評估結果如下,這是按照生成的數據進行訓練並進行測試給出的結果:

- precision recall f1-score support
喜悅 0.79 1.00 0.88 11
悲傷 0.44 1.00 0.62 8
憤怒 1.00 0.40 0.57 10
恐懼 1.00 0.11 0.20 9 ← 幾乎全错
驚訝 0.75 0.75 0.75 8
厭惡 0.83 0.62 0.71 8
macro avg 0.80 0.65 0.62 54

下面是評估結論

指標 結果 lab目標 達標
Macro F1 0.62 ≥0.75
Accuracy 0.65 ≥0.80
推理延遲中位數 178ms ≤500ms
最容易混淆 恐懼 ↔ 悲傷(5 次)

之前的版本使用訓練樣本進行測試是 1.0,而這次將訓練跟測試樣本完全拆開來進行測試,則問題很清晰:

  1. 召回嚴重失衡:恐懼 recall 只有 0.11(9 條只對 1 條)、憤怒 0.40。但這兩個的 precision 都 = 1.0,代表模型極少預測這兩類,一旦預測就對。
  2. 悲傷 成了"垃圾桶":recall 1.0 但 precision 僅 0.44,意味著大量本該是恐懼/憤怒的負面句被模型甩給了“悲傷”,這跟「恐懼↔悲傷 混淆 5 次」完全吻合。

本質是欠擬合:訓練集只有 212 條(Kimi 中途 429 沒湊夠 500)、每類 ~35 條、只訓 3 epoch,模型沒學夠區分負面情緒的細微差別。


針對這個問題,進行了參數的修正將訓練强度從 epoch 3→6,LoRA r 8→16/32,調整了超參數再訓練,結果電腦死機了,畫面出現閃爍光電,後來又再次下降 epoll,最終調整如下:

安全版超參建議:

項目 崩潰版 安全版
batch size 4 2(靠梯度累積補等效 batch,峰值顯存減半)
epoch 6 4
LoRA r / 模組 16 / q,k,v,o 維持 16 / q,k,v,o(佔用增加有限,保留效果)
max-seq-len 256 256(或降 192 更穩)

這樣保留"提升 F1"的關鍵改動(更高 rank + 更多模組),然後把 GPU 壓力壓下來。當然如果想再穩定些,可以改使用 Qwen2.5-0.5B,這樣 8G vram 跑起來就不至於過負載。


這次測試下來電腦沒問題(顯存問題解決了),但結果并不理想,如下:

- precision recall f1-score support
喜悅 0.92 1.00 0.96 11
悲傷 1.00 0.75 0.86 8
憤怒 0.00 0.00 0.00 10 ← 整類崩潰
恐懼 0.67 0.89 0.76 9
驚訝 0.67 0.25 0.36 8
厭惡 0.33 0.88 0.48 8
macro avg 0.60 0.63 0.57 54

評估結果:

||首輪(r8/3ep)|安全版(r16/4ep)|
|---|---|---|
|Macro F1|0.62|0.57(沒升反降)|
|崩潰的類別|恐懼(recall0.11)|憤怒(recall0)|
|最混淆對|恐懼↔悲傷|憤怒↔厭惡|

大概知道了,關鍵判斷問題在於瓶頸不是超參,而是資料量

兩次崩潰的是不同的類別(先是恐懼,現在是憤怒),而且都是"某個負面情緒整片倒向另一個相近情緒"。加大 r、加模組、加 epoch 並沒有讓 F1 變好,只是換了一個類別崩掉

說明了每類訓練樣本只有 ~35 條、test 測試集每類 8-10 條,模型學不穩相近負面情緒的邊界(憤怒/厭惡、恐懼/悲傷),而且 54 條小測試集本身噪聲極大(一個類全錯 macro 就掉 ~10%)。 **調超參在 212 個資料上只是在搬運誤差。

無標籤

關注作者:

新增評論