trochę się bawię w programowanie symulacji 2 wymiarowego świata z 2 wymiarowymi istotami, które same uczą się i dostosowują do zmian, nie są uczone na dużych zbiorach danych a jedynie na zasadzie własnych prób i błędów. Taki rodzaj uczenia maszyn określa się jako nienadzorowany (unsupervised machine learning). Symulacja nie jest efektowna graficznie (nie o to chodziło) ale jak się wpatrzeć to widać jak bez niczyjej pomocy uczą się zasad świata i interakcji z innymi stworzeniami (atak, ucieczka, nieatakowanie swojego gatunku), szukanie pożywienia. Aktualnie przepisuję całość w Pythona na Rust więc projekt trochę w zawieszeniu, ale docelowo myślę o tym jako o alternatywnym uczeniu robotów. Zaletą jest to że nie bazujemy na karmieniu sieci neuronowej gigantycznym zbiorem danych - czyli nie trzeba "mistrza", uczeń uczy się na zasadzie prób i błędów. Poza tym jest bardzo elastyczny, na starcie nie wie nawet jakie prawa rządzą światem. Nie wie że trzeba jeść i unikać zjedzenia. W dodatku jest bardzo elastyczny, można diametralnie zmienić zasady rządzące światem i z biegiem czasu gatunki się dostosują. Ostatnio dodałem receptor który rozróżnia czy inny stworek należy do tego samego gatunku. Okazało się że niektóre gatunki wykształciły zachowanie polegające na odstępowaniu od ataku swoich!
szare poligony - skały, przeszkody
zielone okręgi - rośliny
czerwone okręgi - mięso
niebieskie stworki z zielonym środkiem - roślinożercy
niebieskie stworki z czerwonym środkiem - mięsożercy
po lewej na dole wizualizacja działania sieci neuronowej wybranej istoty
Zostawiam link dla zainteresowanych: