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

- 担当
- 筆頭著者・開発リード
- 使用技術
- PythonPyTorch
患者をコンピュータ上で再現するのは難しい
不確実なものを扱うとき、コンピュータシミュレーションは非常に強力です。 たとえば橋を造る前には、コンピュータ上で荷重をかけて強度を確かめます。天気予報では、雲の動きを計算して明日の天気を予測します。
しかし医療ではそうはいきません。患者の未来をシミュレーションすることは極めて困難です。患者の経過は、治療、生活習慣、環境、社会制度、そして確率など、複数の要因が複雑に絡み合って決まります。式に書き下せるものではありません。その結果、医療現場ではほとんどの決断が、事前のシミュレーションや高度な確率推定なしに行われています。
実診療データから学ぶ
生成AIを使って、すでに起きたことからパターンを導き出し、患者の将来の経過をデータとして生成することができます。
病院の電子カルテには、過去の患者の経過記録、たとえば診断、薬剤、検査結果、入退院履歴といったデータが膨大に眠っています。私たちは Watcher という生成AIを構築し、東京大学医学部附属病院の2億件を超える実際の診療記録を学習させました。患者のこれまでの経過をこのモデルに渡すと、それに続く将来の経過をシミュレーションし、生成してくれます。
このモデルは、同じ患者の経過を入力しても、毎回少し違うシミュレーション結果を生成します。モデルが確率的に振る舞う、ということです。これは患者さんの経過をシミュレーションするうえでとても重要です。患者さんの将来は一つに決まっているわけではないからです。予期せず病棟で転倒して骨折するかもしれないし、急に薬でアレルギーを起こすかもしれません。治療がうまくいって退院することもあれば、珍しい合併症が起きて退院が延びることもあります。さまざまな可能性が残ります。Watcher は、過去の診療記録からその可能性と確率を学び、学んだ確率に忠実にシミュレーションするように設計されています。
仕組み
モデルの仕組みは大規模言語モデル(LLM)と同じです。違うのは、扱う対象が文章ではなくカルテデータだという点だけです。LLM が文字や単語をトークンとして扱うのに対し、Watcher は病名や時刻、検査結果といった、患者さんのカルテ上の出来事をトークンとして扱います。そのため、生成されるのも文章ではなく、患者さんのカルテデータそのものです。

ただ、カルテは単語の並びではありません。性質の違う3種類のデータが混ざっているので、一つの系列として読ませるには、それぞれ別の扱いが要ります。
- カテゴリ
- 診断・薬剤・オーダー。コードの語彙として扱う。
- 数値
- 検査値。パーセンタイルに変換し、単位や尺度の違いを吸収する。
- 時間
- 年・月・日・時・分。順番ではなく値として符号化する。
時間をはっきり符号化しておくことで、「次に何が起きるか」だけでなく「いつ起きるか」まで答えられるようになります。同じ出来事が並んでいても、それが数時間のうちに起きたのか、数か月かけて起きたのかで、意味はまったく異なります。
どのくらい正確か
シミュレータによる未来の予想は、実際の結果と一致していなければ意味がありません。生成したタイムラインと実際の患者のデータを比較して検証しました。出来事の起きる頻度、検査値の分布、そして時間的な現れ方。いずれもよく一致しました。
最も重要な性質はキャリブレーションです。「10回に1回起きる」とモデルが言ったとき、本当に10回に1回起きるか。さまざまな転帰と期間で確かめたところ、実際に起きた頻度は、モデルが示した確率と高度に一致していました。
電子カルテに組み込む
モデルを作ることと、それを病院に届けることは、別の問題です。私たちは、TwinEHR という概念実証の電子カルテを作りました。臨床医が普段見ている画面の裏側でシミュレータを動かし、カルテ画面に結果を返す。その仕組みを実際に動かしてみせるデモです。論文では、これを導入の道筋を示す提案として紹介し、シミュレータが実際に稼働している電子カルテに組み込めることを、具体的な形で示しました。

今回は、モデルの学習と導入をより現実的なものにするため、診療データの標準規格である HL7 を使いました。HL7 は多くの病院ですでに使われている規格です。これに合わせておくことで、異なる病院のデータを同じ形に揃えたり、同じモデルを複数の病院に導入したりすることが、原理的に可能になります。
可能になりうること
Watcher のような生成モデルはまだ開発されたばかりであり、今後さらに検証と実験が必要ですが、将来的には以下のようなことに役立つかもしれません。
- 個別化された医療 — シミュレーションに基づき、患者さんごとに最適化された治療プランを提示する
- 仮想的な臨床試験 — 新しい薬の試験を、コンピュータ上で先に行う
- 反実仮想 — さまざまな治療や介入をシミュレーションし、起こりうる結果を比べる
詳細は論文にまとめています。モデルと周辺システムはいずれも公開しており、ドキュメントとリポジトリから辿れます。
最後までお読みいただき、ありがとうございました。