Przejdź do głównej zawartości

Multi-armed bandit - wersja niestacjonarna

· 2 min aby przeczytać

Ten post jest częścią moich zmagań z książką "Reinforcement Learning: An Introduction" autorstwa Richarda S. Suttona i Andrew G. Barto. Pozostałe posty systematyzujące moją wiedzę i prezentujące napisany przeze mnie kod można znaleźć pod tagiem Sutton & Barto i w repozytorium dloranc/reinforcement-learning-an-introduction.


Problem niestacjonarny

W tym poście zajmę się tematem szczególnego rodzaju multi-armed bandit problem (MAB), który polega na tym, że dla każdego jednorękiego bandyty wartość nagród zmienia się w czasie. Jest to tak zwana niestacjonarna wersja MAB. Do tej pory wartość nagród otrzymywana była z pewnego rozkładu normalnego o pewnej średniej i wariancji (średnia dla każdego ramienia wybierana była losowo na początku w konstruktorze).

Wyglądało to mniej więcej tak:

Proces stacjonarny

Jest to tak zwany proces stacjonarny.

Proces niestacjonarny wygląda tak i to nim się zajmiemy:

Proces niestacjonarny - random walk

Rozwiązanie

Hmm, skoro otrzymywane nagrody zmieniają się w czasie, to będziemy potrzebowali czegoś w rodzaju średniej ważonej.

Na początek jedna rzecz, przypomnijmy wzór z poprzedniego wpisu:

Qn+1Qn+1n[RnQn]Q_{n+1} \doteq Q_n + \frac{1}{n}\Big[R_n - Q_n\Big]

Przekształćmy go na:

Qn+1Qn+α[RnQn]Q_{n+1} \doteq Q_n + \alpha\Big[R_n - Q_n\Big]

Gdzie α\alpha będzie pewnym parametrem, mogącym mieć pewną stałą wartość albo wartość 1n\frac{1}{n} jak dotychczas.

Przekształcamy:

Qn+1Qn+α[RnQn]=αRn+(1α)Qn=αRn+(1α)[αRn1+(1α)Qn1]=αRn+(1α)αRn1+(1α)2Qn1=αRn+(1α)αRn1+(1α)2αRn2++(1α)n1αR1+(1α)nQ1=(1α)n+i=1nα(1α)niRi\begin{align} Q_{n+1} & \doteq Q_n + \alpha\Big[R_n - Q_n\Big] \\ & = \alpha R_n + (1 - \alpha)Q_n \\ & = \alpha R_n + (1 - \alpha)[\alpha R_{n - 1} + (1 - \alpha) Q{n - 1}] \\ & = \alpha R_n + (1 - \alpha)\alpha R_{n - 1} + (1 - \alpha)^2 Q{n - 1} \\ & = \alpha R_n + (1 - \alpha)\alpha R_{n - 1} + (1 - \alpha)^2 \alpha R_{n-2} + \\ & \qquad \qquad \dots + (1 - \alpha)^{n - 1} \alpha R_1 + (1 - \alpha)^n Q_1 \\ & = (1 - \alpha)^n + \sum_{i = 1}^n \alpha (1 - \alpha)^{n - i} R_i \end{align}

Podsumowanie

Sprawdźmy, czy to działa:

Multi-armed bandit - niestacjonarna wersja

Działa. To tyle, dużo tego nie było. Trzeba było tylko znowu przerobić jedno równanie. Dodam tylko, że Sutton i Barto doradzają, by korzystać ze stałych wartości α\alpha, gdyż sobie lepiej radzą ze względu na to, że nie spełniają pewnych warunków zbieżności szeregów i to jest akurat pożądane w niestacjonarnych problemach. Więcej szczegółów można znaleźć w książce.

Kod znajduje się tutaj. W następnym wpisie zajmę się kolejną drobną optymalizacją multi-armed bandit.