MedPromptの紹介
先週こんな記事を教えてもらいました。
何やらMicorsoftが医療分野のLLMでいい結果が出せたらしいです。
ということで、今回はこの論文を簡単にまとめて紹介したいと思います!
厳密な言い方でない場合もありますが、ご了承ください
結論
最初に、結論を言いますと、
"プロンプト頑張れば、ファインチューニングしたモデルより高い性能が出せるぜ" です。
やり方
じゃあ、どうやってプロンプトを頑張ったかみていきましょう
(よくプロンプトエンジニアリングとか言ったりしますね)
これまで
といった手法で精度が高められることが知られていました
コンテキスト内学習とは、プロンプトに例を追加することです。
新しい回答に対して、適切なフォーマットで回答してくれる確率が高くなることが期待できます
コンテキスト内学習の例
質問: 喘息発作の際に最も効果的な治療法は何ですか?
プロンプトの例:
[例 1]
質問: 高血圧の最も一般的な原因は何ですか?
回答: 高血圧の最も一般的な原因は、遺伝的要因や生活習慣、特に塩分の摂取量の増加です。
[例 2]
質問: 糖尿病の初期症状には何がありますか?
回答: 糖尿病の初期症状には、頻繁な尿意、過度の渇き、疲労感、視力の問題などがあります。
思考の連鎖(CoT)とは、この問題を一歩ずつ考えてみよう」といったフレーズを追加することです。根拠、論理のある回答が得られる確率が高くなります
思考の連鎖の例
質問: 糖尿病患者が低血糖を経験する理由は何ですか?
糖尿病の定義から1つずつ考えて回答してください
回答: 糖尿病患者が低血糖を経験する主な理由は、
インスリン治療や経口血糖降下薬の過剰摂取、食事のスキップ、
または運動による血糖の過度な消費です。
思考の連鎖:
まず、糖尿病とは血糖値が異常に高い状態を指します。
糖尿病患者は通常、インスリン治療や経口血糖降下薬を使用して血糖を管理します。
低血糖は、これらの薬剤の用量が多すぎる場合、
または食事をとらずに薬を摂取する場合に発生することがあります。
さらに、運動によるエネルギー消費が増えると、
血糖値が急激に下がることもあります。これらの要因が合わさると、
糖尿病患者は低血糖を経験することがあります。
アンサンブルとは、複数出力した結果の多数決を結果にすることです
(一般?にはアンサンブルとは弱いモデルのk組み合わせで汎用性を持たせる学習を指します)
質問: 日本で一番多い苗字は?
佐藤
質問: 日本で一番多い苗字は?
佐藤
質問: 日本で一番多い苗字は?
田中
質問: 日本で一番多い苗字は?
佐藤
ユーザ:佐藤さんが日本一!
Medpromptはこれらの先行研究を改良しものを用いました。
結果
まず、上記のプロンプトが本当に効果があるのか調べてみました
横軸は、アメリカの医師国家試験の4択問題の正答率になっています。
一番良いもので、90%を超えていて悪いものでも80%超えています。(すごっ)
Zero shot… 直接ダイレクトに聞く場合は81.7%
Random few shot… ランダムな例を聞く場合83.9%
Random few shot, chain of thought… ランダムな例を聞く かつ ステップごとに区切って回答してもらう場合…87.3%
kNN based few-shot, cot… 関連ある例を聞く かつ ステップごとに区切って回答してもらう場合…88.4%
Ensemble w/ choice shuffle… 関連ある例を聞く かつ ステップごとに区切って回答してもらう かつ 多数決で出力を決める場合…90.2%
確かにこれらのプロンプトエンジニアは使えそうだとわかりましたね
次に、このプロンプトを用いた場合と、医療にファインチューニングしたモデルを比較したいと思います
x軸は日付で、y軸は米国の医師国家試験の正答率を示しています
Med Palm, Med Palm2というのがGoogleが開発した医療データでトレーニングさせたモデルです
一番右上のGPT-4(MedPrompt)が Med-Palm2より精度が良いことが示されました。
また、MedQAUS(米国医師国家試験)だけでなく
PubMedQA(生物医学データセット)
MedMCQA(インド医師学校入学試験4択)
MMLU(よくLLM評価に使われるデータセット)
でもMedPromptではいい成果がだせました。
めでたしめでたし
・・・?
個人的感想
ここからは個人的な感想です
medpromptの結果は高いけど、そもそものGPT4の結果もほぼMed Palmと同じぐらい正答率が高い
medpromptを用いたGPT4とGPT4で医療データでファインチューニングしたモデルを比較もみたかった
具体的なプロンプトの例はどこにあるのだろうか?企業秘密?
ともあれ、プロンプトエンジニアリングは大事