[ChatDoctor] AIドクターが臨床を代替する時代。

ChatDoctorとは?


"The ChatDoctor is an advanced language model that is specifically designed for medical applications"
「ChatDoctorとは、医療用途に特化して設計された先進的な言語モデルです」

ユーザーは、Lineのようなチャットを通じてChatDoctorモデルと対話し、健康状態や症状、病状について質問することができます。
すると、モデルはその入力を分析し、患者さん固有の状況に合わせた回答を提供してくれます。

ChatDoctorとの会話例

ChatDoctorの目標は以下のようになっています

  • パーソナライズされた医療のアドバイスを提供

  • 賢く、信頼できるヘルスケアコンパニオン

  • 最終的には患者のケアと治療成績の全体的な効率と質を向上させる

オンラインデモを体験されたい方は、こちら(link)からHungging Face(自然言語処理で最も難しいとされる対話に注目して生まれた、文章からの情報摘出を強みとするオープンソースのプラットフォーム) に登録が必要。

デモページ:https://huggingface.co/spaces/ChatDoctor/ChatDoctor 

ただ、「まだ100%正確な出力を達成していませんので、実際の臨床シナリオに適用しないでください」との注意があります。

では、以下で特徴や使用されているモデルについて、かなり詳しく解説していきます。

事前知識 (読み飛ばしてもOK)

NLP(自然言語処理): NLPは、コンピュータと人間が自然言語を通じて相互作用することに焦点を当てた人工知能のサブフィールドです。NLPの主な目標は、コンピュータが意味のあるかつ有用な方法で人間の言語を理解、解釈、生成できるようにすることです。NLPの技術は、感情分析、機械翻訳、音声認識、テキスト要約などのさまざまなアプリケーションで使用されています。

LLM(大規模言語モデル): LLMは、人間の言語を理解し生成するように設計された特定のタイプの機械学習モデルを指します。これらのモデルは通常、大量のテキストデータで訓練され、トランスフォーマーなどの高度なディープラーニングアーキテクチャを使用します。GPT-3やGPT-4などのモデルがLLMの例です。

LLaMA(Large Language Model Meta AI): 大規模言語モデル(LLM)の事後適応(Fine-tuning)技術を指す用語です。事前学習済みの大規模言語モデルは、一般的には広範な知識を持っており、多くのNLPタスクに対して高い性能を発揮しますが、特定のタスクやドメインにおいては最適ではないことがあります。ここでLLaMAが役立ちます。LLaMAは、事前学習済みの言語モデルに対して、追加の学習(Fine-tuning)を行い、そのモデルを特定のタスクやドメインに特化させることができます。これにより、モデルの性能が向上し、より正確で信頼性の高い結果を得ることが可能となります。例えば、医療分野のテキスト分析を行う際に、事前学習済みの言語モデルを医療関連のデータセットでFine-tuningすることで、医療分野においてより正確な予測や分析ができるモデルを作成できます。

特徴

1.自然なやりとり

ChatGPTを使っている方なら分かる通り自然言語処理 (NLP) の技術が進歩し、現在のAIはかなり自然なやり取りをすることが出来ます。

ChatDoctorでも同様に、ChatGPTにも代表される大規模言語モデル(LLM)を使用しており、人間と同等レベルの自然な応答を行うことを実現しています。

具体的には、LLaMA (Metaが開発した、小型ながらも高性能なLLM)を使用し、Stanford Alpacaが提供する52000個の命令追従データを用いて汎用会話モデルの学習を行ったそうです。

2.精度の向上

先述したLLMは人間の指示の理解や人間のような応答を生成することはできますが、自然さを優先するあまり、精度が完璧であるとは言えず、これでは医療診断や投薬などに関して判断を下すことには適していません。
そこでChatDoctorでは収集したデータによる微調整を行い、会話の流暢さと正確性を兼ね備えた回答を下せるようにした。その結果、医療領域の知識を用いて微調整されたモデルは、臨床に応用できる可能性が出てきています。

実際の疾患に基づく推奨薬の精度:
- ChatGPT:87.5%
- ChatDoctor:91.25%

3.さらなる学習

ChatDoctorモデルの大きな特徴の一つは、時間の経過とともに学習し適応する能力です。より多くの患者さんがこのモデルに接することで、応答が洗練され、その精度が向上していくのです。
つまり、患者さんは、時間の経過とともに、よりパーソナライズされた正確な医療アドバイスを受けることができるようになるのです。
人間が使えば使うほど学習され、精度が上がっていくようです。いずれ、病院にかかる必要がない時代が来るかもしれませんね。

モデルについて

*ニッチなことなので読み飛ばしてOKです

1. 学習手法

全体の流れは以下のようになっています

学習の流れ

