昔話題になったAlphaGoではDQNという強化学習の一手法が用いられています。強化学習はゲームやロボット制御の分野でよく研究されていますが、医学研究でも活用されているのを知ったので紹介を兼ねて実装してみたいと思います。今回はTD法を用いて薬物依存の原因とされている報酬系(ドーパミン神経)をモデル化していきましょう。
ここでは計算論的精神医学の簡単な紹介とモデル化の概要にとどめます。(強化学習についてはわかりやすい記事があるのでそちらを読んでください。Actor Critic法はこれかPythonで学ぶ強化学習がわかりやすいと思います。)
計算論的精神医学とは、精神障害患者の示す特徴的な行動や神経活動に関して、その背景にあるプロセスを理論的な制約と物理的な制約を反映させた数理モデルによって明らかにするという、計算論的アプローチを用いて精神障害の研究を行う学問領域である。
(「計算論的精神医学」第2章より一部改変)
現代精神医学の問題として、
が挙げられます。 例えば、「幻覚や妄想は精神病で重複して観察されるので、幻覚や妄想が診断の指標にはならないのでは?」、「血中の白血球数を調べるといった客観的かつ定量的な診断ができないので、ほとんど患者自身の主観的体験の報告と行動観察に基づいて診断が行われるとその信頼性は怪しくない?」、「ドーパミン関連遺伝子とかドーパミンニューロンの精神回路についての研究成果はたくさんあるけど、ドーパミンが統合失調症にどう関与するかはまだわからないです...。」(ドーパミンD2受容体ブロッカーが統合失調症に効果があると判明したのは終戦直後なので、もう70年近く経っている。)といった問題があります。 それらの問題を解決するために、計算で人間の脳をモデル化しよう!というのが計算論的精神医学です。
「計算論的精神医学」では、Redishによる研究が紹介されています。今回はそれを参考にしてモデル化と実装を行います。
薬物依存症とは、薬物の効果が切れてくると、薬物が欲しいという強い欲求(渇望)がわいてきて、その渇望をコントロールできずに薬物を使ってしまう状態をいいます。薬物依存ともいいます。
(厚生労働省HP)
薬物に依存してしまうのは単純に薬物を得た際の報酬が高いからだとすると、薬物の快楽が薄れてもやめられないという依存状態を説明できません。ここでRedishは強化学習のActor Critic法を用いてTD誤差の拡張をすることで依存をモデル化しました。(ここでは元論文のような連続的な時間ではなく書籍と同じく段階的に状態遷移するモデルを考えます。)
まず、環境を設定します。眼の前にピーマン、チョコケーキ、コカインがおいてある状態を考えます。ピーマンは依存性は無いけど(単体では)美味しくもないもの,ケーキは依存性は無く美味しいもの,コカインは美味しいかどうかは知りませんが依存性があるものとして扱います。ここでエージェントは戦略に従って行動から1つを選択します。行動はそれぞれ「ピーマンを食べる」、「ケーキを食べる」、「コカインを摂取する」とし、行動後は状態に遷移します。状態ではそれぞれ食べたものに応じて報酬が与えられます。そこでTD誤差を用いて状態価値と戦略を更新し、その後エージェントは状態に遷移します。状態は日常生活に相当し、食べたものに関係なく一定の報酬が与えられます。もう一度同じく状態価値と戦略を更新します。以上が1エピソードで合計200エピソード繰り返します。
普通のActor Critic法では状態価値と戦略を以下のように更新します。
は学習率、は割引率を表します。 ここではTD誤差を薬物による過渡的なドーパミンの増加を用いて
とすることで、薬物を摂取したときには最低でも正の値を持ち、状態価値は増加し続けます。薬物を選択した場合以外ではとします。
「計算論的精神医学」では強化学習だけでなく、他にもノーベル賞を受賞したHodgkin-Huxleyモデルなどの生物物理学モデル、ニューラルネットワークモデル、ベイズ推論モデルによるうつ病、統合失調症、ASD、PTSDなどのモデル化事例も紹介されているので、気になった方は是非図書館で借りるか買ってみてください。
「Pythonで学ぶ強化学習」を参考に実装。説明はコメントアウトします。
環境(rewards
とdopamine
を調整することで色々な結果が得られます。)
Actorクラス
Criticクラス
Actor Critic法クラス
訓練用のヘルパー関数と訓練
累積行動選択回数と状態価値のグラフを描きます。