Deep Q学習入門

Pythonで学ぶDeep Reinforcement Learning

Timothée Carayol

Principal Machine Learning Engineer, Komment

Deep Q学習とは?

 

 

Q(state, action) を表す画像。状態は地球、行動はジョイスティックで表現

Pythonで学ぶDeep Reinforcement Learning

Q学習の復習

 

行動価値関数 Q_pi(s,a):状態sで行動aを取ったとき、その後方策piに従うと仮定した将来報酬の合計。Q_pi(s,a)=方策piに従う将来軌跡の期待値 E[R_tau | s_t=s, a_t=a]

 

 

  • Qがわかれば最適方策:$$ \pi(s_t) = {\arg\max}_a Q(s_t, a) $$

  • Q学習の目的:時間とともに$Q$を学習

Pythonで学ぶDeep Reinforcement Learning

Q学習の復習

決定論環境のベルマン方程式(Q学習):Q_pi(s_t,a_t)=報酬 r_t+1 + 割引率γ * max_{a_{t+1}} Q_pi(s_{t+1}, a_{t+1})

TDターゲット(Qターゲット、target Q-value):ベルマン方程式右辺。更新時の目標値 r_t+1 + γ * max_{a_{t+1}} Q_pi(s_{t+1}, a_{t+1})

  • ベルマン方程式:$Q$の再帰式
  • ベルマン方程式の右辺=「TDターゲット」
  • 各ステップ後、TDターゲットで$\hat{Q}$を更新

Q学習の更新則:Q_new = (1-α) Q_old + α * TDターゲット

Pythonで学ぶDeep Reinforcement Learning

Qネットワーク

4つの状態と4つの行動をもつQテーブル(計16セル)

Pythonで学ぶDeep Reinforcement Learning

Qネットワーク

9つの状態と4つの行動をもつQテーブル(計36セル)

Pythonで学ぶDeep Reinforcement Learning

Qネットワーク

多数の状態と4つの行動をもつQテーブル(約100セル)

Pythonで学ぶDeep Reinforcement Learning

Qネットワーク

  • Deep Q学習の中核:ニューラルネットワーク

2層の隠れ層をもつ全結合ニューラルネットの図

Pythonで学ぶDeep Reinforcement Learning

Qネットワーク

  • Deep Q学習の中核:ニューラルネットワーク

前スライドの地球画像が入力層に入る、2層の隠れ層をもつ全結合ネットの図

Pythonで学ぶDeep Reinforcement Learning

Qネットワーク

  • Deep Q学習の中核:状態をQ値に写像するニューラルネット

出力層の各ノードがジョイスティックの方向で表される行動に対応。上=0、右=1、下=2、左=3。

  • 行動価値関数を近似するネットを「Qネットワーク」と呼ぶ
  • DQNなどのDeep Q学習で一般的に使用
Pythonで学ぶDeep Reinforcement Learning

Qネットワークの実装

class QNetwork(nn.Module):

def __init__(self, state_size, action_size): super(QNetwork, self).__init__()
self.fc1 = nn.Linear(state_size, 64) self.fc2 = nn.Linear(64, 64) self.fc3 = nn.Linear(64, action_size)
def forward(self, state): x = torch.relu(self.fc1(torch.tensor(state))) x = torch.relu(self.fc2(x)) return self.fc3(x)
q_network = QNetwork(8, 4)
optimizer = optim.Adam(q_network.parameters(), lr=0.0001)
  • 入力次元:状態で決まる
  • 出力次元:可能な行動数で決まる

  • この例:

    • 隠れ層2層、各64ノード
    • 活性化関数:ReLU
Pythonで学ぶDeep Reinforcement Learning

Ayo berlatih!

Pythonで学ぶDeep Reinforcement Learning

Preparing Video For Download...