? 2 mars 2024 Publication complète des données de test pour le benchmark IMHI.
? 1er février 2024 Notre article MentaLLaMA : « MentaLLaMA : Analyse interprétable de la santé mentale sur les médias sociaux avec de grands modèles linguistiques » a été accepté par WWW 2024 !
? 31 octobre 2023 Nous publions le modèle MentaLLaMA-33B-lora, une édition 33B de MentaLLaMA basée sur Vicuna-33B et l'ensemble de données complet IMHI, mais entraînée avec LoRA en raison des ressources informatiques !
? 13 octobre 2023 Nous publions les données d'entraînement pour les ensembles de données suivants : DR, dreaddit, SAD, MultiWD et IRF. La suite à venir, restez à l'écoute !
? 7 octobre 2023 Notre document d'évaluation : « Vers une analyse interprétable de la santé mentale avec de grands modèles linguistiques » a été accepté par la conférence principale de l'EMNLP 2023 comme article long !
Ce référentiel et son contenu sont fournis uniquement à des fins de recherche non clinique . Aucun élément du matériel ne constitue un diagnostic ou un conseil réel, et le demandeur d'aide doit obtenir l'aide de psychiatres professionnels ou de praticiens cliniciens. Aucune garantie, expresse ou implicite, n'est offerte concernant l'exactitude, l'exhaustivité ou l'utilité des prédictions et des explications. Les auteurs et contributeurs ne sont pas responsables des erreurs, omissions ou des conséquences découlant de l'utilisation des informations contenues dans le présent document. Les utilisateurs doivent exercer leur propre jugement et consulter des professionnels avant de prendre toute décision clinique. L'utilisation du logiciel et des informations contenues dans ce référentiel est entièrement aux risques et périls de l'utilisateur.
Les ensembles de données brutes collectées pour créer notre ensemble de données IMHI proviennent de plateformes de médias sociaux publiques telles que Reddit et Twitter, et nous suivons strictement les protocoles de confidentialité et les principes éthiques pour protéger la vie privée des utilisateurs et garantir que l'anonymat est correctement appliqué dans tous les textes liés à la santé mentale. . De plus, pour minimiser les abus, tous les exemples fournis dans notre article sont paraphrasés et obscurcis en utilisant le schéma de déguisement modéré.
En outre, des études récentes ont indiqué que les LLM peuvent introduire certains biais potentiels, tels que des écarts entre les sexes. Parallèlement, certains résultats de prédiction incorrects, des explications inappropriées et une généralisation excessive illustrent également les risques potentiels des LLM actuels. Par conséquent, il reste encore de nombreux défis à relever dans l’application du modèle aux systèmes de surveillance de la santé mentale dans des scénarios réels.
En utilisant ou en accédant aux informations de ce référentiel, vous acceptez d'indemniser, de défendre et de dégager de toute responsabilité les auteurs, les contributeurs et toute organisation ou personne affiliée contre toute réclamation ou dommage.
Ce projet présente nos efforts vers une analyse interprétable de la santé mentale avec de grands modèles de langage (LLM). Dans les premiers travaux, nous évaluons de manière exhaustive les performances zéro tir/quelques tirs des derniers LLM tels que ChatGPT et GPT-4 sur la génération d'explications pour l'analyse de la santé mentale. Sur la base des résultats, nous construisons l'ensemble de données d'instructions interprétables en santé mentale (IMHI) avec 105 000 échantillons d'instructions, le premier ensemble de données de réglage d'instructions multi-tâches et multi-sources pour une analyse interprétable de la santé mentale sur les réseaux sociaux. Sur la base de l'ensemble de données IMHI, nous proposons MentaLLaMA, le premier LLM open source suivant des instructions pour une analyse interprétable de la santé mentale. MentaLLaMA peut effectuer une analyse de santé mentale sur les données des réseaux sociaux et générer des explications de haute qualité pour ses prédictions. Nous présentons également le premier référentiel d'évaluation holistique pour l'analyse interprétable de la santé mentale avec 19 000 échantillons de test, qui couvrent 8 tâches et 10 ensembles de tests. Nos contributions sont présentées dans ces 2 articles :
Le document MentaLLaMA | Le document d'évaluation
Nous proposons 5 points de contrôle modèles évalués dans l'article MentaLLaMA :
MentaLLaMA-33B-lora : ce modèle est affiné sur la base du modèle de base Vicuna-33B et des données complètes de réglage des instructions IMHI. Les données de formation couvrent 8 tâches d'analyse de la santé mentale. Le modèle peut suivre des instructions pour effectuer une analyse précise de la santé mentale et générer des explications de haute qualité pour les prédictions. En raison de la limitation des ressources informatiques, nous entraînons le modèle MentaLLaMA-33B avec la technique PeFT LoRA, qui réduit considérablement l'utilisation de la mémoire.
MentaLLaMA-chat-13B : ce modèle est affiné sur la base du modèle de base Meta LLaMA2-chat-13B et des données complètes de réglage des instructions IMHI. Les données de formation couvrent 8 tâches d'analyse de la santé mentale. Le modèle peut suivre des instructions pour effectuer une analyse précise de la santé mentale et générer des explications de haute qualité pour les prédictions. En raison de la taille du modèle, les inférences sont relativement lentes.
MentaLLaMA-chat-7B| MentaLLaMA-chat-7B-hf : ce modèle est affiné sur la base du modèle de base Meta LLaMA2-chat-7B et des données complètes de réglage des instructions IMHI. Les données de formation couvrent 8 tâches d'analyse de la santé mentale. Le modèle peut suivre des instructions pour effectuer une analyse de la santé mentale et générer des explications pour les prédictions.
MentalBART : ce modèle est affiné sur la base du modèle de base BART-large et des données complètes d'achèvement IMHI. Les données de formation couvrent 8 tâches d'analyse de la santé mentale. Le modèle ne peut pas suivre des instructions, mais peut effectuer une analyse de la santé mentale et générer des explications basées sur l'achèvement. La taille réduite de ce modèle permet une inférence plus rapide et un déploiement plus facile.
MentalT5 : ce modèle est affiné sur la base du modèle de base T5-large et des données complètes d'achèvement de l'IMHI. Le modèle ne peut pas suivre des instructions, mais peut effectuer une analyse de la santé mentale et générer des explications basées sur l'achèvement. La taille réduite de ce modèle permet une inférence plus rapide et un déploiement plus facile.
Vous pouvez utiliser les modèles MentaLLaMA dans votre projet Python avec la bibliothèque Hugging Face Transformers. Voici un exemple simple de la façon de charger le modèle entièrement affiné :
from transformers import LlamaTokenizer , LlamaForCausalLM
tokenizer = LlamaTokenizer . from_pretrained ( MODEL_PATH )
model = LlamaForCausalLM . from_pretrained ( MODEL_PATH , device_map = 'auto' )
Dans cet exemple, LlamaTokenizer est utilisé pour charger le tokenizer et LlamaForCausalLM est utilisé pour charger le modèle. L'argument device_map='auto'
est utilisé pour utiliser automatiquement le GPU s'il est disponible. MODEL_PATH
désigne le chemin de sauvegarde de votre modèle.
Après avoir chargé les modèles, vous pouvez générer une réponse. Voici un exemple :
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 ]
Notre exécution de ces codes sur MentaLLaMA-chat-13B obtient la réponse suivante :
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.
Pour le modèle MentaLLaMA-33B-lora, puisque notre modèle est basé sur le modèle de base Vicuna-33B, vous devez d'abord télécharger le modèle Vicuna-33B ici et le placer sous le répertoire ./vicuna-33B
. Téléchargez ensuite les poids MentaLLaMA-33B-lora et placez-les sous le répertoire ./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' )
Après avoir chargé les modèles, vous pouvez générer une réponse. Voici un exemple :
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 )
Notre exécution de ces codes sur MentaLLaMA-33B-lora obtient la réponse suivante :
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.
Nous collectons des données brutes à partir de 10 ensembles de données existants couvrant 8 tâches d'analyse de la santé mentale et les transférons en données de test pour une analyse interprétable de la santé mentale. Les statistiques sur les 10 ensembles de tests sont les suivantes :
Nom | Tâche | Fractionnement des données | Source de données | Annotation | Libéré |
---|---|---|---|---|---|
RD | détection de la dépression | 1 003/430/405 | Étiquettes faibles | Oui | |
CLP | détection de la dépression | 456/196/299 | Annotations humaines | Pas encore | |
dreaddit | détection du stress | 2 837/300/414 | Annotations humaines | Oui | |
SWMH | détection des troubles mentaux | 34 822/8 705/10 882 | Étiquettes faibles | Pas encore | |
T-SID | détection des troubles mentaux | 3 071/767/959 | Gazouillement | Étiquettes faibles | Pas encore |
TRISTE | détection des causes du stress | 5 547/616/684 | SMS | Annotations humaines | Oui |
CAMS | détection des causes de dépression/suicide | 2 207/320/625 | Annotations humaines | Pas encore | |
solitude | détection de la solitude | 2 463/527/531 | Annotations humaines | Pas encore | |
MultiRM | Détection des dimensions du bien-être | 15 744/1 500/2 441 | Annotations humaines | Oui | |
IRF | Détection des facteurs de risques interpersonnels | 3 943/985/2 113 | Annotations humaines | Oui |
Nous présentons IMHI, le premier ensemble de données de réglage des instructions multi-tâches et multi-sources pour une analyse interprétable de la santé mentale sur les réseaux sociaux. Nous publions actuellement les données de formation et d'évaluation des ensembles suivants : DR, dreaddit, SAD, MultiWD et IRF. Les données d'instruction sont placées sous
/train_data/instruction_data
Les éléments sont faciles à suivre : la ligne query
indique la question et la ligne gpt-3.5-turbo
indique nos prédictions et explications modifiées et évaluées de ChatGPT. gpt-3.5-turbo
est utilisé comme réponse idéale pour l'évaluation.
Pour faciliter la formation sur des modèles sans capacité de suivi d'instructions, nous publions également une partie des données de test pour l'achèvement de l'IMHI. Les données sont mises sous
/train_data/complete_data
La présentation des fichiers est la même avec les données de réglage des instructions.
Nous présentons le premier référentiel d'évaluation holistique pour une analyse interprétable de la santé mentale avec 19 000 échantillons de test. Toutes les données de test ont été publiées. Les données d'instruction sont placées sous
/test_data/test_instruction
Les éléments sont faciles à suivre : la ligne query
indique la question et la ligne gpt-3.5-turbo
indique nos prédictions et explications modifiées et évaluées de ChatGPT. gpt-3.5-turbo
est utilisé comme réponse idéale pour l'évaluation.
Pour faciliter les tests sur des modèles sans capacité de suivi d'instructions, nous publions également une partie des données de test pour l'achèvement de l'IMHI. Les données sont mises sous
/test_data/test_complete
La présentation des fichiers est la même avec les données de réglage des instructions.
Pour évaluer votre modèle entraîné sur le benchmark IMHI, chargez d'abord votre modèle et générez des réponses pour tous les éléments de test. Nous utilisons la bibliothèque Hugging Face Transformers pour charger le modèle. Pour les modèles basés sur LLaMA, vous pouvez générer les réponses avec les commandes suivantes :
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset IMHI --llama --cuda
MODEL_PATH
et OUTPUT_PATH
désignent le chemin de sauvegarde du modèle et le chemin de sauvegarde des réponses générées. Toutes les réponses générées seront placées sous ../model_output
. Quelques exemples générés sont présentés dans
./examples/response_generation_examples
Vous pouvez également évaluer avec l'ensemble de tests d'achèvement IMHI avec les commandes suivantes :
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset IMHI-completion --llama --cuda
Vous pouvez également charger des modèles qui ne sont pas basés sur LLaMA en supprimant l'argument --llama
. Dans les exemples générés, la ligne goldens
désigne les explications de référence et la ligne generated_text
désigne les réponses générées à partir de votre modèle.
La première mesure d'évaluation de notre benchmark IMHI consiste à évaluer l'exactitude de la classification des générations de modèles. Si votre modèle peut générer des réponses très régulières, un classificateur basé sur des règles peut être utile pour attribuer une étiquette à chaque réponse. Nous fournissons un classificateur basé sur des règles dans IMHI.py
et vous pouvez l'utiliser pendant le processus de génération de réponse en ajoutant l'argument : --rule_calculate
à votre commande. Le classificateur nécessite le modèle suivant :
[label] Reasoning: [explanation]
Cependant, comme la plupart des LLM sont formés pour générer des réponses diverses, un classificateur d’étiquettes basé sur des règles n’est pas pratique. Par exemple, MentaLLaMA peut avoir la réponse suivante pour une requête 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.
Pour résoudre ce problème, dans notre article MentaLLaMA, nous formons 10 classificateurs de réseaux neuronaux basés sur MentalBERT, un pour chaque ensemble de données brutes collectées. Les classificateurs sont formés pour attribuer une étiquette de classification compte tenu de l'explication. Nous publions ces 10 classificateurs pour faciliter les futures évaluations sur le benchmark IMHI.
Tous les modèles formés atteignent une précision de plus de 95 % sur les données de test IMHI. Avant d'attribuer les étiquettes, assurez-vous d'avoir transféré vos fichiers de sortie au format /exmaples/response_generation_examples
et nommés DATASET.csv
. Placez tous les fichiers de sortie que vous souhaitez étiqueter sous le même répertoire DATA_PATH. Téléchargez ensuite les modèles de classificateurs correspondants à partir des liens suivants :
Les liens de téléchargement des modèles : CAMS, CLP, DR, dreaddit, Irf, loneliness, MultiWD, SAD, swmh, t-sid
Placez tous les modèles téléchargés sous un répertoire MODEL_PATH et nommez chaque modèle avec son ensemble de données. Par exemple, le modèle de l'ensemble de données DR doit être placé sous /MODEL_PATH/DR
. Vous pouvez désormais obtenir les étiquettes en utilisant ces modèles avec les commandes suivantes :
cd src
python label_inference.py --model_path MODEL_PATH --data_path DATA_PATH --data_output_path OUTPUT_PATH --cuda
où MODEL_PATH
, DATA_PATH
désigne votre modèle et vos répertoires de données spécifiés, et OUTPUT_PATH
désigne votre chemin de sortie. Après le traitement, les fichiers de sortie doivent avoir le format des exemples dans /examples/label_data_examples
. Si vous espérez calculer des mesures telles que le score de poids-F1 et la précision, ajoutez l'argument --calculate
à la commande ci-dessus.
La deuxième mesure d'évaluation du benchmark IMHI consiste à évaluer la qualité des explications générées. Les résultats de notre document d'évaluation montrent que le score BART est modérément corrélé aux annotations humaines dans 4 aspects de l'évaluation humaine et surpasse les autres mesures d'évaluation automatique. Par conséquent, nous utilisons le score BART pour évaluer la qualité des explications générées. Plus précisément, vous devez d'abord générer des réponses à l'aide du script IMHI.py
et obtenir le répertoire de réponse comme dans examples/response_generation_examples
. Tout d'abord, téléchargez le répertoire BART-score et placez-le sous /src
, puis téléchargez le point de contrôle BART-score. Notez ensuite vos réponses avec BART-score à l'aide des commandes suivantes :
cd src
python score.py --gen_dir_name DIR_NAME --score_method bart_score --cuda
DIR_NAME
désigne le nom du répertoire de vos réponses générées et doit être placé sous ../model_output
. Nous proposons également d'autres méthodes de notation. Vous pouvez remplacer --score_method
par 'GPT3_score', 'bert_score', 'bleu', 'rouge' pour utiliser ces métriques. Pour le score GPT, vous devez d'abord télécharger le projet et le placer sous /src
.
Nous publions nos annotations humaines sur les explications générées par l’IA pour faciliter les recherches futures sur l’alignement des outils d’évaluation automatique pour une analyse interprétable de la santé mentale. Sur la base de ces résultats d'évaluation humaine, nous avons testé diverses mesures d'évaluation automatique existantes sur la corrélation avec les préférences humaines. Les résultats de notre document d'évaluation montrent que le score BART est modérément corrélé aux annotations humaines dans les 4 aspects.
Dans notre document d'évaluation, nous avons étiqueté manuellement un sous-ensemble des résultats AIGC pour l'ensemble de données DR sous 4 aspects : fluidité, exhaustivité, fiabilité et global. Les annotations sont publiées dans ce répertoire :
/human_evaluation/DR_annotation
où nous avons étiqueté 163 explications générées par ChatGPT pour l'ensemble de données de détection de dépression DR. Le fichier chatgpt_data.csv
comprend 121 explications correctement classées par ChatGPT. chatgpt_false_data.csv
comprend 42 explications faussement classées par ChatGPT. Nous incluons également 121 explications correctement classées par InstructionGPT-3 dans gpt3_data.csv
.
Dans notre article MentaLLaMA, nous avons invité un expert du domaine spécialisé en psychologie quantitative à rédiger une explication pour 350 articles sélectionnés (35 articles pour chaque ensemble de données brutes). L'ensemble d'or est utilisé pour évaluer avec précision la capacité de génération d'explications des LLM de manière automatique. Pour faciliter les recherches futures, nous publions les explications rédigées par des experts pour les ensembles de données suivants : DR, dreaddit, SWMH, T-SID, SAD, CAMS, solitude, MultiWD et IRF (35 échantillons chacun). Les données sont publiées dans ce répertoire :
/human_evaluation/test_instruction_expert
Les explications écrites par des experts sont traitées pour suivre le même format que les autres ensembles de données de test afin de faciliter les évaluations de modèles. Vous pouvez tester votre modèle sur les explications dorées écrites par des experts avec des commandes similaires à celles de la génération de réponses. Par exemple, vous pouvez tester les modèles basés sur LLaMA comme suit :
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset expert --llama --cuda
Si vous utilisez des annotations ou des analyses humaines dans le document d'évaluation, veuillez citer :
@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}
}
Si vous utilisez MentaLLaMA dans votre travail, veuillez citer :
@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 est sous licence [MIT]. Veuillez trouver plus de détails dans le fichier MIT.