Tło:
Używam aproksymacji wartości Q sieci neuronowej w moim zadaniu uczenia się zbrojenia. Podejście jest dokładnie takie samo, jak opisane w tym pytaniu , jednak samo pytanie jest inne.
W tym podejściu liczba wyników jest liczbą działań, które możemy podjąć. W prostych słowach algorytm jest następujący: wykonaj akcję A, zbadaj nagrodę, poproś NN, aby przewidział wartości Q dla wszystkich możliwych akcji, wybierz maksymalną wartość Q, oblicz Q dla określonej akcji A jako R + max(new_state_Q)
. Dopasuj model do przewidywanych wartości Q, zastępując tylko jedną z nich R + max(new_state_Q)
.
Pytanie: Jak skuteczne jest to podejście, jeśli liczba wyników jest duża?
Próba: Powiedzmy, że możemy wykonać 10 działań. Na każdym etapie prosimy model, aby przewidział 10 wartości, we wczesnym wieku modelu ta prognoza jest całkowitym bałaganem. Następnie modyfikujemy 1 wartość wyjściową i dopasowujemy model do tych wartości.
Mam dwie przeciwne myśli na temat tego, jak dobre jest to podejście i nie mogę zdecydować, która z nich jest właściwa:
- Z jednego punktu widzenia trenujemy każdy neuron 9 razy na losowych danych i tylko raz na danych zbliżonych do rzeczywistej wartości. Jeśli NN przewidział 5 dla działania A w stanie S, ale rzeczywista wartość wynosi -100, dopasujemy NN 9 razy o wartości 5, a następnie raz o wartości -100. Brzmi szalenie.
- Z innego punktu widzenia uczenie się sieci neuronowej jest realizowane jako wsteczna propagacja błędu , więc kiedy model przewidział 5 i uczymy go na 5, nie nauczy się niczego nowego, ponieważ błąd wynosi 0. Ciężary nie są dotykane . I tylko wtedy, gdy obliczymy -100 i dopasujemy ją do modelu, przeprowadzi ponowne obliczenie wagi.
Która opcja jest odpowiednia? Może jest coś jeszcze, czego nie biorę pod uwagę?
AKTUALIZACJA: Przez „jak efektywny” mam na myśli porównanie z podejściem z jedną prognozowaną nagrodą za wynik. Oczywiście akcja będzie częścią wkładu w tym przypadku. Więc podejście nr 1 przewiduje prognozy dla wszystkich działań w oparciu o pewien stan, podejście nr 2 przewiduje prognozy dla konkretnych działań podjętych w danym stanie.
Odpowiedzi:
Dwie opcje, które chcemy porównać to:
Kierując się własną intuicją, wątpię, aby istniała znacząca różnica pod względem siły reprezentacji lub szybkości uczenia się (pod względem iteracji) między tymi dwiema opcjami.
W przypadku mocy reprezentacyjnej pierwsza opcja daje nieco „mniejszą” sieć w pobliżu wejść i „szerszą” sieć w pobliżu wyjść. Jeśli z jakiegoś powodu korzystnym byłoby na przykład zwiększenie ciężaru w pobliżu węzłów wejściowych, można to prawie osiągnąć, czyniąc pierwszą ukrytą warstwę (blisko wejść) nieco większą.
Jeśli chodzi o szybkość uczenia się, wydaje się, że problem dotyczy zasadniczo posiadania dokładnego sygnału uczenia się tylko dla jednego wyjścia, a nie dla innych. Z drugą opcją dokładnie to samo można powiedzieć o wagach podłączonych do węzłów wejściowych, więc wątpię, że istnieje znacząca różnica.
Jak już wspomniałem, wszystkie powyższe oparte są tylko na mojej intuicji, byłoby interesujące zobaczyć bardziej wiarygodne odniesienia na ten temat.
Jedną ważną zaletą, którą widzę w przypadku pierwszej opcji, jest szybkość obliczeniowa; załóżmy, że chcesz obliczyć wartości dla wszystkich akcji, aby zdecydować, którą akcję wybrać; pojedyncze przejście do przodu przez sieć, zapewniające wszystkie wartości na raz, będzie znacznie wydajniejsze obliczeniowo niż posiadanie osobnych przejść do przodu (dla zestawu akcji o rozmiarze ).Q Q n n
źródło