? 2 Maret 2024 Rilis lengkap data pengujian benchmark IMHI.
? 1 Februari 2024 Makalah MentaLLaMA kami: "MentaLLaMA: Analisis Kesehatan Mental yang Dapat Ditafsirkan di Media Sosial dengan Model Bahasa Besar" telah diterima oleh WWW 2024!
? 31 Oktober 2023 Kami merilis model MentaLLaMA-33B-lora, MentaLLaMA edisi 33B berdasarkan Vicuna-33B dan kumpulan data IMHI lengkap, tetapi dilatih dengan LoRA karena sumber daya komputasinya!
? 13 Oktober 2023 Kami merilis data pelatihan untuk kumpulan data berikut: DR, Dreaddit, SAD, MultiWD, dan IRF. Masih banyak lagi yang akan datang, pantau terus!
? 7 Oktober 2023 Makalah evaluasi kami: "Menuju Analisis Kesehatan Mental yang Dapat Ditafsirkan dengan Model Bahasa Besar" telah diterima oleh konferensi utama EMNLP 2023 sebagai makalah yang panjang!
Repositori ini dan isinya disediakan untuk penelitian non-klinis saja . Tidak ada satu pun materi yang merupakan diagnosis atau saran aktual, dan pencari bantuan harus mendapatkan bantuan dari psikiater profesional atau praktisi klinis. Tidak ada jaminan, tersurat maupun tersirat, yang ditawarkan mengenai keakuratan, kelengkapan, atau kegunaan prediksi dan penjelasan. Penulis dan kontributor tidak bertanggung jawab atas kesalahan, kelalaian, atau akibat apa pun yang timbul dari penggunaan informasi di sini. Pengguna harus mengambil keputusan sendiri dan berkonsultasi dengan profesional sebelum membuat keputusan terkait klinis. Penggunaan perangkat lunak dan informasi yang terdapat dalam repositori ini sepenuhnya merupakan risiko pengguna sendiri.
Kumpulan data mentah yang dikumpulkan untuk membuat kumpulan data IMHI kami berasal dari platform media sosial publik seperti Reddit dan Twitter, dan kami secara ketat mengikuti protokol privasi dan prinsip etika untuk melindungi privasi pengguna dan menjamin bahwa anonimitas diterapkan dengan benar di semua teks terkait kesehatan mental . Selain itu, untuk meminimalkan penyalahgunaan, semua contoh yang diberikan dalam makalah kami diparafrasekan dan dikaburkan menggunakan skema penyamaran yang moderat.
Selain itu, penelitian terbaru menunjukkan bahwa LLM dapat menimbulkan potensi bias, seperti kesenjangan gender. Sementara itu, beberapa hasil prediksi yang salah, penjelasan yang tidak tepat, dan generalisasi yang berlebihan juga menggambarkan potensi risiko LLM saat ini. Oleh karena itu, masih banyak tantangan dalam menerapkan model ini pada sistem pemantauan kesehatan mental dengan skenario nyata.
Dengan menggunakan atau mengakses informasi dalam repositori ini, Anda setuju untuk mengganti kerugian, membela, dan membebaskan penulis, kontributor, dan organisasi atau orang afiliasi mana pun dari setiap dan seluruh klaim atau kerusakan.
Proyek ini menyajikan upaya kami menuju analisis kesehatan mental yang dapat ditafsirkan dengan model bahasa besar (LLM). Dalam karya awal kami mengevaluasi secara komprehensif kinerja zero-shot/some-shot dari LLM terbaru seperti ChatGPT dan GPT-4 dalam menghasilkan penjelasan untuk analisis kesehatan mental. Berdasarkan temuan tersebut, kami membangun kumpulan data Instruksi Kesehatan Mental yang Dapat Ditafsir (IMHI) dengan 105 ribu sampel instruksi, kumpulan data penyetelan instruksi multitugas dan multisumber pertama untuk analisis kesehatan mental yang dapat ditafsirkan di media sosial. Berdasarkan kumpulan data IMHI, Kami mengusulkan MentaLLaMA, LLM sumber terbuka pertama yang mengikuti instruksi untuk analisis kesehatan mental yang dapat ditafsirkan. MentaLLaMA dapat melakukan analisis kesehatan mental pada data media sosial dan menghasilkan penjelasan berkualitas tinggi atas prediksinya. Kami juga memperkenalkan tolok ukur evaluasi holistik pertama untuk analisis kesehatan mental yang dapat ditafsirkan dengan 19 ribu sampel tes, yang mencakup 8 tugas dan 10 set tes. Kontribusi kami disajikan dalam 2 makalah berikut:
Makalah MentalLLaMA | Makalah Evaluasi
Kami menyediakan 5 model checkpoint yang dievaluasi dalam makalah MentaLLaMA:
MentaLLaMA-33B-lora: Model ini disempurnakan berdasarkan model dasar Vicuna-33B dan data penyetelan instruksi IMHI lengkap. Data pelatihan mencakup 8 tugas analisis kesehatan mental. Model tersebut dapat mengikuti instruksi untuk membuat analisis kesehatan mental yang akurat dan menghasilkan penjelasan berkualitas tinggi untuk prediksi tersebut. Karena keterbatasan sumber daya komputasi, kami melatih model MentaLLaMA-33B dengan teknik PeFT LoRA, yang secara signifikan mengurangi penggunaan memori.
MentaLLaMA-chat-13B: Model ini disempurnakan berdasarkan model dasar Meta LLaMA2-chat-13B dan data penyetelan instruksi IMHI lengkap. Data pelatihan mencakup 8 tugas analisis kesehatan mental. Model tersebut dapat mengikuti instruksi untuk membuat analisis kesehatan mental yang akurat dan menghasilkan penjelasan berkualitas tinggi untuk prediksi tersebut. Karena ukuran model, inferensinya relatif lambat.
MentalLLaMA-obrolan-7B| MentaLLaMA-chat-7B-hf: Model ini disempurnakan berdasarkan model dasar Meta LLaMA2-chat-7B dan data penyetelan instruksi IMHI lengkap. Data pelatihan mencakup 8 tugas analisis kesehatan mental. Model tersebut dapat mengikuti instruksi untuk membuat analisis kesehatan mental dan menghasilkan penjelasan untuk prediksi tersebut.
MentalBART: Model ini disempurnakan berdasarkan model fondasi besar BART dan data penyelesaian IMHI lengkap. Data pelatihan mencakup 8 tugas analisis kesehatan mental. Model tersebut tidak dapat mengikuti instruksi, tetapi dapat membuat analisis kesehatan mental dan menghasilkan penjelasan berdasarkan penyelesaian. Ukuran model yang lebih kecil memungkinkan inferensi lebih cepat dan penerapan lebih mudah.
MentalT5: Model ini disempurnakan berdasarkan model fondasi besar T5 dan data penyelesaian IMHI lengkap. Model tersebut tidak dapat mengikuti instruksi, tetapi dapat membuat analisis kesehatan mental dan menghasilkan penjelasan berdasarkan penyelesaian. Ukuran model yang lebih kecil memungkinkan inferensi lebih cepat dan penerapan lebih mudah.
Anda dapat menggunakan model MentaLLaMA dalam proyek Python Anda dengan pustaka Hugging Face Transformers. Berikut adalah contoh sederhana tentang cara memuat model yang telah disetel sepenuhnya:
from transformers import LlamaTokenizer , LlamaForCausalLM
tokenizer = LlamaTokenizer . from_pretrained ( MODEL_PATH )
model = LlamaForCausalLM . from_pretrained ( MODEL_PATH , device_map = 'auto' )
Dalam contoh ini, LlamaTokenizer digunakan untuk memuat tokenizer, dan LlamaForCausalLM digunakan untuk memuat model. Argumen device_map='auto'
digunakan untuk menggunakan GPU secara otomatis jika tersedia. MODEL_PATH
menunjukkan jalur penyimpanan model Anda.
Setelah memuat model, Anda dapat menghasilkan respons. Berikut ini contohnya:
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 ]
Menjalankan kode-kode ini di MentaLLaMA-chat-13B mendapat respons berikut:
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.
Untuk model MentaLLaMA-33B-lora, karena model kami didasarkan pada model fondasi Vicuna-33B, Anda perlu mengunduh model Vicuna-33B terlebih dahulu di sini, dan meletakkannya di bawah direktori ./vicuna-33B
. Kemudian unduh bobot MentaLLaMA-33B-lora dan letakkan di bawah direktori ./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' )
Setelah memuat model, Anda dapat menghasilkan respons. Berikut ini contohnya:
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 )
Menjalankan kode-kode ini di MentaLLaMA-33B-lora mendapat respons berikut:
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.
Kami mengumpulkan data mentah dari 10 kumpulan data yang ada yang mencakup 8 tugas analisis kesehatan mental, dan mentransfernya ke dalam data pengujian untuk analisis kesehatan mental yang dapat ditafsirkan. Statistik tentang 10 set tes adalah sebagai berikut:
Nama | Tugas | Pemisahan Data | Sumber Data | Anotasi | Dilepaskan |
---|---|---|---|---|---|
dr | deteksi depresi | 1.003/430/405 | Label yang lemah | Ya | |
CLP | deteksi depresi | 456/196/299 | Anotasi manusia | Belum | |
ketakutan | deteksi stres | 2.837/300/414 | Anotasi manusia | Ya | |
SWMH | deteksi gangguan jiwa | 34.822/8.705/10.882 | Label yang lemah | Belum | |
T-SID | deteksi gangguan jiwa | 3.071/767/959 | Label yang lemah | Belum | |
SEDIH | deteksi penyebab stres | 5.547/616/684 | SMS | Anotasi manusia | Ya |
kamera | deteksi penyebab depresi/bunuh diri | 2.207/320/625 | Anotasi manusia | Belum | |
kesendirian | deteksi kesepian | 2.463/527/531 | Anotasi manusia | Belum | |
MultiWD | Deteksi dimensi kesehatan | 15.744/1.500/2.441 | Anotasi manusia | Ya | |
IRF | Deteksi faktor risiko interpersonal | 3.943/985/2.113 | Anotasi manusia | Ya |
Kami memperkenalkan IMHI, kumpulan data penyesuaian instruksi multitugas dan multisumber pertama untuk analisis kesehatan mental yang dapat ditafsirkan di media sosial. Saat ini kami merilis data pelatihan dan evaluasi dari set berikut: DR, Dreaddit, SAD, MultiWD, dan IRF. Data instruksi diletakkan di bawah
/train_data/instruction_data
Itemnya mudah diikuti: baris query
menunjukkan pertanyaan, dan baris gpt-3.5-turbo
menunjukkan prediksi dan penjelasan kami yang telah dimodifikasi dan dievaluasi dari ChatGPT. gpt-3.5-turbo
digunakan sebagai respons emas untuk evaluasi.
Untuk memfasilitasi pelatihan pada model yang tidak memiliki kemampuan mengikuti instruksi, kami juga merilis sebagian data pengujian untuk penyelesaian IMHI. Datanya diletakkan di bawah
/train_data/complete_data
Tata letak file sama dengan data penyetelan instruksi.
Kami memperkenalkan tolok ukur evaluasi holistik pertama untuk analisis kesehatan mental yang dapat ditafsirkan dengan 19 ribu sampel tes. Semua data pengujian telah dirilis. Data instruksi diletakkan di bawah
/test_data/test_instruction
Itemnya mudah diikuti: baris query
menunjukkan pertanyaan, dan baris gpt-3.5-turbo
menunjukkan prediksi dan penjelasan kami yang telah dimodifikasi dan dievaluasi dari ChatGPT. gpt-3.5-turbo
digunakan sebagai respons emas untuk evaluasi.
Untuk memfasilitasi pengujian pada model yang tidak memiliki kemampuan mengikuti instruksi, kami juga merilis sebagian data pengujian untuk penyelesaian IMHI. Datanya diletakkan di bawah
/test_data/test_complete
Tata letak file sama dengan data penyetelan instruksi.
Untuk mengevaluasi model terlatih Anda pada tolok ukur IMHI, pertama-tama muat model Anda dan buat respons untuk semua item pengujian. Kami menggunakan perpustakaan Hugging Face Transformers untuk memuat model. Untuk model berbasis LLaMA, Anda dapat menghasilkan respons dengan perintah berikut:
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset IMHI --llama --cuda
MODEL_PATH
dan OUTPUT_PATH
menunjukkan jalur penyimpanan model dan jalur penyimpanan untuk respons yang dihasilkan. Semua respons yang dihasilkan akan ditempatkan di bawah ../model_output
. Beberapa contoh yang dihasilkan ditunjukkan pada
./examples/response_generation_examples
Anda juga dapat mengevaluasi dengan set tes penyelesaian IMHI dengan perintah berikut:
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset IMHI-completion --llama --cuda
Anda juga dapat memuat model yang tidak berbasis LLaMA dengan menghapus argumen --llama
. Dalam contoh yang dihasilkan, baris goldens
menunjukkan penjelasan referensi dan baris generated_text
menunjukkan respons yang dihasilkan dari model Anda.
Metrik evaluasi pertama untuk tolok ukur IMHI kami adalah mengevaluasi kebenaran klasifikasi generasi model. Jika model Anda dapat menghasilkan respons yang sangat teratur, pengklasifikasi berbasis aturan dapat memberikan label pada setiap respons. Kami menyediakan pengklasifikasi berbasis aturan di IMHI.py
dan Anda dapat menggunakannya selama proses pembuatan respons dengan menambahkan argumen: --rule_calculate
ke perintah Anda. Pengklasifikasi memerlukan templat berikut:
[label] Reasoning: [explanation]
Namun, karena sebagian besar LLM dilatih untuk menghasilkan respons yang beragam, pengklasifikasi label berbasis aturan tidak praktis. Misalnya, MentaLLaMA dapat memiliki respons berikut untuk kueri 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.
Untuk mengatasi masalah ini, dalam makalah MentaLLaMA, kami melatih 10 pengklasifikasi jaringan saraf berdasarkan MentalBERT, satu untuk setiap kumpulan data mentah yang dikumpulkan. Pengklasifikasi dilatih untuk menetapkan label klasifikasi berdasarkan penjelasannya. Kami merilis 10 pengklasifikasi ini untuk memfasilitasi evaluasi benchmark IMHI di masa mendatang.
Semua model terlatih mencapai akurasi lebih dari 95% pada data pengujian IMHI. Sebelum Anda menetapkan label, pastikan Anda telah mentransfer file keluaran dalam format /exmaples/response_generation_examples
dan diberi nama DATASET.csv
. Letakkan semua file keluaran yang ingin Anda beri label di bawah direktori DATA_PATH yang sama. Kemudian unduh model pengklasifikasi yang sesuai dari tautan berikut:
Tautan Unduhan Model: CAMS, CLP, DR, Dreaddit, Irf, Lonely, MultiWD, SAD, Swmh, T-sid
Letakkan semua model yang diunduh di bawah direktori MODEL_PATH dan beri nama setiap model dengan kumpulan datanya. Misalnya, model untuk kumpulan data DR harus diletakkan di bawah /MODEL_PATH/DR
. Sekarang Anda bisa mendapatkan label menggunakan model ini dengan perintah berikut:
cd src
python label_inference.py --model_path MODEL_PATH --data_path DATA_PATH --data_output_path OUTPUT_PATH --cuda
di mana MODEL_PATH
, DATA_PATH
menunjukkan model dan direktori data yang Anda tentukan, dan OUTPUT_PATH
menunjukkan jalur keluaran Anda. Setelah diproses, file keluaran harus memiliki format seperti contoh di /examples/label_data_examples
. Jika Anda ingin menghitung metrik seperti skor dan akurasi bobot-F1, tambahkan argumen --calculate
ke perintah di atas.
Metrik evaluasi kedua untuk tolok ukur IMHI adalah mengevaluasi kualitas penjelasan yang dihasilkan. Hasil dalam makalah evaluasi kami menunjukkan bahwa skor BART berkorelasi moderat dengan anotasi manusia dalam 4 aspek evaluasi manusia, dan mengungguli metrik evaluasi otomatis lainnya. Oleh karena itu, kami menggunakan skor BART untuk mengevaluasi kualitas penjelasan yang dihasilkan. Secara khusus, Anda harus terlebih dahulu membuat respons menggunakan skrip IMHI.py
dan mendapatkan direktori respons seperti pada examples/response_generation_examples
. Pertama, unduh direktori skor BART dan letakkan di bawah /src
, lalu unduh pos pemeriksaan skor BART. Kemudian nilai tanggapan Anda dengan skor BART menggunakan perintah berikut:
cd src
python score.py --gen_dir_name DIR_NAME --score_method bart_score --cuda
DIR_NAME
menunjukkan nama direktori tanggapan yang Anda buat dan harus diletakkan di bawah ../model_output
. Kami juga menyediakan metode penilaian lainnya. Anda dapat mengubah --score_method
menjadi 'GPT3_score', 'bert_score', 'bleu', 'rouge' untuk menggunakan metrik ini. Untuk skor GPT, Anda harus mengunduh proyek terlebih dahulu dan meletakkannya di bawah /src
.
Kami merilis anotasi manusia mengenai penjelasan yang dihasilkan AI untuk memfasilitasi penelitian di masa depan dalam menyelaraskan alat evaluasi otomatis untuk analisis kesehatan mental yang dapat ditafsirkan. Berdasarkan hasil evaluasi manusia ini, kami menguji berbagai metrik evaluasi otomatis yang ada mengenai korelasinya dengan preferensi manusia. Hasil dalam makalah evaluasi kami menunjukkan bahwa skor BART berkorelasi moderat dengan anotasi manusia di keempat aspek.
Dalam makalah evaluasi kami, kami secara manual memberi label pada subkumpulan hasil AIGC untuk kumpulan data DR dalam 4 aspek: kelancaran, kelengkapan, keandalan, dan keseluruhan. Anotasi dirilis di direktori ini:
/human_evaluation/DR_annotation
di mana kami memberi label pada 163 penjelasan yang dihasilkan ChatGPT untuk kumpulan data deteksi depresi DR. File chatgpt_data.csv
berisi 121 penjelasan yang diklasifikasikan dengan benar oleh ChatGPT. chatgpt_false_data.csv
menyertakan 42 penjelasan yang salah diklasifikasikan oleh ChatGPT. Kami juga menyertakan 121 penjelasan yang diklasifikasikan dengan benar oleh InstruksiGPT-3 di gpt3_data.csv
.
Dalam makalah MentaLLaMA kami, kami mengundang salah satu pakar domain jurusan psikologi kuantitatif untuk menulis penjelasan untuk 350 postingan terpilih (35 postingan untuk setiap kumpulan data mentah). Set emas digunakan untuk mengevaluasi secara akurat kemampuan pembuatan penjelasan LLM secara otomatis. Untuk memfasilitasi penelitian di masa depan, kami merilis penjelasan tertulis ahli untuk kumpulan data berikut: DR, gimbal, SWMH, T-SID, SAD, CAMS, kesepian, MultiWD, dan IRF (masing-masing 35 sampel). Data dirilis di direktori ini:
/human_evaluation/test_instruction_expert
Penjelasan tertulis ahli diproses mengikuti format yang sama seperti kumpulan data pengujian lainnya untuk memfasilitasi evaluasi model. Anda dapat menguji model Anda pada penjelasan emas yang ditulis oleh ahli dengan perintah serupa seperti pada pembuatan respons. Misalnya, Anda dapat menguji model berbasis LLaMA sebagai berikut:
cd src
python IMHI.py --model_path MODEL_PATH --batch_size 8 --model_output_path OUTPUT_PATH --test_dataset expert --llama --cuda
Jika Anda menggunakan anotasi atau analisis manusia dalam makalah evaluasi, harap kutip:
@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}
}
Jika Anda menggunakan MentaLLaMA dalam pekerjaan Anda, harap kutip:
@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 dilisensikan di bawah [MIT]. Silakan temukan detail lebih lanjut di file MIT.