? 2 de marzo de 2024 Publicación completa de los datos de prueba para el punto de referencia IMHI.
? 1 de febrero de 2024 ¡ Nuestro artículo de MentaLLaMA: "MentaLLaMA: Análisis interpretable de salud mental en redes sociales con modelos de lenguaje grandes" ha sido aceptado por WWW 2024!
? 31 de octubre de 2023 Lanzamos el modelo MentaLLaMA-33B-lora, una edición 33B de MentaLLaMA basada en Vicuña-33B y el conjunto de datos IMHI completo, ¡pero entrenado con LoRA debido a los recursos computacionales!
? 13 de octubre de 2023 Publicamos los datos de entrenamiento para los siguientes conjuntos de datos: DR, dreaddit, SAD, MultiWD e IRF. ¡Más por venir, estad atentos!
? 7 de octubre de 2023 Nuestro artículo de evaluación: "Hacia un análisis interpretable de la salud mental con modelos de lenguaje grandes" ha sido aceptado por la conferencia principal de EMNLP 2023 como un artículo extenso.
Este repositorio y su contenido se proporcionan únicamente para investigación no clínica . Ninguno de los materiales constituye un diagnóstico o consejo real, y quien busca ayuda debe obtener asistencia de psiquiatras profesionales o médicos clínicos. No se ofrecen garantías, expresas o implícitas, con respecto a la exactitud, integridad o utilidad de las predicciones y explicaciones. Los autores y contribuyentes no son responsables de ningún error, omisión o consecuencia que surja del uso de la información contenida en este documento. Los usuarios deben ejercer su propio criterio y consultar a los profesionales antes de tomar cualquier decisión relacionada con la clínica. El uso del software y la información contenida en este repositorio es enteramente bajo el propio riesgo del usuario.
Los conjuntos de datos sin procesar recopilados para construir nuestro conjunto de datos IMHI provienen de plataformas de redes sociales públicas como Reddit y Twitter, y seguimos estrictamente los protocolos de privacidad y los principios éticos para proteger la privacidad del usuario y garantizar que el anonimato se aplique adecuadamente en todos los textos relacionados con la salud mental. . Además, para minimizar el uso indebido, todos los ejemplos proporcionados en nuestro artículo se parafrasean y se ofuscan utilizando el esquema de disfraz moderado.
Además, estudios recientes han indicado que los LLM pueden introducir algunos sesgos potenciales, como brechas de género. Mientras tanto, algunos resultados de predicción incorrectos, explicaciones inapropiadas y generalización excesiva también ilustran los riesgos potenciales de los LLM actuales. Por lo tanto, todavía existen muchos desafíos en la aplicación del modelo a sistemas de monitoreo de salud mental en escenarios reales.
Al utilizar o acceder a la información de este repositorio, usted acepta indemnizar, defender y eximir de responsabilidad a los autores, contribuyentes y cualquier organización o persona afiliada de todos y cada uno de los reclamos o daños.
Este proyecto presenta nuestros esfuerzos hacia el análisis de salud mental interpretable con modelos de lenguaje grande (LLM). En los primeros trabajos, evaluamos exhaustivamente el desempeño de cero disparos/pocos disparos de los últimos LLM, como ChatGPT y GPT-4, en la generación de explicaciones para el análisis de salud mental. Con base en los hallazgos, creamos el conjunto de datos de Instrucción Interpretable de Salud Mental (IMHI) con 105.000 muestras de instrucción, el primer conjunto de datos de ajuste de instrucción multitarea y de múltiples fuentes para el análisis interpretable de salud mental en las redes sociales. Con base en el conjunto de datos IMHI, proponemos MentaLLaMA, el primer LLM de código abierto que sigue instrucciones para análisis de salud mental interpretables. MentaLLaMA puede realizar análisis de salud mental en datos de redes sociales y generar explicaciones de alta calidad para sus predicciones. También presentamos el primer punto de referencia de evaluación holística para análisis de salud mental interpretables con 19.000 muestras de prueba, que cubren 8 tareas y 10 conjuntos de pruebas. Nuestras contribuciones se presentan en estos 2 artículos:
El documento MentaLLaMA | El documento de evaluación
Proporcionamos 5 puntos de control del modelo evaluados en el artículo de MentaLLaMA:
MentaLLaMA-33B-lora: este modelo está ajustado en función del modelo básico Vicuña-33B y los datos completos de ajuste de instrucciones IMHI. Los datos de entrenamiento cubren 8 tareas de análisis de salud mental. El modelo puede seguir instrucciones para realizar análisis de salud mental precisos y generar explicaciones de alta calidad para las predicciones. Debido a la limitación de recursos computacionales, entrenamos el modelo MentaLLaMA-33B con la técnica PeFT LoRA, que redujo significativamente el uso de memoria.
MentaLLaMA-chat-13B: este modelo está ajustado en función del modelo básico Meta LLaMA2-chat-13B y los datos completos de ajuste de instrucciones IMHI. Los datos de entrenamiento cubren 8 tareas de análisis de salud mental. El modelo puede seguir instrucciones para realizar análisis de salud mental precisos y generar explicaciones de alta calidad para las predicciones. Debido al tamaño del modelo, las inferencias son relativamente lentas.
MentaLLaMA-chat-7B| MentaLLaMA-chat-7B-hf: este modelo está ajustado en función del modelo básico Meta LLaMA2-chat-7B y los datos completos de ajuste de instrucciones IMHI. Los datos de entrenamiento cubren 8 tareas de análisis de salud mental. El modelo puede seguir instrucciones para realizar análisis de salud mental y generar explicaciones para las predicciones.
MentalBART: este modelo está ajustado en función del modelo básico grande de BART y los datos completos de finalización de IMHI. Los datos de entrenamiento cubren 8 tareas de análisis de salud mental. El modelo no puede seguir instrucciones, pero puede realizar análisis de salud mental y generar explicaciones basadas en la finalización. El tamaño más pequeño de este modelo permite una inferencia más rápida y una implementación más sencilla.
MentalT5: este modelo está ajustado en función del modelo de base grande T5 y los datos completos de finalización de IMHI. El modelo no puede seguir instrucciones, pero puede realizar análisis de salud mental y generar explicaciones basadas en la finalización. El tamaño más pequeño de este modelo permite una inferencia más rápida y una implementación más sencilla.
Puede utilizar los modelos MentaLLaMA en su proyecto Python con la biblioteca Hugging Face Transformers. A continuación se muestra un ejemplo sencillo de cómo cargar el modelo completamente ajustado:
from transformers import LlamaTokenizer , LlamaForCausalLM
tokenizer = LlamaTokenizer . from_pretrained ( MODEL_PATH )
model = LlamaForCausalLM . from_pretrained ( MODEL_PATH , device_map = 'auto' )
En este ejemplo, LlamaTokenizer se usa para cargar el tokenizador y LlamaForCausalLM se usa para cargar el modelo. El argumento device_map='auto'
se utiliza para utilizar automáticamente la GPU si está disponible. MODEL_PATH
denota la ruta para guardar su modelo.
Después de cargar los modelos, puede generar una respuesta. Aquí hay un ejemplo:
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 ]
Nuestra ejecución de estos códigos en MentaLLaMA-chat-13B obtiene la siguiente respuesta:
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.
Para el modelo MentaLLaMA-33B-lora, dado que nuestro modelo se basa en el modelo de base Vicuna-33B, primero debe descargar el modelo Vicuna-33B aquí y colocarlo en el directorio ./vicuna-33B
. Luego descargue los pesos de MentaLLaMA-33B-lora y colóquelos debajo del directorio ./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' )
Después de cargar los modelos, puede generar una respuesta. Aquí hay un ejemplo:
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 )
Nuestra ejecución de estos códigos en MentaLLaMA-33B-lora obtiene la siguiente respuesta:
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.
Recopilamos datos sin procesar de 10 conjuntos de datos existentes que cubren 8 tareas de análisis de salud mental y los transferimos a datos de prueba para un análisis de salud mental interpretable. Las estadísticas sobre los 10 conjuntos de prueba son las siguientes:
Nombre | Tarea | División de datos | Fuente de datos | Anotación | Liberado |
---|---|---|---|---|---|
DR | detección de depresión | 1.003/430/405 | Etiquetas débiles | Sí | |
CLP | detección de depresión | 456/196/299 | Anotaciones humanas | Aún no | |
terrorífico | detección de estrés | 2.837/300/414 | Anotaciones humanas | Sí | |
SWMH | detección de trastornos mentales | 34.822/8.705/10.882 | Etiquetas débiles | Aún no | |
T-SID | detección de trastornos mentales | 3.071/767/959 | Gorjeo | Etiquetas débiles | Aún no |
TRISTE | detección de la causa del estrés | 5.547/616/684 | SMS | Anotaciones humanas | Sí |
CAMAS | Detección de causas de depresión/suicidio. | 2.207/320/625 | Anotaciones humanas | Aún no | |
soledad | detección de soledad | 2.463/527/531 | Anotaciones humanas | Aún no | |
MultiWD | Detección de dimensiones de bienestar | 15.744/1.500/2.441 | Anotaciones humanas | Sí | |
FIR | Detección de factores de riesgo interpersonales. | 3.943/985/2.113 | Anotaciones humanas | Sí |
Presentamos IMHI, el primer conjunto de datos de ajuste de instrucciones multitarea y de múltiples fuentes para análisis de salud mental interpretables en las redes sociales. Actualmente publicamos los datos de capacitación y evaluación de los siguientes conjuntos: DR, dreaddit, SAD, MultiWD e IRF. Los datos de instrucción se colocan bajo
/train_data/instruction_data
Los elementos son fáciles de seguir: la fila query
indica la pregunta y la fila gpt-3.5-turbo
indica nuestras predicciones y explicaciones modificadas y evaluadas de ChatGPT. gpt-3.5-turbo
se utiliza como respuesta de oro para la evaluación.
Para facilitar el entrenamiento en modelos sin capacidad de seguir instrucciones, también publicamos parte de los datos de prueba para su finalización con IMHI. Los datos se someten
/train_data/complete_data
Los diseños de archivos son los mismos que los datos de ajuste de instrucciones.
Presentamos el primer punto de referencia de evaluación holística para análisis de salud mental interpretables con muestras de prueba de 19.000. Todos los datos de las pruebas han sido publicados. Los datos de instrucción se colocan bajo
/test_data/test_instruction
Los elementos son fáciles de seguir: la fila query
indica la pregunta y la fila gpt-3.5-turbo
indica nuestras predicciones y explicaciones modificadas y evaluadas de ChatGPT. gpt-3.5-turbo
se utiliza como respuesta de oro para la evaluación.
Para facilitar la prueba en modelos sin capacidad de seguir instrucciones, también publicamos parte de los datos de la prueba para su finalización con IMHI. Los datos se someten
/test_data/test_complete
Los diseños de archivos son los mismos que los datos de ajuste de instrucciones.
Para evaluar su modelo entrenado en el punto de referencia IMHI, primero cargue su modelo y genere respuestas para todos los elementos de la prueba. Usamos la biblioteca Hugging Face Transformers para cargar el modelo. Para los modelos basados en LLaMA, puede generar las respuestas con los siguientes comandos:
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset IMHI --llama --cuda
MODEL_PATH
y OUTPUT_PATH
indican la ruta para guardar el modelo y la ruta para guardar las respuestas generadas. Todas las respuestas generadas se colocarán en ../model_output
. Algunos ejemplos generados se muestran en
./examples/response_generation_examples
También puede evaluar con el conjunto de pruebas de finalización de IMHI con los siguientes comandos:
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset IMHI-completion --llama --cuda
También puedes cargar modelos que no estén basados en LLaMA eliminando el argumento --llama
. En los ejemplos generados, la fila goldens
indica las explicaciones de referencia y la fila generated_text
indica las respuestas generadas desde su modelo.
La primera métrica de evaluación para nuestro punto de referencia IMHI es evaluar la exactitud de la clasificación de las generaciones de modelos. Si su modelo puede generar respuestas muy regulares, un clasificador basado en reglas puede ser útil para asignar una etiqueta a cada respuesta. Proporcionamos un clasificador basado en reglas en IMHI.py
y puede usarlo durante el proceso de generación de respuesta agregando el argumento: --rule_calculate
a su comando. El clasificador requiere la siguiente plantilla:
[label] Reasoning: [explanation]
Sin embargo, como la mayoría de los LLM están capacitados para generar respuestas diversas, un clasificador de etiquetas basado en reglas no es práctico. Por ejemplo, MentaLLaMA puede tener la siguiente respuesta para una consulta 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.
Para resolver este problema, en nuestro artículo de MentaLLaMA entrenamos 10 clasificadores de redes neuronales basados en MentalBERT, uno para cada conjunto de datos sin procesar recopilados. Los clasificadores están capacitados para asignar una etiqueta de clasificación dada la explicación. Lanzamos estos 10 clasificadores para facilitar futuras evaluaciones en el punto de referencia IMHI.
Todos los modelos entrenados logran más del 95 % de precisión en los datos de la prueba IMHI. Antes de asignar las etiquetas, asegúrese de haber transferido sus archivos de salida en el formato /exmaples/response_generation_examples
y nombrados como DATASET.csv
. Coloque todos los archivos de salida que desee etiquetar en el mismo directorio DATA_PATH. Luego descargue los modelos de clasificador correspondientes desde los siguientes enlaces:
Los enlaces de descarga de los modelos: CAMS, CLP, DR, dreaddit, Irf, loneliness, MultiWD, SAD, swmh, t-sid
Coloque todos los modelos descargados en un directorio MODEL_PATH y nombre cada modelo con su conjunto de datos. Por ejemplo, el modelo para el conjunto de datos DR debe colocarse en /MODEL_PATH/DR
. Ahora puedes obtener las etiquetas usando estos modelos con los siguientes comandos:
cd src
python label_inference.py --model_path MODEL_PATH --data_path DATA_PATH --data_output_path OUTPUT_PATH --cuda
donde MODEL_PATH
, DATA_PATH
denota el modelo y los directorios de datos especificados, y OUTPUT_PATH
denota la ruta de salida. Después del procesamiento, los archivos de salida deben tener el formato de los ejemplos en /examples/label_data_examples
. Si espera calcular métricas como la puntuación de peso F1 y la precisión, agregue el argumento --calculate
al comando anterior.
La segunda métrica de evaluación para el punto de referencia IMHI es evaluar la calidad de las explicaciones generadas. Los resultados de nuestro documento de evaluación muestran que la puntuación BART está moderadamente correlacionada con las anotaciones humanas en 4 aspectos de la evaluación humana y supera a otras métricas de evaluación automática. Por lo tanto, utilizamos la puntuación BART para evaluar la calidad de las explicaciones generadas. Específicamente, primero debe generar respuestas usando el script IMHI.py
y obtener el directorio de respuestas como en examples/response_generation_examples
. En primer lugar, descargue el directorio de puntuación BART y colóquelo en /src
, luego descargue el punto de control de puntuación BART. Luego califique sus respuestas con BART-score usando los siguientes comandos:
cd src
python score.py --gen_dir_name DIR_NAME --score_method bart_score --cuda
DIR_NAME
indica el nombre del directorio de sus respuestas generadas y debe colocarse en ../model_output
. También ofrecemos otros métodos de puntuación. Puede cambiar --score_method
a 'GPT3_score', 'bert_score', 'bleu', 'rouge' para usar estas métricas. Para obtener puntuación GPT, primero debe descargar el proyecto y colocarlo en /src
.
Publicamos nuestras anotaciones humanas sobre explicaciones generadas por IA para facilitar investigaciones futuras sobre la alineación de herramientas de evaluación automática para análisis de salud mental interpretables. Con base en estos resultados de evaluación humana, probamos varias métricas de evaluación automática existentes en correlación con las preferencias humanas. Los resultados de nuestro documento de evaluación muestran que la puntuación BART está moderadamente correlacionada con las anotaciones humanas en los 4 aspectos.
En nuestro documento de evaluación, etiquetamos manualmente un subconjunto de los resultados del AIGC para el conjunto de datos de DR en 4 aspectos: fluidez, integridad, confiabilidad y general. Las anotaciones se publican en este directorio:
/human_evaluation/DR_annotation
donde etiquetamos 163 explicaciones generadas por ChatGPT para el conjunto de datos de detección de depresión DR. El archivo chatgpt_data.csv
incluye 121 explicaciones clasificadas correctamente por ChatGPT. chatgpt_false_data.csv
incluye 42 explicaciones que ChatGPT clasificó falsamente. También incluimos 121 explicaciones clasificadas correctamente por la Instrucción GPT-3 en gpt3_data.csv
.
En nuestro artículo de MentaLLaMA, invitamos a un experto en un dominio especializado en psicología cuantitativa a escribir una explicación para 350 publicaciones seleccionadas (35 publicaciones para cada conjunto de datos sin procesar). El conjunto dorado se utiliza para evaluar con precisión la capacidad de generación de explicaciones de los LLM de forma automática. Para facilitar investigaciones futuras, publicamos explicaciones escritas por expertos para los siguientes conjuntos de datos: DR, dreaddit, SWMH, T-SID, SAD, CAMS, Loneliness, MultiWD e IRF (35 muestras cada uno). Los datos se publican en este directorio:
/human_evaluation/test_instruction_expert
Las explicaciones escritas por expertos se procesan para seguir el mismo formato que otros conjuntos de datos de prueba para facilitar las evaluaciones del modelo. Puede probar su modelo con las explicaciones doradas escritas por expertos con comandos similares a los de la generación de respuestas. Por ejemplo, puede probar modelos basados en LLaMA de la siguiente manera:
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset expert --llama --cuda
Si utiliza anotaciones o análisis humanos en el documento de evaluación, cite:
@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 utiliza MentaLLaMA en su trabajo, cite:
@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 tiene licencia [MIT]. Encuentre más detalles en el archivo MIT.