Programowanie robota po linii z uczeniem się zbrojenia

15

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?

Lord Loh.
źródło
1
Nie wiem jak, ale jestem pewien, że można nauczyć go utrzymywania się na ścieżce, niezależnie od jej kształtu. Celem nauczania w tym przypadku powinna być decyzja lokalna podejmowana przez robota na podstawie jego natychmiastowych danych wejściowych (a może pewnej historii). W ten sposób nie ma znaczenia, jaki jest kształt ścieżki, ponieważ wszystkie decyzje są lokalne.
Shahbaz
@Shahbaz - Co sugerowałbyś, żebym użył do przestrzeni stanu?
Lord Loh.
Nie jestem pewien. Mimo że studiowałem AI na uniwersytecie, nigdy nie było to moim obszarem pracy / badań. Odpowiedź, którą zaakceptowałeś, wydaje się rozsądna!
Shahbaz
Czy używasz odpowiedzi do testowania Markdown? Możesz po prostu napisać, co chcesz i zobaczyć natychmiastowe renderowanie poniżej, a następnie nie publikować.
Shahbaz

Odpowiedzi:

8

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ą.

DaemonMaker
źródło
Bez mapy przestrzeń stanu jest dokładnie tym, co robot może wyczuć na podstawie swojego bezpośredniego położenia. Tak więc do pewnego stopnia mapa jest tylko sposobem na „patrzenie w przyszłość”. Wyuczone zachowanie w scenariuszu bez mapy będzie zasadniczo „robić to samo co poprzednio, ale iść wolniej, ponieważ tym razem nie wiemy, gdzie są zakręty”. (Prawdopodobnie będziesz w stanie powiedzieć, gdzie są krawędzie toru.)
Ian
Polityka mówi nam, jaką kontrolę zastosować w danym stanie. Jeśli przestrzeń stanu jest dobrze sformułowana dla agenta RL, wówczas wyraźnie różne scenariusze mogą wyglądać tak samo w przestrzeni stanu i dawać to samo zachowanie. Nazywa się to uogólnieniem i jest pożądane, gdy jest wykonane poprawnie. Robot będzie miał maksymalną prędkość na podstawie prędkości swojej pętli sterowania. Wyuczone zachowanie niekoniecznie musi spowalniać. Jeśli nagroda jest odwrotnie proporcjonalna do długości czasu biegu, agent byłby skłonny maksymalnie zwiększyć prędkość w stosunku do prędkości swojej pętli kontrolnej.
DaemonMaker,
0

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]

Omar Quaye
źródło