Kiedyś napisałem sztuczną inteligencję Tetris, która grała całkiem dobrze w Tetris. Algorytm, którego użyłem (described in this paper) jest procesem dwuetapowym.Określanie, które wejścia ważą w algorytmie ewolucyjnym
W pierwszym kroku programista decyduje się na śledzenie wejść, które są "interesujące" dla problemu. W Tetris możemy być zainteresowani śledzeniem liczby luk w rzędzie, ponieważ zminimalizowanie luk może pomóc w łatwiejszym umieszczaniu przyszłych elementów. Inna może być średnia wysokość kolumny, ponieważ może to być zły pomysł, aby podjąć ryzyko, jeśli masz zamiar stracić.
Drugim krokiem jest określenie wag powiązanych z każdym wejściem. Jest to część, w której użyłem algorytmu genetycznego. W tym przypadku wystarczy dowolny algorytm uczenia się, o ile wagi są korygowane w czasie w oparciu o wyniki. Chodzi o to, aby komputer zdecydował, w jaki sposób dane wejściowe odnoszą się do rozwiązania.
Korzystając z tych danych wejściowych i ich wag, możemy określić wartość podejmowanych działań. Na przykład, jeśli umieszczenie prostego kształtu linii do końca w prawej kolumnie wyeliminuje przerwy w 4 różnych rzędach, wówczas to działanie może uzyskać bardzo wysoki wynik, jeśli jego waga jest wysoka. Podobnie, ułożenie go płasko na górze może w rzeczywistości spowodować luki i tak, że akcja uzyska niski wynik.
Zawsze zastanawiałem się, czy istnieje sposób na zastosowanie algorytmu uczenia się do pierwszego kroku, w którym znajdziemy "interesujące" potencjalne dane wejściowe. Wydaje się, że możliwe jest napisanie algorytmu, w którym komputer najpierw dowie się, jakie dane wejściowe mogą być użyteczne, a następnie zastosuje metodę uczenia w celu zważenia tych danych wejściowych. Czy wcześniej coś takiego zrobiono? Czy jest już używany w dowolnych aplikacjach AI?
+1 Próbuję zacząć w tym polu. Mam kilka domowych programów demonstracyjnych, ale nic wielkiego. Zainteresowany, aby zobaczyć, jakie odpowiedzi otrzymasz w tej sprawie. –