MentalLLaMA

MentalLLaMA

开源大语言模型助力社交媒体上的可解释心理健康分析

MentalLLaMA项目开发了基于IMHI数据集的开源指令型大语言模型,用于社交媒体数据的心理健康分析。该模型能生成高质量解释,提高分析结果的可解释性。项目还提供了涵盖8个任务和10个测试集的全面评估基准。MentalLLaMA为心理健康监测和研究领域带来新的分析工具和方法。

MentaLLaMA大语言模型心理健康分析社交媒体可解释性Github开源项目
<p align="center" width="100%"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/2562866d-f81f-4da2-b67c-dcc7c6812014.png" width="100%" height="100%"> </p> <div> <div align="left"> <a href='https://stevekgyang.github.io/' target='_blank'>杨凯来<sup>1,2</sup>&emsp; <a href='https://www.zhangtianlin.top/' target='_blank'>张天林<sup>1,2</sup>&emsp; <a target='_blank'>季绍雄<sup>3</sup></a>&emsp; <a target='_blank'>谢倩倩<sup>1,2</sup></a>&emsp; <a target='_blank'>匡紫燕<sup>6</sup></a>&emsp; <a href='https://research.manchester.ac.uk/en/persons/sophia.ananiadou' target='_blank'>Sophia Ananiadou<sup>1,2,4</sup></a>&emsp; <a target='_blank'>黄继民<sup>5</sup></a> </div> <div> <div align="left"> <sup>1</sup>国家文本挖掘中心&emsp; <sup>2</sup>曼彻斯特大学&emsp; <sup>3</sup>赫尔辛基大学&emsp; <sup>4</sup>产业技术综合研究所人工智能研究中心&emsp; <sup>5</sup>武汉大学&emsp; <sup>6</sup>江西师范大学&emsp; </div> <div align="left"> <img src='https://yellow-cdn.veclightyear.com/ab5030c0/9b67ff20-481f-4f06-adba-2229f172b056.png' alt='NaCTeM' height='85px'>&emsp; <img src='https://yellow-cdn.veclightyear.com/ab5030c0/8c4e3633-8ae8-4a12-84f2-9280a062dd15.png' alt='UoM University Logo' height='85px'>&emsp; <img src='https://yellow-cdn.veclightyear.com/ab5030c0/88b86783-bd09-437f-8d22-5c446b8337de.jpg' alt='helsinki Logo' height='85px'>&emsp; <img src='https://yellow-cdn.veclightyear.com/ab5030c0/6fcbe397-52a2-44b7-9cba-5a43f4519b12.png' alt='airc Logo' height='85px'>&emsp; <img src='https://yellow-cdn.veclightyear.com/ab5030c0/685b6285-788f-41a7-b251-0edffde1395c.png' alt='Wuhan University Logo' height='85px'> </div>

新闻

📢 2024年3月2日 IMHI基准测试数据全面发布。

📢 2024年2月1日 我们的MentaLLaMA论文: "MentaLLaMA:使用大型语言模型对社交媒体进行可解释的心理健康分析"已被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日 我们的评估论文: "使用大型语言模型进行可解释的心理健康分析"已被EMNLP 2023主会议接收为长篇论文!

伦理考虑

本仓库及其内容仅供非临床研究使用。所有材料均不构成实际诊断或建议,寻求帮助者应从专业精神病学家或临床从业者处获得帮助。对于预测和解释的准确性、完整性或实用性,我们不提供任何明示或暗示的保证。作者和贡献者对使用本文信息而产生的任何错误、遗漏或后果不承担责任。用户在做出任何与临床相关的决定之前,应自行判断并咨询专业人士。使用本仓库中的软件和信息的风险完全由用户自行承担。

用于构建我们IMHI数据集的原始数据集来自Reddit和Twitter等公共社交媒体平台,我们严格遵守隐私协议和道德原则,以保护用户隐私,并确保所有与心理健康相关的文本均适当匿名化。此外,为了最大限度地减少滥用,我们论文中提供的所有示例都使用适度的伪装方案进行了改写和模糊处理。

