精神科医をAIで置き換えるChatDoctor【ChatGPT】

https://github.com/Kent0n-Li/ChatDoctor

# ChatDoctor: 医療ドメインの知識を使用して LLaMA モデルで微調整された医療チャット モデル

## 概要
ChatDoctor は、 LLaMAモデルに基づく次世代 AI ドクター モデルです。このプロジェクトの目標は、患者の医療に関する質問に答え、パーソナライズされた医療アドバイスを提供できる、インテリジェントで信頼できるヘルスケア コンパニオンを患者に提供することです。

ChatDoctor は、医療アプリケーション向けに特別に設計された高度な言語モデルです。これは、医学文献の大規模なコーパスでトレーニングされており、医学用語、手順、および診断を深く理解しています。このモデルは、ChatDoctor の基盤として機能し、患者の症状と病歴を分析し、正確な診断を提供し、適切な治療オプションを提案できるようにします。

ChatDoctor モデルは、自然言語処理 (NLP) と機械学習技術を使用して、医師と患者の間の会話をシミュレートするように設計されています。患者は、チャット インターフェイスを介して ChatDoctor モデルと対話し、健康、症状、病状について質問することができます。次に、モデルは入力を分析し、患者の固有の状況に合わせた応答を提供します。

ChatDoctor モデルの重要な機能の 1 つは、時間の経過とともに学習して適応する能力です。より多くの患者がモデルと対話するにつれて、応答が改善され、精度が向上し続けます。これは、患者が時間の経過とともにますますパーソナライズされた正確な医療アドバイスを受けることを期待できることを意味します。

ChatGPT などの一般的なドメインでの最近の大規模言語モデル (LLM) は、指示に従い、人間のような応答を生成することに顕著な成功を収めています。しかし、このような言語モデルは、医療分野では個別かつ丁寧に学習されていないため、診断精度が低く、医療検査や投薬などを正しく推奨することができません。700 以上の疾患とそれに対応する症状、推奨される投薬、必要な医療検査を行い、5,000 件の医師と患者の会話を生成しました。医師と患者の会話のモデルを微調整することにより、これらのモデルは、患者のニーズを理解し、情報に基づいたアドバイスを提供し、さまざまな医療関連分野で貴重な支援を提供する大きな可能性を秘めています。これらの高度な言語モデルをヘルスケアに統合することで、ヘルスケアの専門家と患者のコミュニケーション方法に革命をもたらし、最終的にはケアの全体的な質と患者の転帰を改善できます。さらに、医療分野での対話モデルのさらなる開発を進めるために、すべてのコードとデータセット、およびモデルの重みをオープンソース化します。

# 設定：
pytorch が利用可能な conda env で、次を実行します。

```bash
pip install -r requirements.txt
```

インタラクティブなデモ ページ:
デモ ページ: https://huggingface.co/spaces/kenton-li/ChatDoctor 私たちのモデルはまだ 100% 正確な出力を達成していないことに注意してください。実際の臨床シナリオに適用しないでください。

https://huggingface.co/spaces/kenton-li/ChatDoctor

# データとモデル:
1. ChatDoctor トレーニング データセット:
次のトレーニング データセット InstructorDoctor-5K をダウンロードできます:リンク

InstructorDoctor-200k:リンク

InstructorDoctor-200k は、「MedDialog: 大規模な医療対話データセット」に基づいています。

# 2. モデルの重量:
チェックポイントをダウンロードするには、次のフォームに記入してください: link。モデルの重みファイルを ./pretrained フォルダーに配置します。

## 微調整の仕方

```bash
torchrun --nproc_per_node=4 --master_port=<your_random_port> train.py \
   --model_name_or_path <your_path_to_hf_converted_llama_ckpt_and_tokenizer> \
   --data_path ./chatdoctor5k.json \
   --bf16 True \
   --output_dir pretrained \
   --num_train_epochs 3 \
   --per_device_train_batch_size 4 \
   --per_device_eval_batch_size 4 \
   --gradient_accumulation_steps 8 \
   --evaluation_strategy "no" \
   --save_strategy "steps" \
   --save_steps 2000 \
   --save_total_limit 1 \
   --learning_rate 2e-5 \
   --weight_decay 0. \
   --warmup_ratio 0.03 \
   --lr_scheduler_type "cosine" \
   --logging_steps 1 \
   --fsdp "full_shard auto_wrap" \
   --fsdp_transformer_layer_cls_to_wrap 'LLaMADecoderLayer' \
   --tf32 True
```

## 推論の方法
自分のマシンで ChatDoctor モデルを構築し、それと通信できます。

```bash
python chat.py
```

