Zastanawiam się nad zaprogramowaniem robota następującego za pomocą algorytmów uczenia się zbrojenia. Pytanie, nad którym się zastanawiam, brzmi: w jaki sposób mogę uzyskać algorytm do nauki nawigacji dowolną dowolną ścieżką?
Po zapoznaniu się z książką Sutton & Barto dotyczącą uczenia się przez wzmocnienie, rozwiązałem problem z ćwiczeniami na torze wyścigowym, podczas którego w samochodzie nauczyłem się nie schodzić z toru i regulować jego prędkość. Jednak ten problem z ćwiczeniami sprawił, że agent nauczył się poruszać po wytrenowanym torze.
Czy w ramach nauki o wzmocnieniu chodzi o to, aby robot poruszał się po dowolnych ścieżkach? Czy agent absolutnie musi mieć mapę toru wyścigowego lub ścieżki? Jakich parametrów mógłbym użyć dla mojej przestrzeni stanów?
Odpowiedzi:
Jedną z kluczowych miar każdego algorytmu uczenia maszynowego jest jego zdolność do uogólnienia (tj. Zastosowania tego, czego nauczył się do wcześniejszych scenariuszy). Uczniowie ze zbrojenia (RL) potrafią dobrze uogólniać, ale ta umiejętność jest po części funkcją formułowania przestrzeni stanów w moim doświadczeniu. Oznacza to, że jeśli znajdziesz odpowiednią konfigurację, uczeń RL nie będzie potrzebował mapy toru wyścigowego.
Pozostawia to pytanie, jakich parametrów użyć. Nie wiedząc więcej o czujnikach dostępnych w twoim robocie, mogę jedynie spekulować. Moją pierwszą skłonnością jest próba zakodowania względnej orientacji linii i robota (tzn. Czy robot zmierza w prawo, w lewo lub po prostu porusza się równolegle do linii). Spowoduje to powstanie ładnej małej przestrzeni stanów. Choć nie jest to absolutnie konieczne, zapewni szybką i prostą implementację. Ponadto, jeśli robot nie będzie poruszał się ze stałą prędkością, może pomóc zakodować prędkość robotów, ponieważ robot będzie musiał reagować szybciej, gdy porusza się z większą prędkością.
źródło
Nie jestem pewien, jakiego rodzaju masz robota, ale od kilku lat robię linię ratunkową robocup. Uświadomiłem sobie, że jeśli chcesz podążać za linią dobrze, używając PID, to dobra opcja. Pozwól mi rozwinąć tę kwestię. Jeśli wyobrażasz sobie dwa czujniki światła po obu stronach linii, chciałbyś, aby były one równej wartości, tak aby linia była na środku. Następnie możesz użyć różnicy między wartością dwóch czujników, aby zmienić procent obrotu robota. Dzięki tej technice możliwe jest skłonienie robota do podążania za linią z niezwykłą prędkością. tak jak myślałeś nad tym, aby robot nauczył się poprawiać swoje zdolności śledzenia linii. To, co wymyśliłem, to zacząć od początkowych wartości PID wyższych, niż chcesz, i użyj żyroskopowego czujnika do pomiaru częstotliwości oscylacji robota, który śledzi linię. Możesz stamtąd stworzyć własną funkcję, aby określić, o ile obniżyć swoje wartości, aby uzyskać stabilny system, to nie jest dokładnie sztuczna inteligencja, bardziej jak algorytm automatyzacji optymalizacji, ale hej, mam 18 lat i nauczyłem się, jak kodować z Internet. Mam nadzieję, że to pomoże. Jeśli masz jakieś pytania, napisz do mnie, to nie jest mój główny adres e-mail, więc nie sprawdzę go regularnie. [email protected]
źródło