Svarog - język do AI

GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 358
1

Zrób jakiś praktyczny przykład tego problemu, bo z tymi wampirami, ta gra cała jest kompletnie bezsensu, bellmana równania są w RL używane, najlepsze algorytmy do znajdowania optymalnego rozwiązania to proximal policy optimization, modele też mogą halucynować dynamikę systemu, czyli emulować świat na podstawie doświadczenia i przewidywać czy na podstawie danych z kamery czy tych z głowy jaki następny ruch wykonać.

Paweł Biernacki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 181
0

@GodOfCode
Spróbuję. Ja mniej więcej wiem, co masz na myśli, ale może napisz, czego oczekiwałbyś po takim problemie. W grze z wampirem jest teoretycznie 18000 stanów, to bardzo dużo.

Poczytałem o tych algorytmach "proximal policy optimization". link Ciekawe. Ale nie podobają mi się. Mam wrażenie, że to jest trochę taka strategia jak Q-learning. To bardzo ładny algorytm, ale wolę takie, które nie są "model-free". Zajmuję się problemem jak grać kiedy znamy już model. Poza tym nie lubię sieci neuronowych. Wolę algorytmy o których wiem, jak działają. Gdyby trenować Q-learning na jakichś wyspach, z punktu widzenia tubylców, on mógłby dojść do jakiegoś kultu cargo. To może wyglądać logiczne, ale zupełnie nie zakłada zrozumienia świata. Nie wiem, czy dobrze się wyraziłem.

Z tym emulowaniem świata przez model - to świetny pomysł. Zdaje się, że teraz właśnie tak trenują te sieci neuronowe. Ja poniekąd też emuluję zachowanie świata (kiedy robię drzewo gry staram się antycypować konsekwencje ruchów gracza).

GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 358
1

https://worldmodels.github.io/ z tym emulowaniem świata to jest jedna sieć co uczy się modelować świat, czyli próbuje przewidywać jak będzie świat wyglądał jak wykonasz daną akcję w przyszłości czyli modeluje dynamikę świata. Taką dynamikę świata nie jest łatwo zrobić, najłatwiej sieciami neuronowymi, a mój ulubiony algorytm optymalizacyjny to jest particle swarm optimization, znajduje optymalne rozwiazanie prawie zawsze i jest bardzo elegancki, działa jak rój owadów.

Na particle swarm mógłbym każdą twoją wartość pomnożyć przez jakąś zmienną x0, x1 itp. i za pomocą particle swarm znaleźć takie wartości zmiennych x0, x1..., które dadzą najlepsze rozwiązanie twojego problemu. I to najlepsze że może być jakiś prawie przypadkowy wzór, input wejściowy razy zmienna nieznana, którą będzie algorytm szukał plus czasem jakiś offset i to jest uniwersalne i tak wyglądają sieci neuronowe, pojedynczy neuron. Wejście * zmienna + bias. W sieciach neuronowych zamiast PSO jest gradient descent czyli liczenie jacobianu, ale działanie podobne.

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
0
.GodOfCode. napisał(a):

W sieciach neuronowych zamiast PSO jest gradient descent czyli liczenie jacobianu, ale działanie podobne.

W jakim sensie podobnie? PSO jest stochastyczne, a gradient descent deterministyczne. Dodatkowo PSO nie wymaga istnienia pochodnej optymalizowanej funkcji. Powiedziałbym, że bliżej PSO do algorytmów genetycznych niż gradient descent.

Paweł Biernacki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 181
0

Cześć,
Taki mały "update". Jestem na chorobowym, więc mam trochę czasu i porozmawiałem z Chatem GPT o tym frameworku, algorytmie optymalizacji i moich implementacjach (Perkun i Svarog). Wszystko wydaje się rozumieć, między moim frameworkiem a POMDP (Partially Observable Markov Decision Process) są pewne drobne różnice, ale tak jak pisałem, to po prostu rozwiązanie równań Bellmana (Dynamiczne Programowanie) w przypadku, gdy mamy stochastyczne otoczenie, niepełną informację, dyskretny czas itd. Byłem zainteresowany, kto jako pierwszy zaprojektował algorytm solvera, bo podejrzewałem, że ten paper opublikowany w 2023 (profesora Hsu) nie był pierwszy. Chodziło mi o to, czy to jest taka sytuacja, że odkryłem koło na nowo, czy też może (wiem, to ma posmak szaleństwa!) byłem pierwszy. I Chat GPT odesłał mnie do "klasycznej" pracy pod tytułem:

