>100 Views
December 04, 25
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2025年度後期輪読会 #7 2025/12/4 ゼロから作るDeep Learning④ TD法(6.1~6.2) 京都大学大学院 工学研究科 M1 河田 賢斗
アジェンダ TD法とは? 「モンテカルロ法(MC法)」+「動的計画法(DP法)」 TD法の導出 𝐺𝐺𝑡𝑡 = 𝑅𝑅𝑡𝑡 + γ𝑅𝑅𝑡𝑡+1 + γ2 𝑅𝑅𝑡𝑡+2 + ・・・ = 𝑅𝑅𝑡𝑡 + γ𝐺𝐺𝑡𝑡+1 𝑣𝑣π 𝑠𝑠 = 𝐸𝐸π 𝐺𝐺𝑡𝑡 𝑆𝑆𝑡𝑡 = 𝑠𝑠 𝑀𝑀𝑀𝑀法 = 𝐸𝐸π 𝑅𝑅𝑡𝑡 + γ𝐺𝐺𝑡𝑡+1 𝑆𝑆𝑡𝑡 = 𝑠𝑠 (𝐷𝐷𝐷𝐷法)
アジェンダ 𝑣𝑣π 𝑠𝑠 = 𝐸𝐸π 𝐺𝐺𝑡𝑡 𝑆𝑆𝑡𝑡 = 𝑠𝑠 𝑀𝑀𝑀𝑀法 について ′ 𝑉𝑉π 𝑆𝑆𝑡𝑡 = 𝑉𝑉π 𝑆𝑆𝑡𝑡 + α 𝐺𝐺𝑡𝑡 − 𝑉𝑉π 𝑆𝑆𝑡𝑡 𝛼𝛼による調整を行いながら、価値関数 𝑉𝑉π を収益 𝐺𝐺𝑡𝑡 の 方向へ更新する 𝑣𝑣π 𝑠𝑠 = 𝐸𝐸π 𝑅𝑅𝑡𝑡 + γ𝐺𝐺𝑡𝑡+1 𝑆𝑆𝑡𝑡 = 𝑠𝑠 (𝐷𝐷𝐷𝐷法)について 𝑣𝑣π 𝑠𝑠 = 𝐸𝐸π 𝑅𝑅𝑡𝑡 + γ𝐺𝐺𝑡𝑡+1 𝑆𝑆𝑡𝑡 = 𝑠𝑠
アジェンダ = ∑𝑎𝑎,𝑠𝑠′ π 𝑎𝑎 𝑠𝑠 𝑝𝑝 𝑠𝑠 ′ 𝑠𝑠, 𝑎𝑎 {𝑟𝑟 𝑠𝑠, 𝑎𝑎, 𝑠𝑠 ′ + γ𝑣𝑣π (𝑠𝑠 ′ )}(ベルマン方程式) 𝑉𝑉π′ 𝑆𝑆𝑡𝑡 = � π 𝑎𝑎 𝑠𝑠 𝑝𝑝 𝑠𝑠 ′ 𝑠𝑠, 𝑎𝑎 {𝑟𝑟 𝑠𝑠, 𝑎𝑎, 𝑠𝑠 ′ + γ𝑣𝑣π (𝑠𝑠 ′ )} 𝑎𝑎,𝑠𝑠 ′ 今の状態における価値関数を、「次の状態における価値関数」を用いて逐次更新 していく(ブートストラップと呼ばれる原理) 𝑣𝑣π 𝑠𝑠 = � π 𝑎𝑎 𝑠𝑠 𝑝𝑝 𝑠𝑠 ′ 𝑠𝑠, 𝑎𝑎 𝑟𝑟 𝑠𝑠, 𝑎𝑎, 𝑠𝑠 ′ + γ𝑣𝑣π 𝑠𝑠 ′ 𝑎𝑎,𝑠𝑠 ′ = 𝐸𝐸π 𝑅𝑅𝑡𝑡 + γ𝑣𝑣π 𝑆𝑆𝑡𝑡+1 𝑆𝑆𝑡𝑡 = 𝑠𝑠
アジェンダ TD法の更新式を以下の通り記述出来る 𝑉𝑉π′ 𝑆𝑆𝑡𝑡 = 𝑉𝑉π 𝑆𝑆𝑡𝑡 + α 𝑅𝑅𝑡𝑡 + γ𝑣𝑣π 𝑆𝑆𝑡𝑡+1 − 𝑉𝑉π 𝑆𝑆𝑡𝑡 𝑅𝑅𝑡𝑡 + γ𝑣𝑣π 𝑆𝑆𝑡𝑡+1 をTDターゲットと呼び、TD法はTDターゲットの方向へと𝑉𝑉π 𝑆𝑆𝑡𝑡 を 更新する MC法とTD法の比較 MC法は𝐺𝐺𝑡𝑡 をターゲットとし、その方向へと 𝑉𝑉π を更新する 多くの時間を積み重ねて得られるため、「ばらつき」が大きい(「偏り」なし) 一方で、TD法のターゲットは1ステップ先の情報をもとに計算 1ステップ先のデータに基づくため、「ばらつき」は小さい
アジェンダ ただし、TDターゲットには推定値である 𝑉𝑉π が使われている(「推定値」で「推 定値」を更新している)(「偏り(バイアス)」がある) TD法の導出 TD法を使った方策の評価に関するeval メソッド eval(self, state, reward, next_state, done) で定義され、エピソードが終わ りがどうかを表すフラグdoneも引数として受け取る (方策評価)
アジェンダ SARSA 方策制御においても、評価と改善のプロセスを繰り返すことで、最適方策へと近 づける 「方策オン型」のSARSAという手法に取り組む 価値関数𝑉𝑉π 𝑆𝑆 ではなく、 𝑄𝑄π 𝑠𝑠, 𝑎𝑎 を対象にする必要性 状態価値関数𝑉𝑉π 𝑆𝑆 から行動価値関数𝑄𝑄π 𝑠𝑠, 𝑎𝑎 へとTD法を変更して考えると良い 以下は、Q関数を対象としたTD法の更新式である 𝑸𝑸′𝝅𝝅 𝑺𝑺𝒕𝒕 = 𝑸𝑸𝝅𝝅 𝑺𝑺𝒕𝒕 + 𝜶𝜶 𝑹𝑹𝒕𝒕 + 𝜸𝜸𝑸𝑸𝝅𝝅 𝑺𝑺𝒕𝒕+𝟏𝟏 − 𝑸𝑸𝝅𝝅 𝑺𝑺𝒕𝒕
アジェンダ 方策オン型の方策制御について 実際に行動を起こす方策(=挙動方策)と評価・改善を行う方策(=ターゲッ ト方策)が不一致 π′ 𝑎𝑎 𝑆𝑆𝑡𝑡 = � 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑄𝑄π (𝑆𝑆𝑡𝑡 , 𝑎𝑎) (1 − ε の確率/greedyな行動) ランダムな行動 (greedyな行動 ∶ 方策は改善される (ε の確率) ランダムな行動:探索が実施される) 「TD法の更新式」による評価及び上記の式による更新を繰り返すことで、 最適に近い方策を得ることが出来る
アジェンダ SARSAの実践(1/2) 1. Python 標準ライブラリのcollections.deque を用いる(直近の経験データ2つ分) 2. SarsaAgentクラスは方策オン型であり、 方策self.piからstateにおける行動を1つ選択 3. done=True の場合、ゴールにたどり着いたと みなす Q関数(将来において受け取る報酬の 総和)の値は常に0となる 4. 「TD法の更新式」を用いてself.Qを更新する 5. 方策を改善するため、greedy-probs関数を使 い、方策self.piの状態(state)でε-greedyの 行動をとれるようにする
アジェンダ SARSAの実践(2/2) SarsaAgent クラスを操作する際は、グリッドワールドのタスクに挑むものとする 10000回のエピソードで学習し、最後の段階ではenv.render_q(agent.Q)のコード によりQ関数を可視化する ゴールに到達した際には、 agent.update(next_state, None, None, None)という形で呼び出す