compcogneuro/sims: TD をネットワークにマッピングする
このページは外部資料の日本語訳です。原文の見出し順と本文順を保ち、コード・URL・出典表記はできるだけ原形のまま残しています。
出典とライセンス
原典: https://github.com/compcogneuro/sims/blob/main/ch8/rl/README.md
ライセンス: BSD 3-Clause。このページは日本語翻訳であり、変更点は翻訳とサイト内整形です。
# 導入
このシミュレーションでは、いくつかの基本的なパブロフ条件付け環境下で時間差分 (TD) 強化学習アルゴリズムを調査します。
TD 学習ルールを調べるために、単純な古典 (パブロフ) 条件付けタスクを使用します。このタスクでは、ネットワークは刺激 (トーン) がその後の報酬を確実に予測することを学習します。次に、タスクを 2 次条件付けのケースに拡張します。ここでは、別の刺激 (光) がそのトーンを確実に予測します。まず、この文脈で TD アルゴリズムの使用を正当化し、ネットワークで使用される刺激表現の性質を動機付ける必要があります。
デルタ ルール (別名レスコルラ ワグナー ルール) は古典的条件付けの優れたモデルを提供すると述べたことを思い出して、なぜ TD が必要なのか疑問に思っているかもしれません。それはすべて タイミング の問題に関係しています。応答に対する刺激のタイミングを無視すると、実際、すべてが 1 つのタイム ステップで発生する場合、TD ルールはデルタ ルールと等価になります (V(t) を r(t) に一致するようにトレーニングするだけです)。ただし、動物はタイミングの関係に敏感であり、私たちの目的にとってさらに重要なことは、このタイミングをモデル化することで、TD 学習の基本特性を特に明確かつ簡単にデモンストレーションできることです。
唯一の問題は、この単純なデモンストレーションには、タイミングの表現がやや非現実的であるということです。基本的に、刺激表現には各時点の刺激ごとに個別の単位があるため、TD システムが学習する固有のものが存在します。この表現は、サットンとバルト (1990) によって提案された 完全シリアル複合 (CSC) であり、モデルを見るとそれがどのように機能するかが正確にわかります。すでに述べたように、実行機能の章では、TD エラー信号が時間の経過とともに刺激を維持するコンテキスト表現の更新を制御する、より妥当な代替案を検討します。
TD をネットワークにマッピングする
TD アルゴリズム全体の一部をそれぞれ計算する 4 つの個別の TD レイヤーがあり、実際の TD 計算は、レイヤー自体間のネットワークレベルの相互作用を使用するのではなく、シミュレーション コードによって実行されます。 TD アルゴリズムに必要な加算と減算を計算するユニットを取得することは可能ですが、ユニットで表される値を直接使用してこれらの計算を実行する方がはるかに簡単で確実です。重要なネットワーク レベルの計算は、刺激の報酬値についての学習であり、これは Pred 層の特別なドーパミンのような学習ルールを使用して行われます。
各レイヤーの機能については次のとおりです。
-
Rew: 報酬入力、つまり US (無条件刺激) を活性化状態として表します (0 = 報酬なし、1 = 報酬)。 -
Pred: 主要な学習層。現在の刺激入力に基づいて、次のタイム ステップV(t+1)での報酬値を予測する方法を学習します。この予測は、Input層からの現在の重みに基づいて Leabra セトリングの プラス フェーズ で生成されます (線形無制限の活性化ルールが使用されるため、このユニットは任意の値を表すことができます)。一方、マイナス フェーズでは、層の状態は前の試行で行われた予測 (V(t)) に固定されます。 -
Integ: 報酬予測と外部報酬層の値を統合し、そのプラスとマイナスのフェーズの活性化状態の差が TD デルタ (ドーパミン様) 信号を駆動するものです。具体的には、マイナスフェーズのアクティベーションはV(t)です。これは 前の試行 で rew pred 層によって計算された報酬の期待値であり、プラスフェーズのアクティベーションは、次のトライアル (Pred から) の報酬の期待に、現時点で (Rew 層からの直接シナプス入力を介して) 受け取っている実際の報酬を加えたものです。したがって、そのプラス位相状態はRew値とPred値の合計であり、この合計はユニットの起動状態として直接クランプされます。 -
TD: Integ 層からプラスマイナス値を計算します。これは TD デルタ値を反映し、脳内のドーパミン信号のように作用すると考えられています。この TD 値は、層内の DA 値を設定します。これは、学習を促進する重要な Pred 層を含む他のすべての層にブロードキャストされます。
ネットワーク
まずはネットワークを調べてみましょう。 Input 層 (その下の TD 層によって表される中脳ドーパミン システムに対するこの皮質領域の相対的な解剖学的位置を捕捉するために最上部に位置します) には、それぞれ 20 ユニットの 3 行が含まれています。これは CSC で、行はそれぞれ異なる刺激 (A、B、C) を表し、列は時点を表します。各ユニットには刺激と時間エンコーディングがあります (例: A_10 = A 刺激の時間ステップ 10)。 TD層は上述した通りである。
- [[sim:Network]] タブの [[sim:Wts]] /
r.Wtをクリックし、次に Predlayer unit -- you will see that it starts with a uniform weight of 0. Then, click back to viewing [[sim:Act]] /Act` をクリックします。
基本的な TD 学習メカニズム
CSC が実際にどのように機能するかを見てみましょう。
- ツールバーの [[sim:Init]] をクリックしてから、[[sim:Step]]
Trialボタンをクリックして入力を進めます。
タイム ステップ 0 では刺激が存在しないため、Input 層では何も起こらないはずです。さまざまな TD 層も同様に 0 のままで、TD 層も活性化がゼロになります。したがって、期待された報酬も得られた報酬もありませんし、期待からの逸脱もありません。
- 入力レイヤーでアクティベーションが表示されるまで、[[sim:Step]]
Trialボタンを押し続けます (さらに 10 ステップ必要です)。
この入力活性化は、条件刺激 (CS) A (つまり、「トーン」刺激) が t=10 でオンになったという事実を表します。 TD レイヤーはこの CS をまだ報酬に関連付けていないため、これによる影響はありません。
- もう少し [[sim:Step]]
Trialに進みます。
この刺激はさらに 6 タイム ステップ (t=15 まで) アクティブなままであり、この期間の終わりに、Rew レイヤーの値が 0 ではなく 1 を表し、外部報酬がネットワークに配信されたことを示していることがわかります。 Pred 層はこの報酬を期待することを学習していないため、TD ユニットのアクティビティに反映されているように、TD デルタ値は正になります。この TD ドーパミンのスパイクは、Pred 層の学習も促進しました。これについては、次回この一連の試行を行うときに説明します。
-
[[[sim:Train Trial Plot]]] タブをクリックし、[[sim:Step Trial]] を実行して、20 タイム ステップのトライアルを終了します。 これにより、t=15 での TD ドーパミン スパイクが表示されます。
-
[[sim:Network]] に戻ってクリックし、タイム ステップ 14 まで次のトライアルまで [[sim:Step]]
Trialを実行します。
Pred 層がタイム ステップ 14 で弱くアクティブになり、次のタイム ステップで発生する報酬の予測を示していることがわかります。この報酬の期待は、Rew レイヤーで報酬が配信されない場合でも (0 値表現が表示されている)、TD の「ドーパミン スパイク」を引き起こすのに十分です。[[sim:Train Trial Plot]] をクリックしてプロット上で確認してください。
- [[sim:Step]]
Trialをもう一度実行します (t=15)。
ここで状況は逆転します。Rew レイヤーは、報酬が提示されたことを示していますが、TD 値は前の 1 から減少しています。これは、Pred レイヤーが前のタイム ステップでこの報酬を正確に予測しており、TD が通知する報酬予測誤差が予測量だけ減少しているためです。
- [[sim:Step]]
Trialを実行してトライアルの残りを処理し、[[sim:Train Trial Plot]] の表示に切り替えます。
このプロットは、TD デルタの「ドーパミン スパイク」が時間的に 1 ステップ後方 (前方) に移動したことを示しています。これは TD アルゴリズムの重要な特徴です。1 タイム ステップ後の報酬を予測することを学習することで、最終的にドーパミン スパイクをより早い時間に移動させることになります。
- さらに [[sim:Step]]
Trialを続けます。
スパイクは各 Step Trial に合わせて「逆方向」に移動しますが、タイム ステップ 10 の CS の開始よりも先に移動することはできません。
重みを調べて、ネットワークが何を学習したかを確認することもできます。
- [[sim:Wts]] /
r.Wtをクリックし、次にPredレイヤー ユニットをクリックします。タイム ステップ 10 ~ 14 の A 刺激からの重みが増加していることがわかります。 「[[sim:Weights]]」タブをクリックして、グリッド ビューで重みを確認することもできます。
消去と二次条件付け
現時点では、モデルを使用して調査できる古典的条件付けの標準的な現象が多数あります。 消滅 と *二次条件付け * の 2 つを見ていきます。消去は、刺激が報酬を予測できなくなったときに発生します。その後、刺激はこの報酬を予測する能力を失います (これは適切です)。先ほど説明したように、二次条件付けとは、条件付き刺激が別の刺激の無条件刺激として機能する場合です。つまり、報酬の予測を 2 つの別々の刺激にわたって後方に拡張できます。
t=15 で表示される米国の報酬をオフにするだけで、絶滅をシミュレートできます。
-
左側の [[sim:Envs]] ->
Trainをクリックし、USフィールドのActトグルをクリックしてオフにします。これにより、US が非アクティブになります。 -
次に、[[sim:Init]] (重みは初期化されません) を押し、ツールバーの [[sim:Reset Trial Log]] を押して [[sim:Train Trial Plot]] (クリックして表示します) をクリアし、次に [[sim:Step]]
Trialを押します。 プロット内の [[sim:Pred_Act]] 線をクリックすると、予測された報酬値が表示されます。 また、[[sim:Step]]Trialとネットワークを監視して、ネットワークがどのように動作するかを確認することもできます。
質問 8.4: 報酬が発生するはずだった時点で何が起こりましたか?実際に受け取った報酬値と比較した報酬期待の TD メカニズムを使用して、なぜこれが起こったのかを説明してください。