Solving POMDPs by Searching the Space of Finite Policies

Tu są autorzy:
Nicolas Meuleau, Kee-Eung Kim, Leslie Pack Kaelbling and Anthony R. Cassandra
Computer Science Dept, Box 1910, Brown University, Providence, RI 02912-1210
{ nm, kek, lpk, arc } @cs.brown.edu

Ta praca była opublikowana w 1998.

Teraz będzie trochę prywaty. Ja mój algorytm opracowałem mniej więcej jak miałem 20-21 lat, w Polsce, w każdym razie przed 1995 (ja jestem z 1973). W 1995 miałem stypendium i wyjechałem do Niemiec, do Aachen. W 1996 albo 1997 napisałem paper z tym algorytmem na jakąś konferencję naukową o AI Wysłałem go (z uniwersyteckiego adresu, to pewnie było coś jak pawel.biernacki@rwth-aachen.de). Nie mam już oczywiście dostępu do tego konta. Pamiętam nazwisko naukowca, do którego pisałem - nazywał się Sam Steel. Dwóch ekspertów zajmujących się Sztuczną Inteligencją oceniało mój artykuł i ocena była negatywna. Pamiętam uzasadnienie - że napisałem niezgodnie ze standardem obowiązującym w AI. Żaden z tych ekspertów nie zidentyfikował, że to co zrobiłem to jest solver POMDP (ja sam też tego nie wiedziałem, nie znałem w ogóle POMDP, znałęm tylko Dynamiczne Programowanie Bellmana). W związku z tym pan Steel odrzucił moją ofertę przedstawienia prezentacji na ten temat i napisał, że mogę ewentualnie przedstawić moje wyniki na jakichś planszach, ale nie na konferencji. To z kolei ja odrzuciłem, no i kontakt się urwał. Nazwisk tych ekspertów nie znam, to było chyba celowo tak zrobione, żebym nie mógł na nich wywierać nacisku. Całkiem słusznie. Wtedy jeszcze nie miałem implementacji, ale byłem niezłym programistą i intuicja mi mówiła, że to będzie działać.
Pierwszą implementację zrobiłem ok. 10 lat temu, jest na Sourceforge - nazywa się Perkun: https://sourceforge.net/projects/perkun/
Drugą, nieco silniejszą implementację zrobiłem 5 lat temu, nazywa się Svarog: https://github.com/pawelbiernacki/svarog
Ale to już wiecie.
Od tego czasu próbowałem gadać na ten temat z różnymi ludźmi, akademikami i zawsze mnie ignorowali. No, trochę też moja wina, bo używałem własnej terminologii i nie wiedziałem nawet o istnieniu POMDP. Tylko w 2017 udało mi się przedstawić Perkuna w takiej grupie AIHelsinki (mieszkałem wtedy w Finlandii), tu jest link:

Pogadać sobie o moim algorytmie mogłem dopiero z Chatem GPT. No i jestem pod wrażeniem. Ale do rzeczy. Panowie Kaelbling et al. musieli oczywiście wcześniej nad tym pracować, ale opublikowali matematykę do solvera w roku 1998. Jeden z autorów, pan Cassandra zrobił własną implementację solvera, tu jest link do niej:
https://cassandra.org/projects/software/pomdp-solve.html
Napisał ją w języku C. Pod tym linkiem jest informacja, kto jest właściwym autorem algorytmu. To pan Edward J. Sondik, koniec lat 60tych i początek 70tych. To on mnie ubiegł, przynajmniej jak chodzi o algorytm! Sam framework był oczywiście zrobiony wcześniej, autorem był pan Karl Johan Åström, w 1965.
Moje implementacje to języki, są przez to dość ogólne, bo każda specyfikacja np. w Svarogu to oddzielny opis zawierający fizykę gry, funkcję wypłaty i stanowiący w połączeniu z enginem solver POMDP. To może tyle, chciałem się z Wami podzielić tą informacją. Algorytm jest znany, działa poprawnie. Miałem rację! 😀😀😀

