6.5 DIAL Details

좀 더 자세하게 DIAL의 알고리즘에 대해 알아보겠습니다. 아래 그림처럼 C-Net은 다음과 같은 input과 output을 가집니다.

Q(),mta=CNet(ota,m^t1a,ht1a,ut1a,a;θi)Q(\cdot),m^a_t = \mathrm{C-Net}(o^a_t,\hat{m}^{a'}_{t-1},h^a_{t-1},u^a_{t-1},a;\theta_i)

agent a의 observation, 다른 agent로부터 받은 message, hidden state, 이전 action, 그리고 agent에 대한 index를 input으로 가지고, output으로 Q값과 message를 가지게 됩니다. action select은 ϵ\epsilon-greedy하게 뽑기만 하면 되므로, 어렵게 생각할 것은 없습니다. 모든 agent의 action이 이렇게 선택되게 되면, environment에 전달되고, 그로인해 state가 바뀌고, 그에 따른 reward를 받게됩니다.

이렇게 반복되어 마지막 state에 도착하거나, 정해놓은 마지막 time-step에 도달하면, 그에 따라 update를 진행하면 됩니다. 이 때, target network에 의해 만들어진 ytay^a_t 를 사용한 l2 loss를 구해 Q-network는 업데이트하면 되고 이제 message를 어떻게 업데이트할 건지 보겠습니다.

message는 두 가지 loss로 구성되는데, 첫 번째로는 message mtam^a_t에 대해서 l2 loss를 구해야합니다.(그렇게 하기 위해선 t+1의 Q값을 사용해야합니다.) 그리고 그에 대한 메세지에 대해 미분합니다. 이는 message의 error에 대한 loss입니다. 두번째로, message가 미래 reward에 미치는 영향을 계산하기 위해, 보내는 message mt+1am^{a'}_{t+1}에 대한 받은 messagemtam^a_t의 편미분과 그를 message gradientμt+1a \mu^{a'}_{t+1}에 곱합니다.

decentralized execution때는 message를 continuous하게 학습시켰던 message를 (activation function을 대체하는 식으로)unit step function같이 처리하면 됩니다.

m^=1{mta>0}\hat{m} = \bm{1}\{m^a_t > 0\}

continuous 한 communication을 discrete하도록 학습시키기위해 두가지 방법이 사용됩니다. 하나는 Gaussian noise를 넣는 것(noise를 통해 message의 값이 중간에 위치하는 것을 방해하도록 합니다.), 그리고 logistic function을 통해 정보의 범위를 제한시키는 것 입니다. 이는 정보를 regularization합니다. 이 것이 알고리즘의 전부인데, 수도코드를 통해 다시 한번 확인해보면 좋겠습니다.

특징으로는 앞에서 나왔지만 Target Network는 사용하지만 Experience Replay가 존재하지 않고, joint action을 고려하지 않는 점이 있습니다.

의문점

  • j와 t 둘다 time step인데 j에 대한 명확한 설명이 없습니다. j=t라 생각하였습니다. i는 network parameter에 대한 notation입니다.

  • m^t+1am^ta\frac{\partial \hat{m}^{a'}_{t+1}}{\partial \hat{m}^a_t}가 어떻게 미래의 reward에 대한 기여를 계산할 수 있는지 의문이 있습니다. JJ를 maximize하는 방향으로 m^t+1aθ\frac{\partial \hat{m}^{a'}_{t+1}}{\partial \theta}를 구하고 받은 message m^taθ\frac{\partial \hat{m}^{a}_{t}}{\partial \theta}에 대한 기여를 나눠서 구한 수식이라고 이해했습니다.

Last updated