Gorila

約3分で読めます
⚠️ 注意: この記事はまだ作成中(Work In Progress)です。
目次

Massively Parallel Methods for Deep Reinforcement Learning(2015)

Gorila という分散アーキテクチャにより,DQN を複数マシンで大規模並列実行し,学習時間を 1/10 に短縮しつつ性能を向上させた.

背景

今までの強化学習は,単一マシンで単一環境において学習を進めていた.しかしこれでは時間がかかる. Actor と Learner を複数のマシンに分けて同時に動かす Gorila により,早くかつ賢く学習できるようにした.

##

graph TD
    %% Parameter Server 最上部
    P[Parameter Server]

    %% Learners
    L1[Learner 1]
    L2[Learner 2]
    P -->|θ・θ⁻配布| L1
    P -->|θ・θ⁻配布| L2
    L1 -->|勾配| P
    L2 -->|勾配| P

    %% Replay Memories
    R1[Replay Memory 1]
    R2[Replay Memory 2]
    L1 --> R1
    L2 --> R2

    %% Actors
    A1[Actor 1]
    A2[Actor 2]
    A1 --> R1
    A2 --> R2
    P -->|θ配布| A1
    P -->|θ配布| A2
graph RL
    subgraph Machine_1
        A1["Actor"] --> R1["Replay Memory"] --> L1["Learner"]
    end
    subgraph Machine_2
        A2 --> R2 --> L2
    end
    L1 --> PS["Parameter Server"]
    L2 --> PS
    PS --> A1
    PS --> A2
  • Actor:複数動作し,異なる状態を探索.
  • Replay Memory:分散か単一かは構成による.
  • Learner:DQN の損失で勾配計算し,Parameter Server に送信.
  • Parameter Server:全体のパラメータ θ⁺ を保持し,非同期 SGD で更新.
flowchart LR
    subgraph Actor-Machine群
        A1[「Actor 1」] -->|状態・行動・報酬の列| L["キュー"]
        A2[「Actor 2」] -->|状態・行動・報酬の列| L
        A3[「Actor N」] -->|状態・行動・報酬の列| L
        L -->|バッチ学習| B[「Learner」]
        B -->|新しいパラメータ| A1
        B --> A2
        B --> A3
    end