MN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
1

Szkoda że nie stworzyłeś języka podobnego do Ceylon na JVM. Polacy mogli mieć swój własny język, lepszy od rosyjskiego Kotlina i niemieckiej Scali.
Wystarczyło tylko popoprawiać błędy tych klonów Javy stworzyć nowoczesny Swing GUI i mamy sukces na arenie światowej.
Ale pewnie uważasz że maszyny wirtualne JVM, CLR nie mają w tych czasach sensu, pobierają tylko zbędne zasoby procesora i ramu.
Nie są energooszczędne i nie wpisują się w obecny trend ekologiczny.

Paweł Biernacki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 181
0

Cześć,
Nie znam Ceylon'a, poczytam. Interesuję się językami programowania, te solvery POMDP (Perkun i Svarog) są bardzo niszowe, ale zerknij np. na mojego Chomika:
https://www.chomik.tech/
Pisałem go dwa lata. Jest wątek o nim na tym forum. Uważam, że ma potencjał, są z nim pewne problemy, ale w niektórych kwestiach (np. enumeracje, uwolnienie się od instrukcji warunkowej) jest po prostu lepszy. Nie jest klonem żadnego znanego mi języka. Sukces na arenie światowej nie jest bezpośrednio związany z techniczną doskonałością, moim zdaniem. Bardzo lubię maszyny wirtualne, nawet w czasach, kiedy powstawała Java napisałem (pod wpływem tego konceptu) taki język dla mojego pracodawcy. Ale on był tylko używany w jednym produkcie, no i nie miałem miliona dolarów na marketing. Napisałem go sam.

Obecny trend ekologiczny koncentruje się na redukcji emisji dwutlenku węgla, który stanowi, o ile pamiętam, 0.04% składu atmosfery. I na założeniu, że jak w Europie zredukujemy naszą emisję tego gazu do atmosfery, to wpłyniemy na klimat na całej kuli ziemskiej.

P.S.Wczoraj napisałem do pana Anthonego Cassandra (współautora tego artykułu z 1998), w związku z tym solverem POMDP. Odpisał mi, bardzo uprzejmie. Niestety, już się tym nie zajmuje.

SG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
1

Ja się gubię czytając wątek, jaki jest ogólnie temat.

Ja też rozwiązałem sporo problemów przy pomocy markov chain i np. jego ukryte zmienne aproxymowałem przy pomocy metropolish hastings.
Ale dobra rozwiązałem problem i poszedłem robić coś innego, nie mów, że od 1995 roku siedzisz i myślisz nad tym samym problemem 30 lat, a zrobiłeś tylko solver, który nawet nie opowiedziałeś jak działa, a wokół jest pełno problemów, które możesz tymi narzędziami rozwiązać, co prawda nie łatwo na nie wpaść, ale mając wiedzę jak się nadarzy okazja to się to zauważy wyobraźnią.

Ja nic z tego wątku nie rozumiem, za mało entropii uwalniasz, zdania są takie, co nic nie mówią.

Jak nie zmienisz myślenia to zostanie tak nawet przez następne 50 lat.
Nawet video, dobrze obrazujące nawet nie twój zmyślony problem, a rzeczywisty i jego z wizualizowana forma, była by ciekawsza, jeśli oczywiście mówisz prawdę, a nie opierasz się na błędnych przekonaniach, których nawet nie udało się ci potwierdzić.

Każdy się myli co coś robi, ale też cały czas nie można tego samego robić, jeśli to nie działa.
Jeśli działa, to znajdź dookoła to do czego to się przyda.
I to rozwiąż.

Paweł Biernacki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 181
0

