ИИ не наш

Повесть о попытке использовать многослойные нейронные сети в гоночной игре.

Пример визаулизации применения нейросети в игре (не в моей)<br /> <a href="https://www.youtube.com/watch?v=gEf9V03HWv0" rel="nofollow noreferrer noopener" target="_blank">mbaske</a>
11 показ
6.5K6.5K открытий

Автор просто неправильно подошел к обучению ИИ. Если ИИ отказывался ездить на другой трассе, то, скорей всего, он тупо и не понимал, что от него требуется.
Иначе говоря, проблема в постановке цели для обучения ИИ, или цель поставлена некорректно. Если ботам важно было столкнуть других, не поворачивая, то все еще - проблема в постановки цели.

Цель обучения ИИ какая была? Чтобы он конкретную трассу прошел? Как прошел? Какие условия он должен выполнять, чтобы считалось, что он ее прошел? А что такое - пройти трассу? Приехать к какому-то чекпоинту? Как он должен реагировать на рядом проезжающего другого ИИ? В каком случае можно и нужно применять агрессию, а в каком - нет?
Самое первое, что бросается в глаза при прочтении текста - у тебя ИИ не хотел ехать к цели, а хотел завалить других таких же придурковатых. Почему так?

Я рекомендую изначально не просто бросаться тыкать ИИ и включать его в игру, а изучить идею ИИ. Большая часть проблемы создания ИИ - это постановка цели. Это первое, чему учит Andrew Ng на своем курсе Machine Learning.
Он в самом начале (если память не изменяет) рассказывает, как многие из-за не правильной постановки цели тратят бешеные деньги, а потом зовут его, и он за 5 минут решает проблему.

Вот здесь его курс. Ознакомься, пройди курс и еще раз напиши статью =)
А пока - это просто какое-то непонятное высказывание, что технология - гавно, потому что я им не умею пользоваться.

https://www.coursera.org/learn/machine-learning

Ответить

Автор просто пытается использовать перцептрон, там где нужно использовать рекуррентные НС. Перцептрон не умеет работать с данными, которые динамически меняются во времени. Максимум чего можно добиться - один агент будет проходить трассу или даже разные трассы - тут уже зависит от того насколько большая обучающая выборка. В ситуации когда есть много агентов, которые конкурируют между собой в одном пространстве, нужно использовать другой подход к построению сети, когда есть целостная цель - пройти трассу и частные задачи - не врезаться в окружение, контролировать скорость, обгонять соперников если они рядом и т.д.

Перцептроном банально невозможно решить задачу, которую ставит перед собой автор.

Ответить

Ну, скажем так, я вижу логику в действиях ботов. Я бы поступал примерно так же. Скорее складывается ощущение, что мощности нейросети не хватает на какие-то более осмысленные действия. Например, сбивать других кажется хорошим решением, но его определённо недостаточно. Как и ехать задом, когда это необходимо. Будто, нейросети хватает на обучение только одной конкретной тактике - и не больше.
В какой-то момент я просто понял, что мне скорее всего нужно что-то более мощное, чем простая сеть с двумя скрытыми слоями и генетический алгоритм. И очень много времени на вычисления. Но что конкретно - там нужно очень долго разбираться, у меня нет столько времени, да и эвристики справляются пока хорошо. В этом и мораль статьи, я не говорю, что сделал всё правильно.

А так, я уже описал в статье, какие цели были перед ботом: есть чекпоинт, к которой нужно двигаться. Причём, она в области видимости, не за стеной. Нужно это сделать как можно быстрее и с меньшей потерей здоровья, то есть тут я делал функцию результата. Всё остальное меня не интересовало. После того, как он достигал чекпоинта в определённом радиусе, информация о чекпоинте менялась на новую. Как реагировать на окружение, бот решал сам, я ему ничего не задавал.

Ответить