Skocz do zawartości

Sztuczna sieć neuronowa


Sutikku

Rekomendowane odpowiedzi

W sumie taki symulator mrówek już ktoś zrobił, ale top-down, więc mrówki nie kopią tuneli, co trochę mija się z celem. http://gmc.yoyogames.com/index.php?showtopic=566078

Tutaj natomiast już ktoś zrobił mrówki które kopią losowe tunele, ale napisane w C++.

Kusi o dekompilacje ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Znalazłem kolejny artykuł na ten temat --link--.

I tak się teraz zastanawiam, czy trudno by było przerobić zwykły perceptron, żeby zamiast zwracać 0 lub 1, zwracał -1, 0, 1? W sumie to nie, więc można na takiej podstawie zrobić pseudointeligentne chodzenie stworka. -1 w lewo, 1 to w prawo, a 0 jakaś akcja lub zatrzymanie.

Odnośnik do komentarza
Udostępnij na innych stronach

Perceptron może zwracać dowolną wartość od -1 do 1, zresztą ten zakres można dowolnie modyfikować. Poszukaj sobie różnych funkcji aktywacji, oprócz skokowych są też liniowe, sigmoidalne itp.

Sęk w tym, że pojedynczy perceptron nie nadaje się do tego typu zadań - jest to zbyt prosta struktura, żeby można nią było modelować złożone zachowania, zależne od dużej ilości bodźców.

Odnośnik do komentarza
Udostępnij na innych stronach

Tyle na razie zrobiłem, wizualizacje całej sieci.

LOA9VEJ.png

 

Neurony są instancjami obiektów niestety. Zrobiłem tak by obejść zagnieżdżanie data struktur, jako że nie ma tablic 3D.

Jak mi się uda coś podziałać to dam znać i wrzucę tutaj przykład. Sieć jest dowolnie konfigurowana, można sobie dostawiać warstw ile się chce.

Odnośnik do komentarza
Udostępnij na innych stronach

Wiem, wiem, taki jeden perceptron nie powinien robić czegoś bardziej złożonego, bo nie będzie to zbyt dobre. Ale ja i tak pewnie coś zmajstruje, powiedzmy, że jest to w liście ToDo: (razem z symulacją mrówek).

Na tej wizualizacji są trzy obiekty? Wejście, wyjście i środkowe neurony? Czy jest to jeden obiekt, który sam wykrywa swoją funkcje?

Odnośnik do komentarza
Udostępnij na innych stronach

Lecę według tego artykułu http://software.com.pl/sieci-neuronowe-w-grach/

 

To jest wielowarstwowy perceptron. Pierwsza warstwa to neurony wejścia ich zadaniem jest jedynie odczytanie wektora, który podaje agent ( agent czyli obiekt, którym ta sieć steruje. W moim przypadku będzie to samolocik lecący ciągle w górę ). Wektor jest długości ilości tych neuronów wejściowych. I u mnie będzie to po prostu 5 czujników sprawdzających czy zbliża się przeszkoda.

 

Te kropki to warstwy ukryte neuronów, tutaj można sobie dowolnie ustalić ile ich ma być i ile neuronów w każdej warstwie będzie. Linie które z nich wychodzą to synapsy (patrz artykuł)

 

A ostatnia warstwa neuronów zajmuje się odczytaniem wag z poprzedniej warstwy i konwertuje to z powrotem do wektora, który zostanie przekazany agentowi. Tym razem będzie mniejszy bo są tylko trzy neurony i są to: Skręcaj w lewo, skręcaj w prawo oraz nic nie rób.

 

No i tak to mniej więcej będzie wyglądać ale nie wiem czy nie napotkam jakiegoś problemu na którym stanę i nie będę wiedział jak go rozwiązać :P

Odnośnik do komentarza
Udostępnij na innych stronach

Tablice 3D w GM'ie byłyby dobrodziejstwem dla twórców. Ja będę chyba pisał prosty perceptron ale w C++, trochę klas, funkcji i może wyjść ciekawie. Jeszcze zwizualizować wszystko w SFML albo Allegro i cud miód. Z tym, że większe sieci są już dla mnie zbyt trudne do zrozumienia, chyba muszę trochę podrosnąć i nabrać wiedzy.

A

projekt pokazujący takowe sieci, też ciekawe.
Odnośnik do komentarza
Udostępnij na innych stronach

Stanąłem na chyba prostym przekształceniu matematycznym:

 

mam zmienną X, której wartości są w zakresie 0 do 1

i chcę to przekształcić w zakres -maxSpeed do +maxSpeed.

 

Chcę zmieniać w ten sposób hspeed. Będzie to wyglądać tak że:

gdy X = 0 to hspeed = -maxSpeed

gdy X = 0.5 to hspeed = 0

gdy X = 1 to hspeed = +maxSpeed

 

podejrzewam że to banał jest, wie ktoś jak to przekształcić?

Dobra przekształciłem sobie, xDDD durny jak but jestem że mi to tak długo zajęło hspeed = (X - 0.5)*2*maxspeed;

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...