? 2 марта 2024 г. Полная публикация тестовых данных для теста IMHI.
? 1 февраля 2024 г. Наша статья MentaLLaMA: «MentaLLaMA: интерпретируемый анализ психического здоровья в социальных сетях с использованием больших языковых моделей» принята WWW 2024!
? 31 октября 2023 г. · Мы выпускаем модель MentaLLaMA-33B-lora, версию MentaLLaMA 33B, основанную на Vicuna-33B и полном наборе данных IMHI, но обученную с помощью LoRA из-за вычислительных ресурсов!
? 13 октября 2023 г. · Мы публикуем данные обучения для следующих наборов данных: DR, dreaddit, SAD, MultiWD и IRF. Дальше будет больше, следите за обновлениями!
? 7 октября 2023 г. · Наш оценочный документ: «На пути к интерпретируемому анализу психического здоровья с помощью больших языковых моделей» был принят основной конференцией EMNLP 2023 как длинный документ!
Этот репозиторий и его содержимое предназначены только для доклинических исследований . Ни один из материалов не представляет собой фактического диагноза или совета, и обращающийся за помощью должен получить помощь от профессиональных психиатров или практикующих врачей. Никакие гарантии, явные или подразумеваемые, не предоставляются в отношении точности, полноты или полезности прогнозов и объяснений. Авторы и участники не несут ответственности за любые ошибки, упущения или любые последствия, возникшие в результате использования содержащейся здесь информации. Пользователи должны руководствоваться собственными суждениями и консультироваться со специалистами, прежде чем принимать какие-либо клинические решения. Пользователь использует программное обеспечение и информацию, содержащуюся в этом репозитории, исключительно на свой страх и риск.
Необработанные наборы данных, собранные для создания нашего набора данных IMHI, взяты из общедоступных социальных сетей, таких как Reddit и Twitter, и мы строго следуем протоколам конфиденциальности и этическим принципам, чтобы защитить конфиденциальность пользователей и гарантировать, что анонимность надлежащим образом применяется во всех текстах, связанных с психическим здоровьем. . Кроме того, чтобы свести к минимуму неправильное использование, все примеры, представленные в нашей статье, перефразированы и завуалированы с использованием схемы умеренной маскировки.
Кроме того, недавние исследования показали, что программы LLM могут привнести некоторую потенциальную предвзятость, например, гендерные различия. Между тем, некоторые неправильные результаты прогнозов, неуместные объяснения и чрезмерные обобщения также иллюстрируют потенциальные риски текущих LLM. Таким образом, по-прежнему существует множество проблем в применении этой модели к системам мониторинга психического здоровья в реальных сценариях.
Используя или получая доступ к информации в этом репозитории, вы соглашаетесь возместить ущерб, защитить и оградить от ответственности авторов, участников и любые дочерние организации или лиц от любых претензий или ущерба.
В этом проекте представлены наши усилия по интерпретируемому анализу психического здоровья с использованием больших языковых моделей (LLM). В ранних работах мы всесторонне оцениваем эффективность новейших LLM, таких как ChatGPT и GPT-4, при создании объяснений для анализа психического здоровья. Основываясь на полученных результатах, мы создаем набор данных «Интерпретируемые инструкции по психическому здоровью» (IMHI) с 105 тысячами образцов инструкций, первый многозадачный набор данных по настройке инструкций с несколькими источниками для интерпретируемого анализа психического здоровья в социальных сетях. На основе набора данных IMHI мы предлагаем MentaLLaMA, первый LLM с открытым исходным кодом, основанный на инструкциях, для интерпретируемого анализа психического здоровья. MentaLLaMA может проводить анализ психического здоровья на основе данных социальных сетей и генерировать высококачественные объяснения своих прогнозов. Мы также представляем первый эталон комплексной оценки для интерпретируемого анализа психического здоровья с помощью 19 тысяч тестовых образцов, который охватывает 8 задач и 10 наборов тестов. Наш вклад представлен в этих двух статьях:
Бумага MentaLLaMA | Оценочный документ
Мы предоставляем 5 контрольных точек модели, оцененных в статье MentaLLaMA:
MentaLLaMA-33B-lora: Эта модель точно настроена на основе базовой модели Vicuna-33B и полных данных настройки инструкций IMHI. Данные обучения охватывают 8 задач по анализу психического здоровья. Модель может следовать инструкциям, чтобы провести точный анализ психического здоровья и дать качественные объяснения прогнозов. Из-за ограничения вычислительных ресурсов мы обучаем модель MentaLLaMA-33B с помощью метода PeFT LoRA, что значительно снизило использование памяти.
MentaLLaMA-chat-13B: эта модель точно настроена на основе базовой модели Meta LLaMA2-chat-13B и полных данных настройки инструкций IMHI. Данные обучения охватывают 8 задач по анализу психического здоровья. Модель может следовать инструкциям, чтобы провести точный анализ психического здоровья и дать качественные объяснения прогнозам. Из-за размера модели выводы выполняются относительно медленно.
MentaLLaMA-чат-7B| MentaLLaMA-chat-7B-hf: Эта модель точно настроена на основе базовой модели Meta LLaMA2-chat-7B и полных данных настройки инструкций IMHI. Данные обучения охватывают 8 задач по анализу психического здоровья. Модель может следовать инструкциям, чтобы провести анализ психического здоровья и дать объяснения прогнозам.
MentalBART: Эта модель точно настроена на основе модели большого фундамента BART и полных данных завершения IMHI. Данные обучения охватывают 8 задач по анализу психического здоровья. Модель не может следовать инструкциям, но может проводить анализ психического здоровья и генерировать объяснения по мере завершения. Меньший размер этой модели позволяет быстрее делать выводы и упрощает развертывание.
MentalT5: эта модель точно настроена на основе модели T5-Large Foundation и полных данных завершения IMHI. Модель не может следовать инструкциям, но может проводить анализ психического здоровья и генерировать объяснения по мере завершения. Меньший размер этой модели позволяет быстрее делать выводы и упрощает развертывание.
Вы можете использовать модели MentaLLaMA в своем проекте Python с библиотекой 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'
используется для автоматического использования графического процессора, если он доступен. 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.
Мы собираем необработанные данные из 10 существующих наборов данных, охватывающих 8 задач анализа психического здоровья, и переносим их в тестовые данные для интерпретируемого анализа психического здоровья. Статистика по 10 тестовым наборам следующая:
Имя | Задача | Разделение данных | Источник данных | Аннотация | Выпущенный |
---|---|---|---|---|---|
ДР | обнаружение депрессии | 1003/430/405 | Реддит | Слабые лейблы | Да |
CLP | обнаружение депрессии | 456/196/299 | Реддит | Человеческие аннотации | Еще нет |
дреддит | обнаружение стресса | 2837/300/414 | Реддит | Человеческие аннотации | Да |
СВМХ | выявление психических расстройств | 34 822/8 705/10 882 | Реддит | Слабые лейблы | Еще нет |
Т-SID | выявление психических расстройств | 3071/767/959 | Твиттер | Слабые лейблы | Еще нет |
ГРУСТНЫЙ | обнаружение причин стресса | 5547/616/684 | SMS | Человеческие аннотации | Да |
КАМС | выявление причин депрессии/суицида | 2207/320/625 | Реддит | Человеческие аннотации | Еще нет |
одиночество | обнаружение одиночества | 2463/527/531 | Реддит | Человеческие аннотации | Еще нет |
МультиВД | Обнаружение параметров здоровья | 15 744/1 500/2 441 | Реддит | Человеческие аннотации | Да |
ИРФ | Выявление факторов межличностного риска | 3943/985/2113 | Реддит | Человеческие аннотации | Да |
Мы представляем 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
Макеты файлов такие же, как и данные настройки инструкций.
Мы представляем первый эталон комплексной оценки для интерпретируемого анализа психического здоровья с использованием 19 тысяч тестовых образцов. Все данные испытаний опубликованы. Данные инструкции помещаются под
/test_data/test_instruction
За элементами легко следить: строка query
обозначает вопрос, а строка gpt-3.5-turbo
обозначает наши измененные и оцененные прогнозы и объяснения из ChatGPT. gpt-3.5-turbo
используется в качестве золотого ответа для оценки.
Чтобы облегчить тестирование моделей, не имеющих возможности следовать инструкциям, мы также публикуем часть тестовых данных для завершения IMHI. Данные помещены под
/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]
Однако, поскольку большинство LLM обучены генерировать разнообразные ответы, классификатор меток на основе правил непрактичен. Например, 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 мы обучаем 10 классификаторов нейронных сетей на основе MentalBERT, по одному для каждого собранного набора необработанных данных. Классификаторы обучены присваивать классификационную метку с учетом объяснения. Мы публикуем эти 10 классификаторов для облегчения будущих оценок по эталону IMHI.
Все обученные модели достигают точности более 95 % по данным испытаний IMHI. Прежде чем назначать метки, убедитесь, что вы передали выходные файлы в формате /exmaples/response_generation_examples
и назвали их DATASET.csv
. Поместите все выходные файлы, которые вы хотите пометить, в один и тот же каталог DATA_PATH. Затем скачайте соответствующие модели классификаторов по следующим ссылкам:
Ссылки для скачивания моделей: CAMS, CLP, DR, dreaddit, Irf, одиночество, 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 умеренно коррелирует с человеческими аннотациями в 4 аспектах человеческой оценки и превосходит другие показатели автоматической оценки. Поэтому мы используем BART-оценку для оценки качества созданных объяснений. В частности, вам следует сначала сгенерировать ответы с помощью сценария 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 вам необходимо сначала загрузить проект и поместить его в /src
.
Мы публикуем наши человеческие аннотации к объяснениям, сгенерированным ИИ, чтобы облегчить будущие исследования по согласованию инструментов автоматической оценки для интерпретируемого анализа психического здоровья. Основываясь на этих результатах оценки людей, мы протестировали различные существующие показатели автоматической оценки на предмет корреляции с предпочтениями человека. Результаты нашей оценочной статьи показывают, что показатель BART умеренно коррелирует с человеческими аннотациями во всех четырех аспектах.
В нашем оценочном документе мы вручную пометили подмножество результатов AIGC для набора данных DR по 4 аспектам: беглость, полнота, надежность и общий уровень. Аннотации публикуются в этом каталоге:
/human_evaluation/DR_annotation
где мы пометили 163 объяснения, сгенерированные ChatGPT, для набора данных по обнаружению депрессии DR. chatgpt_data.csv
содержит 121 объяснение, правильно классифицированное ChatGPT. chatgpt_false_data.csv
включает 42 объяснения, ошибочно классифицированные ChatGPT. Мы также включаем 121 объяснение, которое правильно классифицируется с помощью InstructionGPT-3 в gpt3_data.csv
.
В нашей статье MentaLLaMA мы пригласили одного эксперта в области количественной психологии написать объяснение для 350 выбранных сообщений (35 сообщений для каждого набора необработанных данных). Золотой набор используется для точной автоматической оценки способности LLM давать объяснения. Чтобы облегчить будущие исследования, мы публикуем написанные экспертами пояснения к следующим наборам данных: DR, dreaddit, SWMH, T-SID, SAD, CAMS, одиночество, 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.