此外,最近的研究表明,大型语言模型可能会引入一些潜在的偏见,如性别差距。同时,一些错误的预测结果、不恰当的解释和过度概括也说明了当前大型语言模型的潜在风险。因此,将模型应用于实际场景的心理健康监测系统仍面临诸多挑战。

使用或访问本仓库中的信息即表示您同意对作者、贡献者以及任何相关组织或个人因任何索赔或损害进行赔偿、辩护并使其免受损害。

简介

本项目展示了我们在使用大型语言模型(LLMs)进行可解释心理健康分析方面的努力。在早期工作中,我们全面评估了ChatGPT和GPT-4等最新LLMs在生成心理健康分析解释方面的零样本/少样本性能。基于这些发现,我们构建了包含105K指令样本的可解释心理健康指令(IMHI)数据集,这是第一个用于社交媒体可解释心理健康分析的多任务和多源指令调优数据集。基于IMHI数据集,我们提出了MentaLLaMA,这是第一个用于可解释心理健康分析的开源指令跟随LLM。MentaLLaMA可以对社交媒体数据进行心理健康分析,并为其预测生成高质量的解释。我们还引入了第一个全面的可解释心理健康分析评估基准,包含19K测试样本,涵盖8个任务和10个测试集。我们的贡献在以下两篇论文中呈现:

MentaLLaMA论文 | 评估论文

MentaLLaMA模型

我们提供了5个在MentaLLaMA论文中评估的模型检查点:

  • MentaLLaMA-33B-lora:这个模型基于Vicuna-33B基础模型和完整的IMHI指令调优数据进行微调。训练数据涵盖8个心理健康分析任务。该模型可以遵循指令进行准确的心理健康分析,并为预测生成高质量的解释。由于计算资源的限制,我们使用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-large基础模型和完整的IMHI-completion数据进行微调。该模型不能遵循指令,但可以以补全的方式进行心理健康分析并生成解释。这个模型的较小尺寸允许更快的推理和更容易的部署。

你可以使用Hugging Face Transformers库在你的Python项目中使用MentaLLaMA模型。以下是如何加载完全微调模型的简单示例:

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可用时自动使用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上运行这些代码得到以下响应:

回答:这篇帖子显示的压力原因与工作有关。推理:帖子明确提到工作是压力源,并表达了希望情况好转的愿望。这表明发帖者正在经历与工作相关的压力,说明在这种情况下工作是他们压力的主要原因。

对于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 = ["考虑这个帖子:我终于内心死掉了,我不知道该如何感受恐惧、愤怒、悲伤...都消失了。我只感到麻木。问题:发帖人是否患有抑郁症?"] 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上运行这些代码得到以下响应:

推理:是的,发帖人患有抑郁症。推理:发帖人的陈述表达了一种情感麻木和缺乏情感反应的感觉。这是抑郁症的常见症状,因为患有抑郁症的个体通常会经历情感感受能力的减弱。发帖人还提到感觉内心死掉,这进一步表明缺乏情感联系和绝望感,这两者在抑郁症中都很常见。总的来说,使用的语言和对情感麻木的描述与抑郁症常见的症状相符。

IMHI数据集

我们从10个现有数据集中收集原始数据,涵盖8个心理健康分析任务,并将它们转换为可解释心理健康分析的测试数据。10个测试集的统计信息如下:

名称任务数据分割数据来源标注是否发布
DR抑郁检测1,003/430/405Reddit弱标签
CLP抑郁检测456/196/299Reddit人工标注尚未
dreaddit压力检测2,837/300/414Reddit人工标注
SWMH心理障碍检测34,822/8,705/10,882Reddit弱标签尚未
T-SID心理障碍检测3,071/767/959Twitter弱标签尚未
SAD压力原因检测5,547/616/684SMS人工标注
CAMS抑郁/自杀原因检测2,207/320/625Reddit人工标注尚未
loneliness孤独检测2,463/527/531Reddit人工标注尚未
MultiWD健康维度检测15,744/1,500/2,441Reddit人工标注
IRF人际风险因素检测3,943/985/2,113Reddit人工标注

