1) Inicjalizacja: agent (policy neural network) z randomowymi wagami. 2) Environment loop: kopie tej samej policy (lub roznych snapshotow z historii) sa parowane w interakcji — gra, walka, dialog, atak/obrona. 3) Trajectory generation: agent obserwuje stany, wybiera akcje, otrzymuje nagrody. Kazda partia generuje trajektorie (state-action-reward tuples) dla obu stron. 4) Reward assignment: nagroda z wyniku (wygrana=+1, przegrana=-1, remis=0 w grach; w safety — attacker=+1 za sukces ataku, defender=+1 za resist+complete task). 5) Policy update: standardowe algorytmy RL (PPO, REINFORCE, DQN, Actor-Critic, Q-learning) aktualizuja policy w kierunku wyzszej nagrody. Alternatywnie AlphaZero-style: Monte Carlo Tree Search + value/policy heads network. 6) Snapshot management: co N iteracji kopie current policy zapisywana do puli „opponents". PFSP sampluje z tej puli proporcjonalnie do trudnosci. League play utrzymuje populacje diverse agentow. 7) Repeat az agent nie poprawia sie lub osiaga docelowy poziom. AlphaGo Zero: 40 dni na 4 TPU. OpenAI Five: 10 miesiacy na 128k CPU. GPT-Red: 'weeks' na frontier compute (compute porownywalnym do najwiekszych post-training runow).
Klasyczny RL wymaga srodowiska z zewnetrznym feedbackiem (nagroda z otoczenia lub przeciwnika) i czesto human demonstrations. To skaluje sie slabo: (1) nie ma nieskonczonych ludzkich demonstracji, (2) statyczne opponent'y sa szybko pokonywane, (3) manualne curriculum wymaga inzynierskiej roboty. Self-play RL rozwiazuje wszystkie trzy: agent wykorzystuje siebie jako nieskonczone zrodlo danych, opponent skaluje sie razem z agentem (naturalny curriculum), nie potrzeba human demos. Dodatkowo: eliminuje bias human demonstrations (agent moze odkryc strategie nadludzkie, jak w AlphaGo Zero — move 37 przeciw Lee Sedolowi ktory zaskoczyl mistrzow Go). Wprowadza samowzmacniajaca sie petle poprawy — caly renesans capable AI systems (AlphaGo Zero, MuZero, GPT-Red) opiera sie na tym paradygmacie.
Latest: prosto, ale cyclic policies. Uniform: robust ale wolno. PFSP (AlphaStar): najczestsza dobra choice. League: dla bardzo zlozonych gier z wielomodal policies. Zla choice = collapse do rock-paper-scissors.
Zero-sum (Chess, Go): oczywista. Cooperative (Hide-and-Seek): shared reward + potential shaping. Safety self-play (GPT-Red): kluczowa druga klauzula defendera („resist AND complete task") — inaczej defender uczy sie odmawiac wszystkiego.
Self-play skaluje sie ekstremalnie z compute. AlphaGo Zero: 4 TPU * 40 dni. OpenAI Five: 128k CPU * 10 miesiecy. GPT-Red: frontier post-training scale. Wieksze compute = lepsze policies, ale returns diminishing dla saturated tasks.
Single agent + snapshots: prostota. League (AlphaStar): populacja z rozna hiperparametryzacja i celami — zapobiega collapse i odkrywa diverse strategies. Coraz wazniejsze dla bardzo zlozonych srodowisk.
AlphaGo (2016): human games -> policy prior -> self-play refinement. AlphaGo Zero (2017): pure tabula rasa, no human data. Tabula rasa czysto lepsze, ale wymaga wiecej compute. Kompromis dla realnych zastosowan.
Jak czesto snapshot current policy trafia do pool. Za czesto — opponent pool wypelnia sie podobnymi policies (redundant). Za rzadko — wolne learning. Typowo co kilka % iteracji treningowych.
Self-play jest stage-dependent — aktualna policy ewoluuje w czasie, opponent moze byc snapshotem, aktualna wersja lub populacja. W AlphaZero MCTS aktywne tylko podczas planning; policy/value heads dense. W LLM self-play (GPT-Red) full forward pass obu modeli — dense.
Self-play RL to jedno z najbardziej rownolegle skalowalnych podejsc w AI. Kazda gra/interakcja to niezalezna transakcja — mozna prowadzic tysiace w rownolegli. OpenAI Five: 128k CPU (rollout workers) + 256 GPU (learners). AlphaGo Zero: distributed self-play na 4 TPU per game, tysiace gier rownolegle. Learners i rollout workers oddzielne (actor-learner split). Skalowanie prawie liniowe do rozmiaru clustra.