기존 강화학습 알고리즘들은 벨만 방정식을 토대로 형성되어있다. 벨만 방정식에 따라 에이전트가 학습을 하면 return에 대한 expectation을 학습하게 된다. 하지만 expectation을 취함에 따라 여러 유용한 정보를 놓치게 된다.
따라서 return의 expectation이 아닌 return의 distribution을 학습하겠다는 것이 논문의 핵심이다. 이렇게 expectation이 ditribution으로 바뀌면서 고려해야할 사항들이 몇 가지 있다.
우선 원래 벨만 방정식에서 r + gamma * V(s')을 계산할 때는 scalar 값으로 그냥 계산했지만 distribution의 경우 (value function V 대신 return의 distribution Z로 표현) r + gamma * Z(s')을 계산해야한다. 이 연산에 따라 어떻게 Z(s')이 변하는지는 논문에 그림이 첨부되어있다. 이렇게 V 대신에 Z를 사용하는 벨만 방정식을 distributional Bellman equation이라고 한다.
두 번째는 (r + gamma * Z(s'))과 Z(s) 사이의 거리를 측정할 방법이다. 분포 사이의 거리를 측정하는 가장 기본적인 방법이 KL-divergence인데 KL-divergence 같은 경우 한 분포가 0인데 다른 분포가 0이 아닌 구간이 있으면 발산해버리는 단점이 있어서 논문에서는 Wasserstein metric을 사용해서 증명한다. 하지만 실제 구현할 때는 return의 최대 최소를 정한 다음에 최소에서 최대까지 discrete하게 쪼개서 각 부분에서 하나의 확률값을 가지도록 한다. 이 때 작은 epsilon을 더해줌으로서 모든 부분에서 확률이 0이 안되도록 한다. 때문에 실제 코드에서는 KL-divergence를 사용한다.
이 때, return의 구간을 51개로 나누기 때문에 C-51이라고 부른다. 51개의 숫자는 매직넘버 ^^