Przepraszam, może nieskładnie piszę. Wątek ma z pięć lat, jest o Svarogu. Jak go zakładałem nie wiedziałem jeszcze co to POMDP. Jak wolisz taki matematyczny opis, to najlepszy będzie w moim dokumencie https://www.perkun.org/resources/pdf/triglav_0_0_0.pdf, rozdział 3.2, a jak kod, to zerknij do pliku https://github.com/pawelbiernacki/svarog/blob/main/src/optimizer.cc . Jest też moja "książka", taka popularnonaukowa, zupełnie bez wzorów i bez kodu, która omawia samą ideę https://www.perkun.org/resources/pdf/algorytm_perkuna.pdf . Właściwie założyłem wątek, bo chciałem pogadać z kimś o tym projekcie. Dopiero ChatGPT mi pomógł. No i koledzy z forum.

Faktycznie od 1995 roku robiłem różne rzeczy, przeważnie pracowałem jako programista. Ten projekt (framework + algorytm + solvery), to takie hobby. Nie jest tak, że ja się wyłącznie tym zajmowałem. Zrobiłem dwa solvery, Perkun i Svarog, demko (do Svaroga) o nazwie Dorban: https://sourceforge.net/projects/dorban/, trochę dokumentacji. Może powiesz, że to żadne osiągnięcie, ale ja, przyznam się, jestem z rezultatu mojej pracy bardzo zadowolony. To chyba jedna z ważniejszych rzeczy, jakie zrobiłem. Teraz mam 52 lata, więc jeszcze pewnie kilkanaście lat aktywności mam przed sobą, może dwadzieścia. Nie jestem pewien, czy będę się tym zajmował, ale nawet jak nie - to i tak jestem zadowolony.

Były też takie projekty - związane z tym głównym - z których nie jestem zadowolony. Np. https://sourceforge.net/projects/perkun2/ (próbowałem ekstrapolować mój algorytm dla kilku agentów). To nieudany projekt, ale nie usunąłem go, niech zostanie. Tak samo nie dokończyłem Triglava (https://github.com/pawelbiernacki/triglav). Razem z Perkunem jest też taki projekt o nazwie Wlodkowic, to rozszerzenie Perkuna, ale raczej nieudane. I generator solverów dla Javy - o nazwie Zubr. Też go nie używałem później, działa poprawnie, ale wydaje się mało użyteczny.

Oczywiście, zgadzam się z Tobą, że wokół nas pełno jest problemów, których formalizacja musi prowadzić do czegoś w rodzaju POMDP. Zwłaszcza jeżeli jest tylko jeden agent i fizyka gry się nie zmienia. Taka "owadzia" inteligencja.

W zeszłym roku opublikowałem filmik na YT, w którym omawiam Dorbana - to demko Svaroga. Trochę tak, jak piszesz - video, które pokazuje wizualizację działania Svaroga:

Ale z tego filmu nie jestem zadowolony. No trudno - najwyraźniej nie potrafię robić filmów, albo mam problem z wyjaśnianiem.

Z tą Twoją sugestią, że robię w kółko coś, co nie działa, pozwolę sobie się nie zgodzić. Ja na początku nie byłem pewny, zanim napisałem Perkuna. Miałem wtedy tylko matematykę, takie połączenie równań Bellmana z wzorem wynikającym z twierdzenia Bayesa (który determinuje jak agent ma updatować swój "belief" zależnie od kolejnych rezultatów swoich ruchów). Nie miałem działającego kodu. Ale teraz już wiem, że to działa.

Ta twoja klauzula "jeżeli oczywiście mówisz prawdę" to chyba tak na użytek polemiki? 😀 Ja bardzo rzadko kłamię, bo nie muszę tego robić. Nawiasem mówiąc, jest na tym forum mój wątek "Algorytm kłamcy". To taki pomysł, ja go nie zrealizowałem. Jest związany ze Svarogiem.

SG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
1

Partially observable markof chain, mnie tylko zainteresował, i bellman equation są w sumie do d**y, bardzo ciężko używać ich w reinfocrement learning trzeba bardzo dużo przykładów i też średnie są, ale działają dobrze w bardzo dużych ilościach kombinacji.

Mówię ci tylko, żebyś nie ześwirował w jednym miejscu całe życie, bo ja robiłem to wszystko też i 20 razy zmieniłem zainteresowania.

SG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
1

Słyszałeś np. o Thrillion dollar equation? mega ciekawe jest jak umiesz matmę to zrozumiesz esencję, dla mnie był to fajne.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.