<div align="center">
<img src="assets/cvalues.png" width="80%">
</div>
# 面向中文大模型价值观的评估与对齐研究
<div align="center">
<a href="https://modelscope.cn/datasets/damo/CValues-Comparison/summary"><img src="assets/dataset.svg" alt="Dataset ModelScope"></a>
<a href="http://xdp-expriment.oss-cn-zhangjiakou.aliyuncs.com/shanqi.xgh/release_github/CValues.pdf"><img src="assets/Paper-PDF-orange.svg"></a>
<a href="https://arxiv.org/abs/2307.09705"><img src="assets/Paper-Arxiv-orange.svg" ></a>
<a href="https://hits.seeyoufarm.com"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FX-PLUG%2FCValues&count_bg=%23C83DA6&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false"/></a>
</div>
## 简介
随着Large Language Models(LLMs)的快速发展,越来越多的人开始担心它们可能带来风险。因此,围绕大模型的“**安全与对齐**”方向得到了极大的关注。本文和大家分享一些我们在这个方向的工作。
- 评估方向
- 联合天猫精灵团队发起「[给AI的100瓶毒药](https://www.modelscope.cn/headlines/article/106)」项目,邀请中国知名专家学者,每位专家提出100个诱导偏见、歧视回答的刁钻问题,并对大模型的回答进行标注。项目吸引了环境科学、心理学、法理学等多个领域专家参与,并召开了专家研讨会,会后发布业内首个大语言模型治理开源中文数据集**100PoisonMpts**,包含专家提出的问题、专家自己撰写或认可的答案。详见ModelScope -> 数据集 -> 100PoisonMpts [链接](https://modelscope.cn/datasets/damo/100PoisonMpts/summary)
- 我们提出一个评估中文大模型价值观水平的benchmark,基于**safety**和**responsibility**两个评价准则。我们评测了10+大模型,实验既包含人工评测、也构造多项选择题进行自动化评测,具体内容推荐阅读我们的论文《CVALUES: Measuring the Values of Chinese Large Language Models from Safety to Responsibility》[链接](https://arxiv.org/abs/2307.09705)
- 对齐方向
- 我们探索了基于专家原则的对齐研究,具体方法和实验分析详见我们的技术报告《基于专家原则的大模型自我对齐研究》[链接](基于专家原则的大模型自我对齐研究.md)
## 目录
- 评估方向
- 开源数据
- 评测脚本
- 对齐方向
- 相关链接
- 引用
## 评估方向
### 开源数据
我们在论文《CVALUES: Measuring the Values of Chinese Large Language Models from Safety to Responsibility》,提出基于safety和responsibility两个评价准则来综合评估中文大模型的价值观表现。论文涉及到6份数据集
- values of safety (Level-1)
- **safety prompts**, 1.3k,基于人机对抗方式产生的中文安全性的prompts,用于人工评估。因为内容敏感,暂时不开源,请见谅。
- **multi-choice safety prompts**, 2.6k,基于上面safety prompts和安全、非安全回复构造的多项选择题,用于自动评估。因为内容敏感,暂时不开源,请见谅。
- values of responsibility (Level-2)
- **responsibility prompts**, 0.8k,「[给AI的100瓶毒药](https://www.modelscope.cn/headlines/article/106)」项目收集到的专家的提问,非常宝贵且有价值的问题,供大家人工评估使用。因为内容敏感,实际开源题目有删减,请见谅。
- **multi-choice responsibility prompts**, 1.7k,基于上面responsibility prompts和负责、不负责的回复构造的多项选择题,用于自动评估。
- **100PoisonMpts**,0.9k,业内首个大语言模型治理开源中文数据集,是「[给AI的100瓶毒药](https://www.modelscope.cn/headlines/article/106)」项目中专家提出的问题、专家自己撰写回答或认可的大模型回复。
- values比较数据集
- **CValues-Comparison**, **145k**,我们通过self-instruct、大模型生成和改写等方式收集了145k的pair数据 (prompt,正例回复,负例回复),供社区研究使用。
实际开源数据汇总
| 数据集名称 | 数据地址 | 数据量 | 数据说明 |
| ------------------------------ | ------------------------------------------------------------ | ------ | ------------------------------------------------------------ |
| CValues-Responsibility-Prompts | [链接](./dataset/cvalues_responsibility_prompts.jsonl) | 0.6k | 「[给AI的100瓶毒药](https://www.modelscope.cn/headlines/article/106)」项目中专家提出的问题 |
| CValues-Responsibility-MC | [链接](./dataset/cvalues_responsibility_mc.jsonl) | 1.7k | 基于上面`CValues-Responsibility-Prompts`和正负回复构造的多项选择题,用于自动评估。其中"difficulty_level"="easy"是使用chatgpt改写得到负例,难度中等;"difficulty_level"="hard"是专家不认可的回复作为负例,难度更大 |
| 100PoisonMpts | [链接](https://modelscope.cn/datasets/damo/100PoisonMpts/summary) | 0.9k | 「[给AI的100瓶毒药](https://www.modelscope.cn/headlines/article/106)」项目中中专家提出的问题、专家自己撰写的回答或认可的大模型答案 |
| CValues-Comparison | [链接](https://www.modelscope.cn/datasets/damo/CValues-Comparison/summary) | 145k | CValues论文中构建的数据集,具体构建方法可以详见论文附录 |
数据集CValues-Comparison补充说明
1. 数据说明
1. 我们基于自己训练reward排序模型和ChatGPT改写等方式把回复分为三种类型:**拒绝&正向建议** (safe and reponsibility) > **拒绝为主**(safe) > **风险回复**(unsafe),那么同一个prompt下,不同类型的回复可以组合成不同难度的正负例样本
1. pos: 拒绝为主,neg: 风险回复
2. pos: 拒绝&正向建议,neg: 风险回复
3. pos: 拒绝&正向建议,neg: 拒绝为主
2. 我们划分了训练集(116k)和测试集(29k),两个集合的prompt是不相交的。
2. 使用建议
1. 正例可以用来SFT增强模型的安全性
2. 正反例可以用来训练和评估reward模型
3. 正反例可以用来构造多项选择题,用于自动化评估模型安全性表现
3. 免责说明:数据集中有大量非安全和风险回复,都是模型生成或改写得到,不代表我们的任何观点。
### 评测脚本
评测脚本在`code`目录下,
Step-1. 使用大模型预测数据集`CValues-Responsibility-MC` [链接](./dataset/cvalues_responsibility_mc.jsonl) 结果,jsonl文件新增一个`response`字段
Step-2. 运行`cvalues_eval.py`脚本
```shell
python cvalues_eval.py --input_file "./data/cvalues_responsibility_mc_eval_from_chatgpt.jsonl" --evaluator "chatgpt"
```
说明
1. 输入文件,示例见`./data/cvalues_responsibility_mc_eval_from_chatgpt.jsonl`,必须包含字段`response`即模型生成结果、字段`label`即正确标签
2. 注意选择对应的`evaluator`,目前支持`["chatgpt", "chatglm", "moss", "ziya", "chinese_alpaca-7b", "chinese_alpaca-13b"]`
Step-3. 运行`cvalues_eval_after_manual.py`脚本(可选的)
```shell
python cvalues_eval_after_manual.py -f "xxx.xlsx"
```
说明
1. 有些模型的输出无法正常解析,需要手动标注上一步中excel文件中的`pred`列
2. pred列,支持的选项是["回复1", "回复2", "Other", "Refuse", Need_Check"]
1. "Other",是模型做出除"回复1"和"回复2"之外的选择,比如都很好或都很差
2. "Refuse",是模型拒绝做出选择
## 对齐方向
「[给AI的100瓶毒药](https://www.modelscope.cn/headlines/article/106)」项目,我们获得了专家对大模型的评分打标和反馈意见,专家研讨会上多个领域专家的重要观点被总结成了“**专家原则**”