RayTsai's picture
Update README.md
f2d083a verified
---
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)