Wpis z mikrobloga

Cześć, miał ktoś z was do czynienia z systemami typu actor-critic.
Problem wygląda tak. Muszę wykonać bota do gry na giełdzie. Oczywiście całość będzie odbywać się w symulowanym środowisku a dane będę ciągnąć z jakiegoś ogólnodostępnego api.
Agent będzie dokonywał operacji kupna sprzedaży w symulatorze i uczył się na podstawie strat/zysków w ramach sesji uczącej.
No i na początku padło na zastosowanie uczenia poprzez użycie metody bazującej na NEAT - coś się działo, ale ogólnie porażka. Po grubszym googlowaniu okazało się że nie ma szans aby to pykło, szczególnie że chciałem docelowo żeby na wejściu sieć odstawała tylko informacje z aktualnego ticku a dane historyczne ma rozwiązać coś typu LSTM.
Obecnie waham się między rozwiązaniem typu Q-learning/ i metoda wymieniona w tytule.
W przypadku 1 opcji niestety możliwe akcje będą tylko typu KUP/SPRZEDAJ/NICNIERÓB a szczegóły jak ma być wykonana dana akcja (ilość jednostek) będą musiały być za hard-kodowane w symulatorze.
No oczywiście chyba że o czymś nie wiem.

No i druga opcja z tego co poczytałem teoretycznie może umożliwić mi to czego chcę:
Czytaj żebym na wyjściu systemu mógł np mieć [PEWNOŚĆDECYZJI, ILOŚĆJEDNOSTEK]
(zakładam że ILOŚĆ_JEDNOSTEK definiuje kupno sprzedaż lub brak akcji(odpowiednio dodatnie, ujemne, 0))

No i mam problem ze znalezieniem jakichkolwiek przykładów bądź łatwych do przyswojenia materiałów. Wszystko od materiałów po własne komentarze mile widziane.
PS. A i projekt jest nonprofit na uczelnie i mam 3 tyg oddania xD . Ale pewnie bd to ciągnąć pod inż. więc info przyda się i po terminie.
#programowanie #tensorflow #python #python3 #machinelearning #ai #si #siecineuronowe #reinforcementlearning #uczeniemaszynowe
  • 23
@narowerzesamochodem Ja wiem ale niestety problem jest na tyle trudny że mimo dobrego ang bariera językowa może być problemem. Ale mam zamiar i tak jeszcze dziś to zrobić. Ale na wykopie jest w sumie sporo dobrze zarabiających programistów dlatego zacząłem od szukania w Polskiej społeczności :) .
EDIT sorry za brak oznaczenia
Moje zrozumienie problemu obecnie ogranicza się do takiego pomysłu:
Mamy 2 sieci A i C:
Sieć A przyjmuje obecny kursu danego aktywa na giełdzie stan giełdy i wypluwa kupno/sprzedaż aktyw czyli np (-100) - sprzedaj 100 jednostek (+100) kup 100 jednostek (0) nie rób nic(poglądowo nieuwzględniam normalizacji). Sieć C przyjmuje jako wejście stan giełdy, oraz wyjście sieci A. Wypluwa ona pewność decyzji sieci A. Tak leci cała sesja ucząca. Następnie po zakończeniu
@Fotoblysk: Wybacz stary, ale to co piszesz się za bardzo kupy nie trzyma. Masz jakieś podstawy wiedzy z Reinforcement Learning?

Zacznij od określenia trzech podstawowych pojęć: State, Actions, Reward.
State - czyli informacje, które Twój model będzie otrzymywał
Actions - możliwe akcje, którym Twój model ma przyporządkować wartości
Reward - nagroda, którą wybrana akcja spowodowała.

Np. masz już Actions: sprzedaj 100 jednostek, kup 100 jednostek, nic nie rób. Więc dzięki temu
@Fotoblysk:
Dużo napisałeś, ale mało z tego wynika, nawet jak pójdziesz z tym na reddita, to nie wróżę powodzenia.
Pytania:
1. Masz jakieś ograniczenia technologii (w tagach jest tensorflow, a może wystarczy durna pętla)?
2. Jakie masz pojęcie na temat machine learning?
3. Piszesz o akcjach, a łatwiej jest takie rzeczy robić na kontraktach (większa szansa na transakcje wynikająca z kilku rzeczy), czy to jest narzucone?
4. Czemu to nazywasz actor-critical,
@powiemjedno: xd
1 przecież jasno opisałem że stan z giełdy jest stanem.
2. No tu jest problem bo nie chce mieć dyskretnego zbioru akcji w całym system stąd całe pytanie.
3 Nagroda zależna od zysków podczas pojedynczej sesji.
1. Masz jakieś ograniczenia technologii (w tagach jest tensorflow, a może wystarczy durna pętla)?

Nie mam ale co?

2. Jakie masz pojęcie na temat machine learning?

Pierwszse poważnne podejście do reinforcementlearning, za sobą pare klasycznych zadań ocr, object rec..
Z niestandardowych bot do tic-tac-toe od z wygraną 5 w rzędzie.

3. Piszesz o akcjach, a łatwiej jest takie rzeczy robić na kontraktach (większa szansa na transakcje wynikająca z kilku rzeczy), czy to
Tak jeszcze raz zaznaczę. Zależy mi szczególnie na ciągłej przestrzeni Możliwych do podjęcia akcji. Pomysł typu podzielenie zakresu jednostek których polecenie kupna można złożyć typu kup100 kup200 ... pomysłem dobrym ie jest ponieważ szczególnie przy dużej rozdzielczości sieć może nie być wstanie skutecznie nauczyć się korelacji pomiędzy operacjami kupna a łatwość nauczenia sieci będzie spadać wraz z zwiększaniem możliwych zbioru akcji.

Pytanie pisze ponieważ moje obecne zrozumienie metody z tytułu jest 0,
@Fotoblysk: Ok, to spróbujmy od początku:
1. Co to jest według Ciebie stan giełdy, generalnie wszystkie systemy tego typu bazują na szeroko rozumianym badaniu trendu (najprostsze oparte na średnich) i uczenie polega na zmianie parametrów (np. długości średniej, bufora wejścia).
2. Jedyne akcje, jakie możesz podjąć w takim systemie to kup(N) i sprzedaj(N) (+ew. trailing stop).
3. Piszesz o jednej sesji, a tu raczej (szczególnie przy akcjach) nagroda jest oddalona bardziej
1. Aktualny uśredniony kurs kupna, sprzedaży. Może dojdzie więcej ale to obecnie na PoC wystarczy
2. kup(N) i sprzedaj(N) są zbiorem ciągłym, zakładam że oferty są od razu realizowane po obecnym kursie.
3. Obecnie zakładam handel krótkoterminowy, a z exploration vs exploitation dam sobie rade(albo przynajmniej będę się tym później martwił).
@Fotoblysk: Masz jakiś kod do pokazania?

PS: Nie wołasz nikogo, wątek nie ma jakiegoś dużego zainteresowania więc raczej nie będzie zbyt wielu odpowiedzi. Polecam jeszcze raz wrzucić w dopracowanej formie pytanie (z linkiem do tego wpisu).