| | --- |
| | 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) |