Very impressive, the original implementation relied a lot on feature engineering.
I'm surprised they're able to prevent a self-play equilibrium with such a simple loss function.
It's sort of like they are using auxiliary outputs but instead of using them to fit features, they are fitting to multiple ways of arriving at 'best play', through predicting value (SL) and predicting probability for best outcome (RL). In principle, they're doing the same thing but in practice it seems like they are making up for each others shortcomings (e.g. self-play equilibrium with RL).