Problem
Załóżmy, że chcemy policzyć gradient wartości oczekiwanej . Nie możemy tutaj wepchnąć gradient pod wartość oczekiwaną. Więc jak to policzyć?
Zastosowania problemu
Kwestia wspomnianego problemu może pojawić się w sieciach neuronowych gdy chcemy robię backpropagację przez warstwę, która ma sampling (np. w Variational Auto Encoder).
Reparametrization trick
Trick polega na tym, aby spróbować zastąpić zmienną losową pochodzącą z rozkładu poprzez inną zmienną pochodzącą z ustalonego rozkład prawdopodobieństwa , niezależnego od . Aby to zrobić, szukamy takiego rozkładu oraz funkcji , że . Jeśli je znajdziemy, to , czyli , a więc udało wsadzić się gradient pod wartość oczekiwaną. Wtedy wartość oczekiwaną gradientu możemy estymować poprzez Monte Carlo, czyli po prostu mając dużo danych robimy średnią z gradientów i tyle. Dostajemy w ten sposób niezbiasowaną estymację gradientu wartości oczekiwanej.
Uwaga: Czasami da się znaleźć taki rozkład i funkcję, czasami nie.
Mniej formalnie: zastępujemy rozkład z którego musimy samplować, a który ma parametr przez który leci backpropagacja, poprzez rozkład ustalony (z ustalonymi parametrami), którego wyjście jest później przekładane przez jakąś funkcję zależną od parametru przez który leci backpropagacja.
Przykład
- Rozkład dyskretny można reparametryzować poprzez rozkład Gumbela (Gumbel-softmax trick = concrete distribution.)
- Wielowymiarowy rozkład normalny można reparametryzować na standardowy rozkład normalny i później go przekształcić. Wykorzystuje się do tego Rozkład Choleskiego. Samplowanie z wielowymiarowego rozkładu normalnego