Wdrożyłem Q-Learning zgodnie z opisem w
http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf
W celu ok. Q (S, A) Używam struktury sieci neuronowej, jak poniżej,
- Aktywacja Sigmoid
- Wejścia, liczba wejść + 1 dla neuronów akcji (wszystkie wejścia skalowane 0-1)
- Wyjścia, pojedyncze wyjście. Wartość Q
- N liczba M ukrytych warstw.
- Metoda eksploracji losowa 0 <rand () <propExplore
Przy każdej iteracji uczenia się przy użyciu następującego wzoru:
Obliczam wartość Q-Target, a następnie obliczam błąd za pomocą,
error = QTarget - LastQValueReturnedFromNN
i z powrotem propagują błąd przez sieć neuronową.
P1: Czy jestem na dobrej drodze? Widziałem kilka dokumentów, które implementują NN z jednym neuronem wyjściowym dla każdego działania.
Q2, Moja funkcja nagrody zwraca liczbę z zakresu od -1 do 1. Czy w porządku jest zwracanie liczby z zakresu od -1 do 1, gdy funkcja aktywacji jest sigmoidalna (0 1)
P3: Z mojego zrozumienia tej metody, biorąc pod uwagę wystarczającą liczbę przypadków szkoleniowych, należy poddać kwarantannie, aby znaleźć optymalną strategię? Podczas treningu dla XOR czasami uczy się go po iteracjach 2k, czasem nie uczy się nawet po iteracjach 40k 50k.