2026-09-24 12 min read -- 次瀏覽

微調資料品質管控:先質檢,再訓練

數量、品質、分佈、去重、驗證五件事,讓你的微調不會輸在起跑線。

資料工程 資料集微調品質 問小墨這篇的內容
資料集品質控管示意
微調成敗七成在資料,不在那些參數。

📌 本篇文章重點

  • 微調前半段功力在資料:數量、品質、分佈、去重、驗證五件事。
  • 「去重」常被忽略,卻最影響模型不亂記。
  • 用腳本把長度、標籤、語言的統計拉出來,再靠眼睛抽查樣本。
  • 留一份「驗證集」,防微調把模型調壞。

一、為什麼這篇值得看?

許多人微調失敗,不是參數錯,而是資料是「垃圾進」——重複、錯誤、分佈失衡、指令格式不一。這篇教你像「資料工程師」一樣看待資料:先質檢,再訓練。

二、核心概念,3 分鐘搞懂

微調的五個「資料抓手」:

  • 數量:夠不代表好,但太少一定學不動。
  • 品質:錯誤標註如毒藥,會被模型內化。
  • 分佈:類別失衡會讓模型偏科。
  • 去重:重複樣本會被重複教育,造成過擬合。
  • 驗證:沒留驗證集,壞了也不知道。

💡 一句話總結

先讓資料「健康」,再讓模型「聰明」——順序不能反。

三、動手實作:3 步做資料健檢

Step 1

用統計清點「分佈」

Python
import pandas as pd
df = pd.read_json("train.jsonl", lines=True)
print(df["category"].value_counts())            # 類別分佈
print(df["instruction"].str.len().describe())   # 長度
print(df["output"].isna().sum())                # 缺漏值

看到「某類只有 3 筆」或「instruction 全長 5000 字」,就該先補資料,不是先開訓練。

Step 2

去重與衝突清洗

Python
# 1. 完全相同:直接 drop_duplicates
df = df.drop_duplicates(subset=["instruction"])

# 2. 近乎相同:用 embedding 距離去挑
#    同一指令但輸出互相矛盾 → 人工決策
for pair in near_dupes(df, threshold=0.95):
    resolve(pair)   # 保留品質高的那筆

⚠️ 隱形殺手

「同題不同答」的矛盾樣本會教模型「搖擺」。清洗時把這類剔掉或統一。

Step 3

抽樣目視 + 切驗證集

  • 隨機抽 30–50 筆逐一目視:錯字、答非所問、格式不一致,標出來。
  • 把乾淨資料切片成 train / eval(9:1,且 eval 不重複進 train)。
  • 訓練後用 eval 跑一次,對比微調前的分數,看一般能力是否有退化。

四、常見髒資料與對策

髒資料後果對策
重複樣本過擬合去重(字串+向量)
標註錯誤學錯內容抽樣人工覆蓋
類別失衡偏科重採樣/補樣本
格式不統一輸出亂跳正規化為同一模板
過長過短注意力被稀釋長度上下限截斷

五、常見問題(FAQ)

Q1幾筆才算「夠」?

風格/語氣微調,100–300 筆高品質就夠;要學「能力」,通常要幾千筆以上。先小量驗證方向,再加量。

Q2驗證集該放多少量?

10% 或至少 30–50 筆。太少看不出是否退化,太多又佔掉訓練量。

Q3AI 標註資料可以嗎?

可以當草稿,但高風險場景務必人工覆蓋。錯誤樣本的學習效果是「負面的」。

總結

微調成功的 70% 在資料:統計清點 → 去重清洗 → 抽樣目視+切驗證。資料健康了,那些學習率、epoch 才能真正發揮。先學「資料工程」,再談「模型工程」。

問小墨 AI