700の疾患データを収集し、5000の医師と患者の会話をChatGPT APIで生成し、それを実際の患者-医師間の会話を20万件のデータを用いてLLaMAで微調整をしています。具体的なステップは以下の通りです

  1. 700以上の病気とそれに対応する症状、必要な医療検査、推奨薬などを収集する

  2. そこからChatGPTのAPIを使用して5Kの医師と患者の会話を生成 (これだけでは精度を確保しつつも、会話の多様性が低い)*予算が限られてたためChatGPTに頼るほかなかったっぽい

  3. Q&A医療相談サイトから実際の患者-医師間の会話を20万件を収集

  4. これらのデータを手動および自動でフィルタリングして医師名や患者名を削除し、言語ツールを使って回答中の文法的な誤りを修正

2. 学習データ

ChatDoctorは、大規模な医学文献のコーパス(テキストや会話と大規模に集めてデータベース化した言語資料)で学習され、医学用語、処置、診断について深く学習しています。

これにより、患者の症状や病歴を分析し、正確な診断を行い、適切な治療法を提案することが可能になっています。

さらにChatDoctorは、医療分野における対話モデルのさらなる開発を促進するため、すべてのソースコード、データセット、重みなど全て公開しています。ただし、一部のリソースは以下のリンクから登録することが必要です。(https://forms.office.com/Pages)

実際に公表されている具体的なソースは以下の通りです

  • 20万の患者と医師のリアルな会話 from HealthCareMagic.com

  • 2万6千の患者と医師との実際の会話 from icliniq.com 

  • ChatGPT GenMedGPT-5kと疾患データベースから生成した5kの患者・医師間の会話

  • Stanford Alpacaのデータによる微調整: Alpacaのリンク

臨床に使える?

結論から言うと、ChatDoctorはまだ学術研究用であり、商用利用や臨床利用は一切禁止されています。
理由は下記3つです:

  1. 非商用ライセンスであるLLaMAを使用しているため

  2. 医療関連のライセンスを受けていないこと。

  3. セキュリティ対策が不十分であり、現在のモデルでは、医療診断の正しさを保証することができない

ただ先述した通り、精度が既に90%を超え、これからも学習が進み精度が上がる事を考慮すると、そう遠くない未来には臨床に応用できるほどの精度になることは期待できるでしょう。

最後に

いかがでしたか?精度が上がり、実際に導入することが出来るレベルになりそうです。診療をAIにやってもらう時代はそう遠くないかもしれませんね。医師不足の解決や、医療費の削減になったらいいですね。

参考

おまけ

ニッチなので読まなくてもいいです。メモ程度に残しています。

微調整の具体的手法

Stanford Alpacaの学習方法に従って、LLaMAモデルの微調整を行った。
A*100 GPU (NVIDIA社の機械学習が得意な超高性能なGPU) を6台使用し、30分間かけて行われた。
ハイパーパラメータは以下の通りです。

  • total batch size of 192:

  • learning rate: 2e-5

  • total of 3 epochs

  • maximum sequence length: 512 tokens

  • warmup ratio: 0.03

  • no weight decay.

LLaMAについて

LLaMAは、70億ものパラメータを持つにもかかわらず、いくつかのNLPベンチマークにおいて、GPT-3(1750億のパラメータを持つ)と比較して、LLaMAの有効性が競争的または優れた結果を出している。これは、パラメータ量とは対照的に、学習データの大きさを増幅することにより実現している。具体的には、CommonCrawlやarXivドキュメントなど、一般にアクセス可能なデータリポジトリから取得した1.4兆個のトークンでLLaMAを学習した

n-gram

n-gram(エヌグラム)は、自然言語処理(NLP)や情報検索の分野で用いられる、テキストデータの連続したn個の単語や文字のグループのことを指します。n-gramは、テキストや文書の統計的な特徴を捉えるために使用され、言語モデルやテキストマイニング、スペルチェックなどのタスクで役立ちます。

n-gramは、nの値によって異なる種類があります。

  1. unigram(ユニグラム): n=1の場合、各単語や文字が個別に扱われます。

  2. bigram(バイグラム): n=2の場合、連続する2つの単語や文字のペアが扱われます。

  3. trigram(トライグラム): n=3の場合、連続する3つの単語や文字のグループが扱われます。

例えば、「私は犬が好きです」という文でbigram(バイグラム)を作成する場合、次のような5つのペアが生成されます。

  1. 私は

  2. は犬

  3. 犬が

  4. が好き

  5. 好きです

n-gramの利用により、テキスト内の単語や文字の出現パターンを分析でき、言語モデルの生成やテキスト分類などに応用されます。ただし、nの値が大きくなると、計算量やデータ量が増加し、モデルの複雑さも増すため、適切なnの値を選択することが重要です。

今回の場合はbigram (n=2)が使用されています。


この記事が気に入ったらサポートをしてみませんか?