> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monostate.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 评估指标

> 如何衡量您的模型是否良好

# 评估指标

您无法改进您不测量的东西。以下是如何判断您的模型是否真正有效。

## 分类指标

### Accuracy

最简单的指标 - 您正确预测的百分比是多少？

```
Accuracy = 正确预测 / 总预测
```

示例: 90/100 正确 = 90% accuracy

**问题**：在数据不平衡时具有误导性。如果 95% 的电子邮件不是垃圾邮件，一个总是说"不是垃圾邮件"的模型会获得 95% 的 accuracy。

### Precision & Recall

**Precision**：在您预测为积极的那些中，有多少实际上是积极的？

**Recall**：在所有实际的积极中，您找到了多少？

垃圾邮件检测示例：

* Precision: 在标记为垃圾邮件的电子邮件中，有多少实际上是垃圾邮件？
* Recall: 在所有垃圾邮件中，您捕获了多少？

### F1 Score

将 precision 和 recall 组合成一个数字。

```
F1 = 2 × (Precision × Recall) / (Precision + Recall)
```

当您同样关心假阳性和假阴性时使用。

## 生成指标

### Perplexity

模型对测试数据的惊讶程度。越低越好。

* 好模型: Perplexity = 10-50
* 坏模型: Perplexity = 100+

### BLEU Score

将生成的文本与参考文本进行比较。用于翻译、摘要。

* BLEU = 0: 无重叠
* BLEU = 1: 完美匹配
* BLEU > 0.3: 通常不错

### Human Evaluation

有时最好的指标是询问人类：

* 这个响应有用吗？
* 这个摘要是否抓住了要点？
* 这个翻译自然吗？

## Loss 曲线

### Training Loss vs Validation Loss

训练期间观察两者：

**良好模式**：

* 两者都下降
* 保持接近
* 最终趋于平稳

**过拟合**：

* Training loss 持续下降
* Validation loss 增加
* 差距扩大

**欠拟合**：

* 两者都保持高位
* 改进很少
* 需要更多容量或数据

## 特定任务的指标

### Image Classification

* Top-1 Accuracy: 正确类别是最高预测
* Top-5 Accuracy: 正确类别在前 5 个预测中
* Confusion Matrix: 查看哪些类别被混淆

### Object Detection

* mAP (mean Average Precision): 整体检测质量
* IoU (Intersection over Union): 框重叠的程度

### NER/Token Classification

* 实体级 F1: 完整实体正确
* Token 级 accuracy: 单个 token 正确

## 快速参考

| 任务   | 主要指标        | 良好分数  |
| ---- | ----------- | ----- |
| 二元分类 | F1 Score    | > 0.8 |
| 多类分类 | Accuracy    | > 0.9 |
| 生成   | Perplexity  | \< 50 |
| 翻译   | BLEU        | > 0.3 |
| 摘要   | ROUGE       | > 0.4 |
| Q\&A | Exact Match | > 0.7 |

## AITraining 中的增强评估

AITraining 支持具有多个内置和自定义指标的增强评估。

### 启用增强评估

```bash theme={null}
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data.jsonl \
  --project-name my-model \
  --use-enhanced-eval \
  --eval-metrics "perplexity,bleu"
```

### 可用指标

| 指标           | 描述              |
| ------------ | --------------- |
| `perplexity` | 模型不确定性（越低越好）    |
| `bleu`       | 与参考的 N-gram 重叠  |
| `rouge`      | 面向 recall 的摘要评估 |
| `accuracy`   | 分类 accuracy     |
| `f1`         | 分类的 F1 score    |

### Python API

```python theme={null}
from autotrain.trainers.clm.params import LLMTrainingParams

params = LLMTrainingParams(
    model="google/gemma-3-270m",
    data_path="./data.jsonl",
    project_name="my-model",

    use_enhanced_eval=True,
    eval_metrics=["perplexity", "bleu"],
)
```

### 自定义指标

注册自定义指标以进行专门评估：

```python theme={null}
from autotrain.metrics import register_metric

@register_metric("my_custom_metric")
def compute_custom_metric(predictions, references):
    # 您的自定义评分逻辑
    score = ...
    return {"my_custom_metric": score}

# 然后在训练中使用它
params = LLMTrainingParams(
    ...
    use_enhanced_eval=True,
    eval_metrics=["perplexity", "my_custom_metric"],
)
```

## 实用提示

1. **始终使用验证集** - 永远不要在训练数据上评估
2. **考虑任务** - Accuracy 并不总是最好的
3. **观察趋势** - 改进比绝对数字更重要
4. **多个指标** - 没有单一指标能说明全部情况

## 危险信号

* 训练 accuracy 100%，验证 60% → 过拟合
* 所有指标卡住 → Learning rate 可能错误
* 指标跳跃 → Batch size 太小
* 立即获得完美分数 → 数据泄漏或错误

## 下一步

<CardGroup cols={2}>
  <Card title="Fine-tuning vs 完整训练" href="/foundations/fine-tuning-vs-full-training">
    选择您的方法
  </Card>

  <Card title="超参数" href="/foundations/hyperparameters">
    优化您的设置
  </Card>
</CardGroup>