## 序章
ChatGPT などの命令に従う大規模言語モデル (LLM) の開発は、命令の理解と人間のような応答の生成における顕著な成功により、大きな注目を集めています。これらの自己回帰 LLM は、次のトークンを予測することによって Web スケールの自然言語で事前トレーニングされ、その後、大規模な人間の指示に従うように微調整されます。また、幅広い NLP タスクと目に見えないタスクへの一般化で強力なパフォーマンスを示しており、自然言語理解、テキスト生成、会話型 AI などのさまざまな問題に対する統合ソリューションとしての可能性を示しています。ただし、医療分野でのこのような汎用ドメインの LLM の探索は、ヘルスケアのコミュニケーションと意思決定を変革する大きな可能性を秘めているにもかかわらず、比較的未開発のままです。具体的な理由は、既存のモデルが医療分野を詳細に学習していないため、モデルが医師の役割を演じる際に誤った診断や誤った医療アドバイスを行うことがよくあるためです。医師と患者の会話のデータに基づいて大規模な言語対話モデルを微調整することにより、医療分野でのモデルの適用を大幅に改善できます。特に医療リソースが不足している地域では、ChatDoctor を患者の初期診断とトリアージに使用できるため、既存の病院の運用効率が大幅に向上します。医師と患者の会話のデータに基づいて大規模な言語対話モデルを微調整することにより、医療分野でのモデルの適用を大幅に改善できます。特に医療リソースが不足している地域では、ChatDoctor を患者の初期診断とトリアージに使用できるため、既存の病院の運用効率が大幅に向上します。医師と患者の会話のデータに基づいて大規模な言語対話モデルを微調整することにより、医療分野でのモデルの適用を大幅に改善できます。特に医療リソースが不足している地域では、ChatDoctor を患者の初期診断とトリアージに使用できるため、既存の病院の運用効率が大幅に向上します。

ChatGPT などの大規模な言語モデルは非オープン ソースの状態であるため、Meta の LLaMA を使用し、最初にスタンフォード アルパカから提供された 52K の指示に従うデータを使用して一般的な会話モデルをトレーニングし、次に収集した医師でモデルを微調整しました-患者の会話データセット。私たちの方法の主な貢献は3つあります。

医療分野で大規模な言語モデルを微調整するためのプロセス フレームワークを設計しました。
大規模な言語モデルを微調整するために、5,000 件の医師と患者の会話でトレーニング データを収集しました。
医療分野の知識を備えた微調整されたバイグラムが、臨床応用の真の可能性を秘めていることを検証します。
医師と患者の会話データセット
医師と患者の会話データセットを構築するための最初のステップは、ゴールド スタンダードとして機能する疾患データベースを収集することです。そのため、約 700 の疾患とその関連症状、医療検査、および推奨される薬を含む疾患のデータベースを収集して整理しました。学術的な予算で高品質の会話モデルをトレーニングするために、疾患データベースからの各メッセージをプロンプトとして ChatGPT API に個別に入力し、指示データを自動的に生成します。ChatGPT API へのプロンプトには、病気や症状、薬のゴールド スタンダードが含まれているため、微調整された ChatDoctor は、ChatGPT の流暢な会話を実現できるだけでなく、ChatGPT と比較してより高い診断精度も実現できます。

## モデルのトレーニング
Meta の LLaMA モデルを利用して ChatDoctor を構築します。これは、公的にアクセス可能な優れた LLM です。特に、その 70 億のパラメーターにもかかわらず、LLaMA の有効性は、いくつかの NLP ベンチマークで、かなり大きな GPT-3 (1,750 億のパラメーターを持つ) と比較して、競争力のある、または優れた結果を達成できることが報告されています。LLaMA のパフォーマンスの向上は、パラメーターの量ではなく、トレーニング データの大きさを増幅することによって達成されました。具体的には、LLaMA は、CommonCrawl や arXiv ドキュメントなどの公的にアクセス可能なデータ リポジトリから調達された 1.4 兆のトークンでトレーニングされました。ChatGPT を介して合成された会話デモンストレーションを利用し、その後、スタンフォード アルパカ トレーニング方法論に従って、LLaMA モデルを微調整するために開業医によって検証されます。微調整プロセスは、6 A*100 GPU を使用して 30 分間実行されました。トレーニング プロセスで使用されたハイパーパラメータは次のとおりです。合計バッチ サイズ 192、学習率 2e-5、合計 3 エポック、最大シーケンス長 512 トークン、ウォームアップ比 0.03、重み減衰なし.

## 制限事項
ChatDoctor は学術研究のみを目的としており、商用利用および臨床利用は禁止されていることを強調します。この決定には 3 つの要因があります。まず、ChatDoctor は LLaMA に基づいており、非商用ライセンスを持っているため、必然的にこの決定を継承しました。第二に、私たちのモデルはヘルスケア関連の目的でライセンスされていません. また、十分なセキュリティ対策が設計されておらず、現在のモデルは依然として医療診断の完全な正確性を保証していません.

## 参照
ChatDoctor: 医療ドメインの知識を使用して LLaMA モデルで微調整された医療チャット モデル

# 例:
以下は、モデルの結果の一部です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/ee6b0564-c1c8-d39e-bc5f-8cb6b743530f.png)