Metody gradientu polityki: REINFORCE
Twierdzenie o gradiencie polityki, algorytm REINFORCE, odejmowanie wartości bazowej, redukcja wariancji.
Metody gradientu polityki: REINFORCE to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
RL oparte na wartości a RL oparte na polityce
Niektóre metody RL uczą się wartości akcji, a następnie wybierają akcje zachłannie. Metody gradientu polityki uczą się natomiast bezpośrednio polityki: funkcji zwracającej prawdopodobieństwa akcji. Takie podejście naturalnie obsługuje akcje ciągłe i polityki stochastyczne.
Polityka pi(a|s)
Parametryzowana polityka pi(a|s, theta) odwzorowuje stan na rozkład prawdopodobieństwa akcji, korzystając z parametrów theta (sieci neuronowej). Uczenie dostosowuje theta, aby preferowane były akcje przynoszące większą nagrodę.
class Policy(nn.Module):
def __init__(self, obs_dim, n_actions):
super().__init__()
self.net = nn.Sequential(
nn.Linear(obs_dim, 128), nn.ReLU(),
nn.Linear(128, n_actions)
)
def forward(self, s):
return torch.softmax(self.net(s), dim=-1)Próbkowanie akcji
Ponieważ polityka jest rozkładem, należy próbkować akcję zamiast wybierać akcję o maksymalnej wartości. Próbkowanie zapewnia eksplorację i sprawia, że polityka jest stochastyczna.
probs = policy(state)
dist = torch.distributions.Categorical(probs)
action = dist.sample()
log_prob = dist.log_prob(action)Wykonywanie trajektorii
Epizod (trajektoria) to sekwencja stanów, akcji i nagród od początku do końca. Pełną trajektorię zbiera się poprzez wykonywanie akcji w środowisku aż do jego zakończenia.
states, actions, rewards, log_probs = [], [], [], []
state, _ = env.reset()
done = False
while not done:
probs = policy(torch.tensor(state).float())
dist = torch.distributions.Categorical(probs)
a = dist.sample()
state, r, term, trunc, _ = env.step(a.item())
rewards.append(r); log_probs.append(dist.log_prob(a))
done = term or truncZdyskontowany zwrot G_t
Zwrot G_t to całkowita przyszła nagroda od chwili t, pomniejszana za pomocą gamma, tak aby bliższe nagrody miały większe znaczenie. Informuje, jak dobre okazały się akcje wykonane od kroku t.
def returns(rewards, gamma=0.99):
G, out = 0, []
for r in reversed(rewards):
G = r + gamma * G
out.insert(0, G)
return torch.tensor(out)Funkcja celu REINFORCE
REINFORCE wykonuje wznoszenie gradientowe oczekiwanego zwrotu. Intuicyjnie zwiększa prawdopodobieństwo akcji, które doprowadziły do wysokiego zwrotu, a zmniejsza prawdopodobieństwo tych, które doprowadziły do niskiego zwrotu. Każda akcja jest ważona przez G_t.
Gradient polityki
Funkcja straty ma postać -sum(log_prob * G_t). Znak minus zamienia wznoszenie gradientowe w spadek gradientowy, dzięki czemu optymalizator maksymalizuje zwrot. W przypadku akcji o wysokim zwrocie ich logarytmiczne prawdopodobieństwo jest zwiększane.
G = returns(rewards)
loss = -torch.sum(torch.stack(log_probs) * G)Aktualizowanie polityki
Należy wykonać propagację wsteczną i aktualizację jak zwykle. Jedna aktualizacja wykorzystuje całą trajektorię, a następnie jest ona odrzucana (REINFORCE działa w trybie on-policy: wykorzystywane są wyłącznie dane z bieżącej polityki).
optimizer.zero_grad()
loss.backward()
optimizer.step()Problem wysokiej wariancji
REINFORCE w podstawowej wersji jest znany z niestabilności i wysokiej wariancji: zwroty różnią się między epizodami, przez co oszacowania gradientu są zaszumione, a uczenie przebiega powoli i nieregularnie.
Wartość bazowa do redukcji wariancji
Odjęcie wartości bazowej (na przykład średniego zwrotu) od G_t zmniejsza wariancję bez obciążania gradientu. Nagradzane są akcje, które są lepsze od oczekiwań, a nie tylko te, które dały dodatni zwrot.
baseline = G.mean()
advantage = G - baseline
loss = -torch.sum(torch.stack(log_probs) * advantage)Dlaczego REINFORCE ma znaczenie
REINFORCE stanowi podstawę wszystkich metod gradientu polityki. Jego słabości — wysoka wariancja i nieefektywność próbkowania — motywują stosowanie metod actor-critic i PPO, które zostaną omówione dalej.
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat gradientu polityki.
Podsumowanie: REINFORCE
Nauczyli się Państwo parametryzować politykę pi(a|s,theta), generować trajektorie, obliczać zdyskontowany zwrot G_t i wykonywać wznoszenie gradientowe za pomocą funkcji straty -sum(log_prob * G_t). Poznali Państwo wysoką wariancję REINFORCE oraz sposób, w jaki wartość bazowa ją zmniejsza.
Często zadawane pytania
Czy lekcja „Metody gradientu polityki: REINFORCE” jest bezpłatna?
Tak — pełny tekst „Metody gradientu polityki: REINFORCE” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Metody gradientu polityki: REINFORCE”?
Twierdzenie o gradiencie polityki, algorytm REINFORCE, odejmowanie wartości bazowej, redukcja wariancji. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Metody gradientu polityki: REINFORCE”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Metody gradientu polityki: REINFORCE
- Metody aktor–krytyk (A2C)
- Proximal Policy Optimization (PPO)
- Własne środowiska Gymnasium