| Up | パラメータ値の更新 | 作成: 2026-06-14 更新: 2026-06-14 |
パラメータ値θのもと,1回の試行で,つぎのデータが,ロボットの数だけ集まる: \[ ( s_t, a_t, r_t, s_{t+1}, done ) \] \( done \) は終了フラグで, 衝突や逸脱でエピソード終了 → True このデータのプール (「リプレイバッファ/経験プール」 ) を,D で表す。 損失関数 \( L( \theta ) \) \[ L( \theta ) = \mathbb{E} [\ ( y - Q(s_t, a_t\ ; \theta) )^2\ ] \] done = True なら: \[ y = r_t \] そうでなければ: \[ y = r_t + \gamma\ max \{ Q(s_{t+1}, a_{t+1}\ ; \theta^{-})\ |\ a_{t+1} \} \] \( \mathbb{E} \) は,Dの中で ( s_t, a_t, r_t, s_{t+1} ) を動かしたときの期待値をとることを意味する。 損失関数 \( L( \theta ) の読み方 行動 a_t の結果と合う \( Q(s_t, a_t) \) は,y である。 NN が示す \( Q(s_t, a_t) \) を \( y \) に近づけるべし。 即ち,\( L( \theta ) \) を小さくするように,\( Q(s_t, a_t) \) を変更すべし。 y ≈ r_t と見る: → r_t がプラス → y はプラス → Q(s_t, a_t ) がプラスになるように,パラメータ値更新 → r_t がマイナス → y はマイナス → Q(s_t, a_t ) がマイナスになるように,パラメータ値更新 しかし,t の間隔は短いので,r_t は信頼に足らない。 そこで,クッションとして \( \gamma\ max \{ Q(s_{t+1}, a_{t+1}\ ; \theta^{-})\ |\ a_{t+1} \} \) を付ける。 パラメータ値の更新: パラメータ値 θ を更新する(勾配降下) DQN は,いま (θ) の状況を前回 (θ_old ) の状況と比較するのではない。 いまの状況での Q値の誤差 (「今回の経験が Q値の式に合っているか」) だけを見て,更新する。 だから,状況が毎回違っても学習できる 最初は: F/R/L をほぼランダムに選ぶ しょっちゅう障害物にぶつかる 行路から外れまくる 障害物の左右位置を見て,適切な側に回り込む 無駄な旋回が減り,スムーズに進む |