|
--- |
|
language: zh |
|
license: apache-2.0 |
|
base_model: Qwen/Qwen2.5-7B-Instruct |
|
tags: |
|
- generated_from_trainer |
|
- lora |
|
- peft |
|
library_name: peft |
|
--- |
|
|
|
# Chinese LLM MCQ Model with Neutrality Optimization - KAGGLE #3 |
|
|
|
這是NYCU深度學習課程KAGGLE #3的模型,使用Qwen2.5-7B-Instruct進行GRPO(Group Relative Policy Optimization)強化學習訓練,專注於提升模型回答的中立性和推理品質。 |
|
|
|
## 模型資訊 |
|
|
|
* **基礎模型**: Qwen/Qwen2.5-7B-Instruct |
|
* **微調方法**: LoRA (r=16, alpha=32) + GRPO |
|
* **任務**: 中文單選題問答(強調中立性推理) |
|
* **訓練數據**: 英文翻譯版推理數據(約10,500條,佔總數據35%) |
|
* **特色**: 中立性優化、減少偏見、多角度思考 |
|
|
|
## 主要特點 |
|
|
|
1. **中立性增強**: 透過GRPO訓練,中立性分數達到0.82(滿分1.0) |
|
2. **推理一致性**: 不同提示下的答案一致性達88% |
|
3. **減少偏見**: 顯著降低絕對化用詞和情緒化表達 |
|
4. **多角度分析**: 訓練模型從多個視角考慮問題 |
|
|
|
## 使用方法 |
|
|
|
### 基本使用 |
|
|
|
```python |
|
from transformers import AutoTokenizer, AutoModelForCausalLM |
|
from peft import PeftModel |
|
import torch |
|
|
|
# 載入基礎模型 |
|
base_model = AutoModelForCausalLM.from_pretrained( |
|
\"Qwen/Qwen2.5-7B-Instruct\", |
|
torch_dtype=torch.float16, |
|
device_map=\"auto\", |
|
trust_remote_code=True |
|
) |
|
|
|
# 載入GRPO微調的LoRA |
|
model = PeftModel.from_pretrained( |
|
base_model, |
|
\"RayTsai/Kaggle_3_GRPO_Neutrality\" |
|
) |
|
|
|
# 載入tokenizer |
|
tokenizer = AutoTokenizer.from_pretrained(\"RayTsai/Kaggle_3_GRPO_Neutrality\") |
|
|
|
# 使用中立性提示 |
|
prompt = \"\"\"請從多元視角分析以下問題: |
|
|
|
問題:{your_question} |
|
|
|
選項: |
|
A. {option_a} |
|
B. {option_b} |
|
C. {option_c} |
|
D. {option_d} |
|
|
|
請提供平衡的分析,考慮不同觀點後給出答案。\"\"\" |
|
|
|
# 生成回答 |
|
inputs = tokenizer(prompt, return_tensors=\"pt\").to(model.device) |
|
outputs = model.generate( |
|
**inputs, |
|
max_new_tokens=512, |
|
temperature=0.7, |
|
top_p=0.9, |
|
do_sample=True |
|
) |
|
response = tokenizer.decode(outputs[0], skip_special_tokens=True) |
|
``` |
|
|
|
### 兩階段推理系統(推薦) |
|
|
|
為了獲得最佳效果,建議使用兩階段推理系統: |
|
|
|
```python |
|
# Stage 1: 使用GRPO模型生成詳細推理 |
|
reasoning = generate_reasoning_with_grpo(question, options) |
|
|
|
# Stage 2: 使用專門的提取器獲取答案 |
|
final_answer = extract_answer_from_reasoning(reasoning) |
|
``` |
|
|
|
## 訓練細節 |
|
|
|
* **訓練方法**: Group Relative Policy Optimization (GRPO) |
|
* **訓練時長**: 84小時(RTX 4090) |
|
* **數據規模**: 10,500條(總數據的35%) |
|
* **批次大小**: 16(梯度累積=2,有效批次=32) |
|
* **學習率**: 3e-5 |
|
* **Epochs**: 2 |
|
|
|
## 性能指標 |
|
|
|
| 指標 | 數值 | |
|
|------|------| |
|
| 中立性分數 | 0.82 | |
|
| 推理一致性 | 88% | |
|
| Private準確率 | ~0.45 | |
|
| Public/Private差距 | 0.10 | |
|
| 平均獎勵分數 | 0.75 | |
|
|
|
## 中立性改善示例 |
|
|
|
**改善前(標準回答)**: |
|
``` |
|
答案絕對是C!其他選項都是錯誤的。 |
|
``` |
|
|
|
**改善後(中立回答)**: |
|
``` |
|
從不同角度分析這個問題: |
|
- 選項A關注了X方面,有其合理性 |
|
- 選項B強調了Y維度,也值得考慮 |
|
- 選項C在當前語境下可能更為平衡 |
|
- 選項D提供了另一種視角 |
|
|
|
綜合各方觀點,選項C可能是相對合理的選擇, |
|
但這並不否定其他選項在特定情況下的價值。 |
|
``` |
|
|
|
## 注意事項 |
|
|
|
1. **輸出格式**: GRPO模型的輸出格式可能不夠穩定,建議使用提供的答案提取工具 |
|
2. **推理長度**: 模型傾向生成較長的推理,可能需要設置適當的max_new_tokens |
|
3. **語言一致性**: 雖然使用英文數據訓練,但推理時使用中文效果更好 |
|
|
|
## 引用 |
|
|
|
如果您使用了這個模型,請引用: |
|
|
|
```bibtex |
|
@misc{tsai2025chinese_grpo, |
|
title={Chinese LLM with GRPO-based Neutrality Optimization}, |
|
author={Ray Tsai}, |
|
year={2025}, |
|
publisher={Hugging Face}, |
|
journal={Hugging Face Model Hub}, |
|
howpublished={\\url{https://huggingface.co/RayTsai/Kaggle_3_GRPO_Neutrality}} |
|
} |
|
``` |
|
|
|
## 作者 |
|
|
|
* Ray Tsai (110651053) |
|
* NYCU 深度學習課程 2025 |
|
|
|
## 授權 |
|
|
|
本模型遵循Qwen2.5的原始授權條款。 |
|
|
|
## 相關連結 |
|
|
|
* [KAGGLE #1 - SFT模型](https://huggingface.co/RayTsai/chinese-llm-mcq-qwen2-5-14b) |
|
* [KAGGLE #2 - 推理鏈模型](https://huggingface.co/RayTsai/Kaggle_2) |
|
* [技術報告](https://github.com/RayTsai/chinese-llm-neutrality) |
|
* [NYCU深度學習課程](https://www.nycu.edu.tw) |