? 2024 年 3 月 2 日IMHI ベンチマークのテスト データを完全公開。
? 2024年2月1日MentaLLaMA の論文「MentaLLaMA: Interpretable Mental Health Analysis on Social Media with Large Language Models」が WWW 2024 に受理されました。
? 2023 年 10 月 31 日Vicuna-33B と完全な IMHI データセットに基づく MentaLLaMA の 33B 版である MentaLLaMA-33B-lora モデルをリリースしますが、計算リソースの関係で LoRA でトレーニングされています。
? 2023 年 10 月 13 日次のデータセットのトレーニング データをリリースしました: DR、dreaddit、SAD、MultiWD、および IRF。まだまだ続きますので、お楽しみに!
? 2023年10月7日評価論文「Towards Interpretable Mental Health Analysis with Large Language Models」がEMNLP 2023メインカンファレンスに長編論文として採択されました。
このリポジトリとそのコンテンツは、非臨床研究のみを目的として提供されています。どの資料も実際の診断やアドバイスを構成するものではないため、助けを求める人は専門の精神科医または臨床医の援助を受ける必要があります。予測と説明の正確性、完全性、有用性については、明示的か黙示的かを問わず、いかなる保証も提供されません。著者および寄稿者は、ここに記載されている情報の使用から生じるいかなる誤り、欠落、またはいかなる結果についても責任を負いません。ユーザーは、臨床関連の決定を下す前に、自身の判断を下し、専門家に相談する必要があります。このリポジトリに含まれるソフトウェアと情報の使用は、完全にユーザー自身の責任で行われます。
IMHI データセットを構築するために収集された生のデータセットは、Reddit や Twitter などのパブリック ソーシャル メディア プラットフォームからのものであり、当社はプライバシー プロトコルと倫理原則に厳密に従い、ユーザーのプライバシーを保護し、メンタルヘルス関連のすべてのテキストに匿名性が適切に適用されることを保証します。 。さらに、誤用を最小限に抑えるために、この論文で提供されるすべての例は、適度な偽装スキームを利用して言い換えられ、難読化されています。
さらに、最近の研究では、LLM がジェンダーギャップなどの潜在的なバイアスを導入する可能性があることを示しています。一方、一部の誤った予測結果、不適切な説明、過度の一般化も、現在の LLM の潜在的なリスクを示しています。したがって、このモデルを実際のシナリオのメンタルヘルス監視システムに適用するには、まだ多くの課題があります。
このリポジトリ内の情報を使用またはアクセスすることにより、お客様は、著者、寄稿者、および関連組織または個人をあらゆる請求または損害から補償し、防御し、免責することに同意するものとします。
このプロジェクトでは、大規模言語モデル (LLM) を使用した解釈可能なメンタルヘルス分析に向けた取り組みを紹介します。初期の研究では、メンタルヘルス分析のための説明を生成する際に、ChatGPT や GPT-4 などの最新の LLM のゼロショット/少数ショットのパフォーマンスを包括的に評価しました。調査結果に基づいて、10 万 5,000 個の指導サンプルを含む解釈可能なメンタルヘルス指導 (IMHI) データセットを構築しました。これは、ソーシャル メディア上で解釈可能なメンタルヘルス分析のための初のマルチタスクおよびマルチソースの指導チューニング データセットです。 IMHI データセットに基づいて、解釈可能なメンタルヘルス分析のための最初のオープンソースの指示に従う LLM である MentaLLaMA を提案します。 MentaLLaMA は、ソーシャル メディア データに対してメンタルヘルス分析を実行し、その予測に対する質の高い説明を生成できます。また、8 つのタスクと 10 のテスト セットをカバーする 19,000 のテスト サンプルを使用した、解釈可能なメンタルヘルス分析のための初の総合的評価ベンチマークも紹介します。私たちの貢献は次の 2 つの論文で紹介されています。
MentaLLaMA 論文 |評価書
MentaLLaMA 論文で評価された 5 つのモデル チェックポイントを提供します。
MentaLLaMA-33B-lora: このモデルは、Vicuna-33B 基礎モデルと完全な IMHI 命令チューニング データに基づいて微調整されています。トレーニング データは 8 つのメンタルヘルス分析タスクをカバーしています。モデルは指示に従って正確なメンタルヘルス分析を行い、予測に対する質の高い説明を生成できます。計算リソースの制限のため、PeFT 手法 LoRA を使用して MentaLLaMA-33B モデルをトレーニングし、メモリ使用量を大幅に削減しました。
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 ラージ基礎モデルと完全な IMHI 完成データに基づいて微調整されています。モデルは指示に従うことはできませんが、メンタルヘルス分析を行い、完了ベースの方法で説明を生成することができます。このモデルのサイズが小さいため、推論が高速になり、展開が容易になります。
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 が利用可能な場合に自動的に使用するために使用されます。 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
vicuna-33B ディレクトリの下に配置する必要があります。次に、MentaLLaMA-33B-lora ウェイトをダウンロードし、 ./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.
私たちは、8 つのメンタルヘルス分析タスクをカバーする 10 の既存のデータセットから生データを収集し、それらを解釈可能なメンタルヘルス分析のためにテスト データに変換します。 10 個のテスト セットに関する統計は次のとおりです。
名前 | タスク | データ分割 | データソース | 注釈 | リリースされました |
---|---|---|---|---|---|
DR | うつ病の検出 | 1,003/430/405 | レディット | 弱いラベル | はい |
CLP | うつ病の検出 | 456/196/299 | レディット | 人間による注釈 | まだ |
恐ろしい人 | ストレス検出 | 2,837/300/414 | レディット | 人間による注釈 | はい |
SWMH | 精神障害の発見 | 34,822/8,705/10,882 | レディット | 弱いラベル | まだ |
T-SID | 精神障害の発見 | 3,071/767/959 | ツイッター | 弱いラベル | まだ |
悲しい | ストレス原因の検出 | 5,547/616/684 | SMS | 人間による注釈 | はい |
カム | うつ病/自殺原因の検出 | 2,207/320/625 | レディット | 人間による注釈 | まだ |
孤独 | 孤独感検出 | 2,463/527/531 | レディット | 人間による注釈 | まだ |
マルチWD | ウェルネス次元の検出 | 15,744/1,500/2,441 | レディット | 人間による注釈 | はい |
IRF | 対人リスク要因の検出 | 3,943/985/2,113 | レディット | 人間による注釈 | はい |
ソーシャルメディア上で解釈可能なメンタルヘルス分析のための初のマルチタスクおよびマルチソースの指示調整データセットである 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
ファイルレイアウトは命令チューニングデータと同じです。
19,000 のテストサンプルを使用した、解釈可能なメンタルヘルス分析のための初の総合的評価ベンチマークを紹介します。すべてのテストデータが公開されました。指示データは以下に配置されます
/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-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
コマンドに追加することで、応答生成プロセス中にそれを使用できます。分類子には次のテンプレートが必要です。
[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 の論文では、収集された生のデータセットごとに 1 つずつ、MentalBERT に基づいて 10 個のニューラル ネットワーク分類器をトレーニングしました。分類器は、説明が与えられた場合に分類ラベルを割り当てるようにトレーニングされます。 IMHI ベンチマークでの将来の評価を容易にするために、これら 10 個の分類子をリリースします。
すべてのトレーニング済みモデルは、IMHI テスト データで 95% 以上の精度を達成しています。ラベルを割り当てる前に、出力ファイルが/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 ベンチマークの 2 番目の評価指標は、生成された説明の品質を評価することです。私たちの評価論文の結果は、BART スコアが人による評価の 4 つの側面において人による注釈と適度に相関しており、他の自動評価指標を上回っていることを示しています。したがって、生成された説明の品質を評価するために BART スコアを利用します。具体的には、まずIMHI.py
スクリプトを使用して応答を生成し、 examples/response_generation_examples
のように応答ディレクトリを取得する必要があります。まず、BART スコア ディレクトリをダウンロードして/src
の下に置き、次に BART スコア チェックポイントをダウンロードします。次に、次のコマンドを使用して、BART スコアで応答をスコア付けします。
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
の下に配置する必要があります。
私たちは、解釈可能なメンタルヘルス分析のための自動評価ツールの調整に関する将来の研究を促進するために、AI が生成した説明に対する人間による注釈をリリースします。これらの人による評価結果に基づいて、人間の好みとの相関について既存のさまざまな自動評価指標をテストしました。私たちの評価論文の結果は、BART スコアが 4 つの側面すべてにおいて人間の注釈と適度に相関していることを示しています。
私たちの評価ペーパーでは、DR データセットの AIGC 結果のサブセットに、流暢性、完全性、信頼性、全体の 4 つの側面で手動でラベルを付けました。注釈は次のディレクトリにリリースされます。
/human_evaluation/DR_annotation
ここでは、うつ病検出データセット DR について ChatGPT によって生成された 163 個の説明にラベルを付けました。ファイルchatgpt_data.csv
には、ChatGPT によって正しく分類された 121 個の説明が含まれています。 chatgpt_false_data.csv
は、ChatGPT によって誤って分類された 42 個の説明が含まれています。 gpt3_data.csv
には、structGPT-3 によって正しく分類された 121 個の説明も含まれています。
MentaLLaMA の論文では、量的心理学を専攻する 1 人のドメイン専門家に、選択した 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 ファイルを参照してください。