? 2024 年 3 月 2 日IMHI 基准测试数据完整发布。
? 2024年2月1日,我们的 MentaLLaMA 论文:“MentaLLaMA: Interpretable Mental Health Analysis on Social Media with Large Language Models” 已被 WWW 2024 接收!
? 2023 年 10 月 31 日,我们发布了 MentaLLaMA-33B-lora 模型,这是基于 Vicuna-33B 和完整 IMHI 数据集的 MentaLLaMA 33B 版本,但由于计算资源的原因使用 LoRA 进行训练!
? 2023 年 10 月 13 日,我们发布了以下数据集的训练数据:DR、dreaddit、SAD、MultiWD 和 IRF。更多精彩敬请期待!
? 2023年10月7日我们的评估论文:“Towards Interpretable Mental Health Analysis with Large Language Models”已被 EMNLP 2023 主会议长论文接收!
该存储库及其内容仅供非临床研究使用。这些材料均不构成实际的诊断或建议,寻求帮助者应获得专业精神科医生或临床医生的帮助。对于预测和解释的准确性、完整性或实用性,不提供任何明示或暗示的保证。作者和贡献者对因使用本文信息而产生的任何错误、遗漏或任何后果不承担任何责任。用户在做出任何临床相关决定之前应自行判断并咨询专业人士。使用此存储库中包含的软件和信息的风险完全由用户自行承担。
构建我们的 IMHI 数据集所收集的原始数据集来自 Reddit 和 Twitter 等公共社交媒体平台,我们严格遵循隐私协议和道德原则,以保护用户隐私并保证在所有与心理健康相关的文本中正确应用匿名。 。此外,为了最大限度地减少误用,我们论文中提供的所有示例都使用适度的伪装方案进行了解释和混淆。
此外,最近的研究表明法学硕士可能会引入一些潜在的偏见,例如性别差距。同时,一些错误的预测结果、不恰当的解释和过度概括也说明了当前LLM的潜在风险。因此,将该模型应用于真实场景的心理健康监测系统仍然存在许多挑战。
通过使用或访问此存储库中的信息,您同意对作者、贡献者以及任何附属组织或个人进行任何和所有索赔或损害的赔偿、辩护并使其免受损害。
该项目展示了我们利用大型语言模型 (LLM) 进行可解释心理健康分析的努力。在早期工作中,我们全面评估了 ChatGPT 和 GPT-4 等最新 LLM 在生成心理健康分析解释方面的零样本/少样本性能。基于这些发现,我们构建了包含 105K 指令样本的可解释心理健康指令 (IMHI) 数据集,这是第一个用于社交媒体上可解释心理健康分析的多任务和多源指令调整数据集。基于 IMHI 数据集,我们提出了 MentaLLaMA,这是第一个用于可解释心理健康分析的开源指令遵循法学硕士。 MentaLLaMA 可以对社交媒体数据进行心理健康分析,并为其预测生成高质量的解释。我们还引入了第一个用于可解释心理健康分析的整体评估基准,包含 19K 测试样本,涵盖 8 个任务和 10 个测试集。我们的贡献体现在这两篇论文中:
MentaLLaMA 论文 |评估论文
我们提供了 MentaLLaMA 论文中评估的 5 个模型检查点:
MentaLLaMA-33B-lora:该模型基于 Vicuna-33B 基础模型和完整的 IMHI 指令调整数据进行微调。训练数据涵盖8项心理健康分析任务。该模型可以按照指令进行准确的心理健康分析并为预测生成高质量的解释。由于计算资源的限制,我们使用PeFT技术LoRA训练MentaLLaMA-33B模型,这显着减少了内存使用。
MentaLLaMA-chat-13B:该模型基于 Meta LLaMA2-chat-13B 基础模型和完整的 IMHI 指令调整数据进行微调。训练数据涵盖8项心理健康分析任务。该模型可以按照指令进行准确的心理健康分析并为预测生成高质量的解释。由于模型大小,推理速度相对较慢。
MentaLLAMA-chat-7B| MentaLLaMA-chat-7B-hf:该模型基于 Meta LLaMA2-chat-7B 基础模型和完整的 IMHI 指令调优数据进行微调。训练数据涵盖8项心理健康分析任务。该模型可以按照说明进行心理健康分析并为预测生成解释。
MentalBART:该模型基于 BART-large 基础模型和完整的 IMHI-completion 数据进行微调。训练数据涵盖8项心理健康分析任务。该模型无法遵循指令,但可以进行心理健康分析并以基于完成的方式生成解释。该模型的尺寸较小,推理速度更快,部署也更容易。
MentalT5:该模型基于T5大型基础模型和完整的IMHI完成数据进行微调。该模型无法遵循指令,但可以进行心理健康分析并以基于完成的方式生成解释。该模型的尺寸较小,推理速度更快,部署也更容易。
您可以在 Python 项目中将 MentaLLaMA 模型与 Hugging Face Transformers 库结合使用。以下是如何加载完全微调的模型的简单示例:
from transformers import LlamaTokenizer , LlamaForCausalLM
tokenizer = LlamaTokenizer . from_pretrained ( MODEL_PATH )
model = LlamaForCausalLM . from_pretrained ( MODEL_PATH , device_map = 'auto' )
在此示例中,LlamaTokenizer 用于加载分词器,LlamaForCausalLM 用于加载模型。 device_map='auto'
参数用于自动使用 GPU(如果可用)。 MODEL_PATH
表示您的模型保存路径。
加载模型后,您可以生成响应。这是一个例子:
prompt = 'Consider this post: "work, it has been a stressful week! hope it gets better." Question: What is the stress cause of this post?'
inputs = tokenizer ( prompt , return_tensors = "pt" )
# Generate
generate_ids = model . generate ( inputs . input_ids , max_length = 2048 )
tokenizer . batch_decode ( generate_ids , skip_special_tokens = True , clean_up_tokenization_spaces = False )[ 0 ]
我们在 MentaLLaMA-chat-13B 上运行这些代码得到以下响应:
Answer: This post shows the stress cause related to work. Reasoning: The post explicitly mentions work as being stressful and expresses a hope that it gets better. This indicates that the poster is experiencing stress in relation to their work, suggesting that work is the primary cause of their stress in this instance.
对于 MentaLLaMA-33B-lora 模型,由于我们的模型是基于 Vicuna-33B 基础模型,因此您需要首先在此处下载 Vicuna-33B 模型,并将其放在./vicuna-33B
目录下。然后下载 MentaLLaMA-33B-lora 权重并将其放在./MentaLLaMA-33B-lora
目录下。
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer
peft_model = AutoPeftModelForCausalLM . from_pretrained ( "./MentaLLaMA-33B-lora" )
tokenizer = AutoTokenizer . from_pretrained ( './MentaLLaMA-33B-lora' )
加载模型后,您可以生成响应。这是一个例子:
input_data = [ "Consider this post: I'm finally dead inside and I don't know how to feel about it Fear, Anger, Sadness... It's all gone. I just feel numb. Question: Does the poster suffer from depression?" ]
inputs = tokenizer ( input_data , return_tensors = "pt" , padding = True )
input_ids = inputs . input_ids
generate_ids = peft_model . generate ( ** inputs , max_length = 2048 )
truc_ids = generate_ids [ 0 ][ len ( input_ids [ 0 ]) :]
response = tokenizer . decode ( truc_ids , skip_special_tokens = True , spaces_between_special_tokens = False )
我们在 MentaLLaMA-33B-lora 上运行这些代码得到以下响应:
Reasoning: Yes, the poster suffers from depression. Reasoning: The poster's statement expresses a sense of emotional numbness and a lack of emotional response. This is a common symptom of depression, as individuals with depression often experience a diminished ability to feel emotions. The poster also mentions feeling dead inside, which further suggests a lack of emotional connection and a sense of hopelessness, both of which are common in depression. Overall, the language used and the description of emotional numbness align with symptoms commonly associated with depression.
我们从涵盖 8 个心理健康分析任务的 10 个现有数据集中收集原始数据,并将其转换为测试数据以进行可解释的心理健康分析。 10个测试集统计如下:
姓名 | 任务 | 数据分割 | 数据来源 | 注解 | 已发布 |
---|---|---|---|---|---|
DR | 抑郁症检测 | 1,003/430/405 | 红迪网 | 弱标签 | 是的 |
中电 | 抑郁症检测 | 456/196/299 | 红迪网 | 人工注释 | 还没有 |
恐怖迪特 | 压力检测 | 2,837/300/414 | 红迪网 | 人工注释 | 是的 |
西南马萨诸塞州 | 精神障碍检测 | 34,822/8,705/10,882 | 红迪网 | 弱标签 | 还没有 |
T-SID | 精神障碍检测 | 3,071/767/959 | 叽叽喳喳 | 弱标签 | 还没有 |
伤心 | 压力原因检测 | 5,547/616/684 | 短信 | 人工注释 | 是的 |
计算机辅助管理系统 | 抑郁/自杀原因检测 | 2,207/320/625 | 红迪网 | 人工注释 | 还没有 |
孤独 | 孤独感检测 | 2,463/527/531 | 红迪网 | 人工注释 | 还没有 |
多轮驱动 | 健康维度检测 | 15,744/1,500/2,441 | 红迪网 | 人工注释 | 是的 |
IRF | 人际风险因素检测 | 3,943/985/2,113 | 红迪网 | 人工注释 | 是的 |
我们推出了 IMHI,这是第一个多任务和多源指令调整数据集,用于社交媒体上可解释的心理健康分析。我们目前发布了以下数据集的训练和评估数据:DR、dreaddit、SAD、MultiWD 和 IRF。指令数据放在下面
/train_data/instruction_data
这些项目很容易理解: query
行表示问题, gpt-3.5-turbo
行表示我们修改和评估的来自 ChatGPT 的预测和解释。 gpt-3.5-turbo
被用作评估的黄金响应。
为了方便对没有指令跟随能力的模型进行训练,我们还发布了 IMHI 完成的部分测试数据。数据放在下面
/train_data/complete_data
文件布局与指令调整数据相同。
我们引入了第一个通过 19K 测试样本进行可解释心理健康分析的整体评估基准。所有测试数据均已发布。指令数据放在下面
/test_data/test_instruction
这些项目很容易理解: query
行表示问题, gpt-3.5-turbo
行表示我们修改和评估的来自 ChatGPT 的预测和解释。 gpt-3.5-turbo
被用作评估的黄金响应。
为了方便对没有指令跟随能力的模型进行测试,我们还发布了部分 IMHI-completion 的测试数据。数据放在下面
/test_data/test_complete
文件布局与指令调整数据相同。
要在 IMHI 基准上评估您训练的模型,请首先加载您的模型并为所有测试项目生成响应。我们使用 Hugging Face Transformers 库来加载模型。对于基于 LLaMA 的模型,您可以使用以下命令生成响应:
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset IMHI --llama --cuda
MODEL_PATH
和OUTPUT_PATH
表示模型保存路径和生成响应的保存路径。所有生成的响应都将放在../model_output
下。一些生成的示例显示在
./examples/response_generation_examples
您还可以使用以下命令使用 IMHI 完成测试集进行评估:
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset IMHI-completion --llama --cuda
您还可以通过删除--llama
参数来加载不基于 LLaMA 的模型。在生成的示例中, goldens
行表示参考解释, generated_text
行表示模型生成的响应。
IMHI 基准的第一个评估指标是评估模型生成的分类正确性。如果您的模型可以生成非常规则的响应,那么基于规则的分类器可以很好地为每个响应分配标签。我们在IMHI.py
中提供了一个基于规则的分类器,您可以通过在命令中添加参数: --rule_calculate
在响应生成过程中使用它。分类器需要以下模板:
[label] Reasoning: [explanation]
然而,由于大多数法学硕士都接受过训练以生成不同的响应,因此基于规则的标签分类器是不切实际的。例如,MentaLLaMA 对于 SAD 查询可以有以下响应:
This post indicates that the poster's sister has tested positive for ovarian cancer and that the family is devastated. This suggests that the cause of stress in this situation is health issues, specifically the sister's diagnosis of ovarian cancer. The post does not mention any other potential stress causes, making health issues the most appropriate label in this case.
为了解决这个问题,在 MentaLLaMA 论文中,我们基于 MentalBERT 训练了 10 个神经网络分类器,每个收集到的原始数据集都有一个分类器。分类器经过训练,可以在给出解释的情况下分配分类标签。我们发布这 10 个分类器,以方便未来对 IMHI 基准的评估。
所有经过训练的模型在 IMHI 测试数据上的准确率均超过 95%。在分配标签之前,请确保已以/exmaples/response_generation_examples
格式传输输出文件并命名为DATASET.csv
。将要标记的所有输出文件放在同一 DATA_PATH 目录下。然后从以下链接下载相应的分类器模型:
模型下载链接:CAMS、CLP、DR、dreaddit、Irf、loneiness、MultiWD、SAD、swmh、t-sid
将所有下载的模型放在 MODEL_PATH 目录下,并用其数据集命名每个模型。例如,DR 数据集的模型应放在/MODEL_PATH/DR
下。现在您可以通过以下命令获取使用这些模型的标签:
cd src
python label_inference.py --model_path MODEL_PATH --data_path DATA_PATH --data_output_path OUTPUT_PATH --cuda
其中MODEL_PATH
、 DATA_PATH
表示您指定的模型和数据目录, OUTPUT_PATH
表示您的输出路径。处理后,输出文件应具有/examples/label_data_examples
中示例的格式。如果您希望计算权重F1分数和准确率等指标,请在上述命令中添加参数--calculate
。
IMHI 基准的第二个评估指标是评估生成的解释的质量。我们的评估论文中的结果表明,BART-score 在 4 个人类评估方面与人类注释具有中等相关性,并且优于其他自动评估指标。因此,我们利用 BART-score 来评估生成的解释的质量。具体来说,您应该首先使用IMHI.py
脚本生成响应并获取响应目录,如examples/response_generation_examples
中所示。首先,下载 BART-score 目录并将其放在/src
下,然后下载 BART-score 检查点。然后使用以下命令通过 BART-score 对您的回答进行评分:
cd src
python score.py --gen_dir_name DIR_NAME --score_method bart_score --cuda
DIR_NAME
表示生成的响应的目录名称,应放在../model_output
下。我们还提供其他评分方法。您可以将--score_method
更改为 'GPT3_score'、'bert_score'、'bleu'、'rouge' 来使用这些指标。对于 GPT-score,您需要首先下载项目并将其放在/src
下。
我们发布对人工智能生成的解释的人工注释,以促进未来的研究,调整自动评估工具以进行可解释的心理健康分析。基于这些人类评估结果,我们测试了各种现有的自动评估指标与人类偏好的相关性。我们的评估论文中的结果表明,BART-score 在所有 4 个方面都与人类注释具有中等程度的相关性。
在我们的评估论文中,我们从四个方面手动标记了 DR 数据集的 AIGC 结果子集:流畅性、完整性、可靠性和整体性。注释在此目录中发布:
/human_evaluation/DR_annotation
我们为抑郁症检测数据集 DR 标记了 163 个 ChatGPT 生成的解释。文件chatgpt_data.csv
包含由 ChatGPT 正确分类的 121 条解释。 chatgpt_false_data.csv
包含 42 个被 ChatGPT 错误分类的解释。我们还在gpt3_data.csv
中包含了由InstructionGPT-3正确分类的 121 个解释。
在我们的 MentaLLaMA 论文中,我们邀请了一位定量心理学专业的领域专家为 350 个选定的帖子(每个原始数据集 35 个帖子)撰写解释。黄金集用于自动准确评估法学硕士的解释生成能力。为了方便未来的研究,我们发布了以下数据集的专家编写的解释:DR、dreaddit、SWMH、T-SID、SAD、CAMS、loneiness、MultiWD 和 IRF(每个数据集 35 个样本)。数据发布在这个目录中:
/human_evaluation/test_instruction_expert
专家编写的解释经过处理后遵循与其他测试数据集相同的格式,以方便模型评估。您可以使用与响应生成类似的命令,根据专家编写的黄金解释来测试您的模型。例如,您可以按如下方式测试基于 LLaMA 的模型:
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset expert --llama --cuda
如果您在评估论文中使用人工注释或分析,请引用:
@inproceedings{yang2023towards,
title={Towards interpretable mental health analysis with large language models},
author={Yang, Kailai and Ji, Shaoxiong and Zhang, Tianlin and Xie, Qianqian and Kuang, Ziyan and Ananiadou, Sophia},
booktitle={Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing},
pages={6056--6077},
year={2023}
}
如果您在工作中使用 MentaLLaMA,请引用:
@article{yang2023 MentalLLaMA ,
title={ MentalLLaMA : Interpretable Mental Health Analysis on Social Media with Large Language Models},
author={Yang, Kailai and Zhang, Tianlin and Kuang, Ziyan and Xie, Qianqian and Ananiadou, Sophia},
journal={arXiv preprint arXiv:2309.13567},
year={2023}
}
MentaLLaMA 已获得 [MIT] 许可。请在 MIT 文件中找到更多详细信息。