训练数据

我们介绍了IMHI,这是第一个用于社交媒体上可解释心理健康分析的多任务和多源指令调优数据集。 我们目前发布了以下数据集的训练和评估数据:DR、dreaddit、SAD、MultiWD和IRF。指令数据位于

/train_data/instruction_data

这些项目很容易理解:query行表示问题,gpt-3.5-turbo行表示我们修改和评估的ChatGPT预测和解释。gpt-3.5-turbo被用作评估的黄金响应。

为了便于在没有指令跟随能力的模型上进行训练,我们还发布了部分IMHI-completion的测试数据。数据位于

/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_PATHOUTPUT_PATH分别表示模型保存路径和生成响应的保存路径。所有生成的响应将被放在../model_output下。一些生成的示例显示在

./examples/response_generation_examples

你也可以使用以下命令在IMHI-completion测试集上进行评估:

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来使用它。分类器需要以下模板:

[标签] 推理: [解释]

然而,由于大多数LLM都经过训练以生成多样化的响应,基于规则的标签分类器是不切实际的。例如,MentaLLaMA对SAD查询可能会有以下响应:

这篇帖子表明,发帖人的姐姐被诊断出患有卵巢癌,全家人都非常沮丧。这表明在这种情况下压力的原因是健康问题,具体是姐姐被诊断出患有卵巢癌。帖子没有提到任何其他潜在的压力原因,因此在这种情况下,健康问题是最合适的标签。

为了解决这个问题,在我们的MentaLLaMA论文中,我们基于MentalBERT训练了10个神经网络分类器,每个收集的原始数据集对应一个。这些分类器被训练用于根据解释分配分类标签。我们发布这10个分类器以便于未来在IMHI基准上进行评估。

所有训练的模型在IMHI测试数据上都达到了95%以上的准确率。在分配标签之前,请确保你已将输出文件转换为/exmaples/response_generation_examples的格式,并命名为DATASET.csv。将所有你想要标记的输出文件放在同一个DATA_PATH目录下。然后从以下链接下载相应的分类器模型:

模型下载链接: CAMS, CLP, DR, dreaddit, Irf, loneliness, 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_PATHDATA_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下。

人工注释

我们发布了对AI生成解释的人工注释,以促进未来对可解释心理健康分析自动评估工具的对齐研究。基于这些人工评估结果,我们测试了各种现有自动评估指标与人类偏好的相关性。我们评估论文中的结果显示,BART-score在所有4个方面与人工注释有中等程度的相关性。

质量评估

在我们的评估论文中,我们手动标注了DR数据集的AIGC结果子集,从4个方面进行评估:流畅性、完整性、可靠性和整体评价。注释发布在以下目录中:

/human_evaluation/DR_annotation

我们在这里标注了163个ChatGPT为抑郁检测数据集DR生成的解释。文件chatgpt_data.csv包含121个ChatGPT正确分类的解释。chatgpt_false_data.csv包含42个ChatGPT错误分类的解释。我们还在gpt3_data.csv中包含了121个InstructionGPT-3正确分类的解释。

专家编写的黄金解释

在我们的MentaLLaMA论文中,我们邀请了一位量化心理学领域的专家为350个选定的帖子(每个原始数据集35个帖子)编写解释。这个黄金集用于准确评估LLM的解释生成能力。为促进未来研究,我们发布了以下数据集的专家编写解释:DR、dreaddit、SWMH、T-SID、SAD、CAMS、loneliness、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{yang2023mentalllama,
  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文件中查看更多详情。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多