医療文書からInstructGPTを使って重要情報を抽出する
3つの要点
✔️ InstructGPTを使って対話形式で医療情報を自動的に取得する手法を提案
✔️ 略語の特定、医学実験の群情報抽出や投薬情報抽出などのタスクを実験
✔️ Zero-shot, few-shotで従来の先行研究を大幅に上回る精度を達成
Large Language Models are Few-Shot Clinical Information Extractors
written by Monica Agrawal, Stefan Hegselmann, Hunter Lang, Yoon Kim, David Sontag
(Submitted on 25 May 2022 (v1), last revised 30 Nov 2022 (this version, v2))
Comments: Accepted as a long paper to The 2022 Conference on Empirical Methods in Natural Language Processing (EMNLP)
Subjects: Computation and Language (cs.CL); Artificial Intelligence (cs.AI)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
概要
2022年の12月に登場したChatGPTに代表される、対話モデルの驚異的なパフォーマンスが話題を呼んでいます。このような進歩により、対話形式で既存のタスクにアプローチする研究が急速に増加しており、それは医療用自然言語処理も例外ではありません。
この論文では、医療文書から様々な情報をInstructGPT(ここではtext-davinci-002, text-davinci-edit-001)で自動的に抽出する手法を提案し、その精度を確認しています。略語(頭字語)の特定、共参照解析、医学実験の群情報抽出、投薬情報抽出の4種類のタスクで実験した結果、従来のZero-shotやFew-shotモデルの精度を大きく凌駕することが確認されました。
InstructGPTおよびPromptとは
InstructGPTはOpenAI社が開発した大規模言語モデルです。過去のGPTシリーズのモデルに比べ、人間が好むような出力を生成しやすいように強化学習を用いて訓練されており、その技術はChatGPTの性能の核であるとも言われています。InstructGPTはChatGPTのように対話に特化したモデルではないのですが、本研究のように対話形式で用いられることも多いです。
大規模言語モデルではしばしばPromptと呼ばれる、指示文のようなものをモデルへの入力として用います(以下の例の"Prompt: Create a list of medications."の部分)。そして指示文に続くような、尤もらしい文章をモデルに生成させることで回答を作成するのです。
上記の例はこの論文で実際に行った実験の例ですが、まずカルテを提示し、「薬剤のリストを作ってください」という指示文をモデルに入力しています。それだけで薬剤リストを獲得できています!
下に続くOne-shot(モデルに模範となるような入力ー出力例を1つだけ与えること)の例では、期待される出力例をモデルに予め与えることでさらに出力の高精度化を図っています。この実験では自然言語で得られていた回答が、リスト形式で与えられており、より計算機処理に親和性が高い表現を獲得できるようになっています。
本論文での情報抽出手法
本論文では、このPrompt手法を用いてInstructGPTから情報を獲得することを試みています。手法はとてもシンプルで、InstructGPTの出力から目的の情報を取り出すために、出力に対して、所望の形式になるような後処理をしてあげるだけです。
例えば下記の例は、カルテ中に登場する「PA」が何の略語かを求めたいタスクです。そのためにPromptとして、医療文書+"Expand the abbreviation: [略語]"を入力します。すると、InstructGPTがそれっぽい出力をしてくれるので、あとは図中に赤字で表されている「pulmonary artery」を後処理で抽出してくるだけです。この論文では元文書との差分を用いた後処理で抽出しています。
同様の手順で、薬剤情報抽出や共参照解析(代名詞などが指している具体的な内容を特定するタスク)、医学論文中の群抽出実験も行っています。下記の図中の青いハイライト部分が抽出したい情報です。後処理として箇条書きからリストへの変換や引用符の中の抽出などを行います。
また、それ以外の本論文で行った努力として、医療文書コーパスは利用規約が厳しく、そのままではOpenAIのAPIに送ることができないので、外部に送信できるようなデータを新規に作成していること(既存のデータに対してアノテーション)と、モデルに入力するPromptを独自に作成していることが挙げられます。
実験結果
実験では既存のZero-shot、One-shot、可能なすべてのデータを用いたファインチューニングの手法の精度と比較しています。
略語の特定
Zero-shotでもFine-tuningしたベースライン教師ありモデルの精度を大幅に上回っていることが確認できます(ただし、ベースラインモデルは医療文書に特化して学習した強いモデルではないので、そういったモデルと比べて優れているかは分かりません)。
群の抽出
群の抽出結果は表中右の"Abstract-level Accuracy"カラムですが、Zero-shotで先行モデルより大幅に優れています。
共参照解析
こちらもZero-shot, One-shot共に先行研究より優れています。()内は後処理スクリプトの行数を表していますが、Zero-shotだと出力のコントロールができず、複雑な処理が必要になることがわかります。したがって、モデル出力からうまく回答を抜き出せないケースがあるようです。
また、One-shotのときに正しい回答をモデルに与えた場合(correct)よりも間違った回答を与えた方(incorrect)が良い精度になるという、不思議な結果も出ています。
薬剤情報抽出
こちらも同じように、One-shotで教師ありモデルの精度を上回っています。
まとめ
本記事では、対話形式で医療情報を自動的に獲得する研究を紹介しました。実験結果はとても良好で、医療ドメインでも大規模言語モデルを用いた対話手法の有用性を大いに示唆する論文でした。
しかし、いくつか課題もあります。まず、生成手法はHallucinationと呼ばれる、入力にない情報を出力してしまいます。これは実際の医療現場に適用する手法としては相性があまり良くありません。指定した入力の文書に答えが存在しない、見つからない場合にはモデルにそのように出力させることが必要です。
後処理がかなりヒューリスティクスに依存しています。実際の生成を見ながら後処理を設計しており、Zero-shotのように出力がより自由になれば、エラーが多発してしまいます。
しかしながらGPT-4の登場など最近の巨大言語モデルの進歩はめざましく、今後もさらに巨大言語モデルを用いた研究は増加すると思われ、上記の課題解決も含めた様々な研究の登場が期待できます。
この記事に関するカテゴリー