Q-Network のアーキテクチャ
最初の Deep Reinforcement Learning エージェントを学習させる準備がほぼ整いました。完全なトレーニングループに進む前に、エージェントの意思決定と学習能力を支えるニューラルネットワークのアーキテクチャが必要です。
先ほどの演習で定義した汎用アーキテクチャを修正していきます。
torch と torch.nn は演習に読み込まれています。
この演習はコースの一部です
Pythonで学ぶDeep Reinforcement Learning
演習の手順
- 最初の隠れ層を作成します。入力は環境の状態で、次元は
state_sizeです。 - 出力層を作成します。各アクションの Q 値を出力し、次元は
action_sizeです。 forward()メソッドを完成させます。この例では活性化関数にtorch.reluを使用します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
class QNetwork(nn.Module):
def __init__(self, state_size, action_size):
super(QNetwork, self).__init__()
# Instantiate the first hidden layer
self.fc1 = nn.Linear(____, ____)
self.fc2 = nn.Linear(64, 64)
# Instantiate the output layer
self.fc3 = nn.Linear(____, ____)
def forward(self, state):
# Ensure the ReLU activation function is used
x = ____(self.fc1(torch.tensor(state)))
x = ____(self.fc2(x))
return self.fc3(x)