本文へスキップ
赤木雄
仕事一覧

Watcher

患者の経過をシミュレートするモデル。これまでのカルテを渡すと、起こりうる未来を書き出します。2億件を超える実診療記録で事前学習しています。

Watcherのアーキテクチャ図。コード・時刻・検査値からなる患者タイムラインを符号化し、デコーダのみのTransformerが次のイベントをサンプリングして先を生成する。
担当
筆頭著者・開発リード
使用技術
PythonPyTorch

患者をコンピュータ上で再現するのは難しい

不確実なものを扱うとき、コンピュータシミュレーションは非常に強力です。 たとえば橋を造る前には、コンピュータ上で荷重をかけて強度を確かめます。天気予報では、雲の動きを計算して明日の天気を予測します。

しかし医療ではそうはいきません。患者の未来をシミュレーションすることは極めて困難です。患者の経過は、治療、生活習慣、環境、社会制度、そして確率など、複数の要因が複雑に絡み合って決まります。式に書き下せるものではありません。その結果、医療現場ではほとんどの決断が、事前のシミュレーションや高度な確率推定なしに行われています。

実診療データから学ぶ

生成AIを使って、すでに起きたことからパターンを導き出し、患者の将来の経過をデータとして生成することができます。

病院の電子カルテには、過去の患者の経過記録、たとえば診断、薬剤、検査結果、入退院履歴といったデータが膨大に眠っています。私たちは Watcher という生成AIを構築し、東京大学医学部附属病院の2億件を超える実際の診療記録を学習させました。患者のこれまでの経過をこのモデルに渡すと、それに続く将来の経過をシミュレーションし、生成してくれます。

モデルが患者タイムラインを1イベントずつ生成していく様子。

このモデルは、同じ患者の経過を入力しても、毎回少し違うシミュレーション結果を生成します。モデルが確率的に振る舞う、ということです。これは患者さんの経過をシミュレーションするうえでとても重要です。患者さんの将来は一つに決まっているわけではないからです。予期せず病棟で転倒して骨折するかもしれないし、急に薬でアレルギーを起こすかもしれません。治療がうまくいって退院することもあれば、珍しい合併症が起きて退院が延びることもあります。さまざまな可能性が残ります。Watcher は、過去の診療記録からその可能性と確率を学び、学んだ確率に忠実にシミュレーションするように設計されています。

仕組み

モデルの仕組みは大規模言語モデル(LLM)と同じです。違うのは、扱う対象が文章ではなくカルテデータだという点だけです。LLM が文字や単語をトークンとして扱うのに対し、Watcher は病名や時刻、検査結果といった、患者さんのカルテ上の出来事をトークンとして扱います。そのため、生成されるのも文章ではなく、患者さんのカルテデータそのものです。

Watcherのアーキテクチャ図。カテゴリ・数値・時間の各エントリを個別に符号化して足し合わせ、デコーダのみのTransformer層を通して予測ヘッドが次のイベントをサンプリングする。
コード・数値・時刻を個別に符号化し、デコーダのみのTransformerがまとめて読む。

ただ、カルテは単語の並びではありません。性質の違う3種類のデータが混ざっているので、一つの系列として読ませるには、それぞれ別の扱いが要ります。

カテゴリ
診断・薬剤・オーダー。コードの語彙として扱う。
数値
検査値。パーセンタイルに変換し、単位や尺度の違いを吸収する。
時間
年・月・日・時・分。順番ではなく値として符号化する。

時間をはっきり符号化しておくことで、「次に何が起きるか」だけでなく「いつ起きるか」まで答えられるようになります。同じ出来事が並んでいても、それが数時間のうちに起きたのか、数か月かけて起きたのかで、意味はまったく異なります。

どのくらい正確か

シミュレータによる未来の予想は、実際の結果と一致していなければ意味がありません。生成したタイムラインと実際の患者のデータを比較して検証しました。出来事の起きる頻度、検査値の分布、そして時間的な現れ方。いずれもよく一致しました。

最も重要な性質はキャリブレーションです。「10回に1回起きる」とモデルが言ったとき、本当に10回に1回起きるか。さまざまな転帰と期間で確かめたところ、実際に起きた頻度は、モデルが示した確率と高度に一致していました。

電子カルテに組み込む

モデルを作ることと、それを病院に届けることは、別の問題です。私たちは、TwinEHR という概念実証の電子カルテを作りました。臨床医が普段見ている画面の裏側でシミュレータを動かし、カルテ画面に結果を返す。その仕組みを実際に動かしてみせるデモです。論文では、これを導入の道筋を示す提案として紹介し、シミュレータが実際に稼働している電子カルテに組み込めることを、具体的な形で示しました。

デジタルツイン電子カルテの構成図。実データが標準化・抽出を経てデジタルツインのサーバへ渡り、GPU上のシミュレータが要求に応えて結果をカルテ画面に返す。
実データを標準化してデジタルツイン側のサーバへ。シミュレーション要求はGPU上のモデルが処理し、結果がカルテに返る。

今回は、モデルの学習と導入をより現実的なものにするため、診療データの標準規格である HL7 を使いました。HL7 は多くの病院ですでに使われている規格です。これに合わせておくことで、異なる病院のデータを同じ形に揃えたり、同じモデルを複数の病院に導入したりすることが、原理的に可能になります。

可能になりうること

Watcher のような生成モデルはまだ開発されたばかりであり、今後さらに検証と実験が必要ですが、将来的には以下のようなことに役立つかもしれません。

  • 個別化された医療 — シミュレーションに基づき、患者さんごとに最適化された治療プランを提示する
  • 仮想的な臨床試験 — 新しい薬の試験を、コンピュータ上で先に行う
  • 反実仮想 — さまざまな治療や介入をシミュレーションし、起こりうる結果を比べる

詳細は論文にまとめています。モデルと周辺システムはいずれも公開しており、ドキュメントリポジトリから辿れます。

最後までお読みいただき、ありがとうございました。