DiCE의 처음부터 실용적인 논문임을 강조했는데, 이는 단순한 구현방법에 있습니다. MagicBox는 두가지 특성을 만족하면 됐었는데, 이는 다음과 같이 정의함으로써 두가지 성질을 다 가져갈 수 있습니다. 아래선 위를 확인하도록 합니다.
□(W)=exp(τ−⊥(τ))
τ=∑w∈Wlog(p(w;θ))
⊥은 ∇x⊥(x)=0이 되도록 하는 gradient를 안흐르도록 하는 operator로 pytorch의 detach같은 역할을 합니다. ⊥(x)→x이므로, □(W)→1임이 자명합니다. 이로써 첫번째 성질이 증명되었습니다. 바로 두번째 성질을 증명하면 다음과 같습니다.
∇θ□(W)=∇θexp(τ−⊥(τ))
=exp(τ−⊥(τ))∇θ(τ−⊥(τ))
=□(W)(∇θτ−0)
=□(W)∑w∈W∇θlog(p(w;θ))
그리고 magicbox operator를 구현하게되면, 주로 objective와 바로 연관지어 구현하는게 가장 간단한데, 일반적인 RL에선 J=E[∑rt]로 나타낼 때, DiCE의 objective는 J□=∑t□({at′,t′≤t})rt로 나타내야합니다. (이는 이전의 action에 따라 reward에 stochastic하게 영향을 주기 때문입니다.