IT Notes

Игровой искусственный интеллект: Введение в искусственные нейронные сети

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

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

Логика работы ИНС заключается в том, что с одной стороны имеется набор сенсоров, отслеживающих входные данные сети, а с другого конца расположены выходы, соответствующие возможным действиям персонажа (как в модели черного ящика из введения). Каждый вход и каждый выход связаны. Чем связь сильнее, тем выше шанс выбора определенного выхода в ответ на конкретный вход. Давайте разберемся с этим более подробно…

Структура искусственной нейронной сети

инс-структура

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

Каждый нейрон имеет вес, который рассчитывается, как попарная сумма произведений его входов на веса соответствующих связей. При этом у каждого нейрона есть некое смещение, которое мы просто прибавляем к получившейся сумме. Например, для нейрона u4 вес равен ( u1 * w1,4 + u2 * w2,4 + u3 * w3,4 ) + s4, где w1,4 - вес связи между сенсором u1 и нейроном u4 (то же самое для остальных), а s4 - смещение. Но и это еще не все. Чтобы получаемые веса были удобны для сравнения, применяют функцию сжатия.

sigmoid

В качестве такой функции часто выступает сигмоид (см. график справа). Она принимает значения в диапазоне от нуля до единицы. После ее применения веса нейронов намного проще сравнивать между собой.

Таким образом находятся веса всех нейронов сети. Расчет осуществляется последовательно: от входов к скрытому слою, а затем от скрытого слоя к выходам.

В большинстве случаев ИНС имеет несколько выходных нейронов, но выбран должен быть только один. Поэтому применяется принцип "победитель получает все": выигрывает выходной нейрон, который набрал наибольший вес.

Cocktails.

Эта конструкция в целом работает по тому же принципу, что и нейроны головного мозга. Связь между входом и выходом оказывается нелинейной и на первый взгляд не столь очевидна. Ключевой момент - выбирается тот выходной нейрон, для которого веса на пути следования от входа оказались максимальными.

При построении сети необходимо ответить на два вопроса:

  1. Сколько у сети должно быть сенсоров и нейронов?
  2. Как найти веса связей?

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

Обучение ИНС

В качестве первоначальных весов для связей сети обычно используются случайные значения. Далее сеть постепенно "настраивается" путем небольших поправок.

Один из вариантов обучения предполагает наличие набора тестовых данных с известным ответом. Само обучение сводится к многократному запуску сети с нашими входными данными и применению алгоритма обратного распространения ошибки для коррекции весов. Не будем вдаваться в подробности работы этого алгоритма. Отмечу лишь то, что он способствует снижению ошибки. То есть если сеть получила один выход, а мы ожидали получить другой, то связи для нужного нам выхода будут усилены, а для других нейронов наоборот ослаблены. Поэтому после нескольких прогонов сеть "запоминает" соответствие между входами и выходами.

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

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

Еще один интересный подход основан на принципе эволюции. Ожидаемо, что продолжительность жизни более совершенного ИИИ выше, чем у ИИИ с отклонениями. Следовательно, при формировании нового поколения игровых персонажей нужно использовать сеть, которую использовал ИИИ с самой большой продолжительностью жизни. Кроме того, с некоторой вероятностью сеть может мутировать (один или несколько весов связей меняются случайным образом). Это некая вариация генетического алгоритма. Однако последний предполагает наличие двух особей для скрещивания. Выбираются два самых сильных ИИИ, и их сети (веса связей) смешиваются. У такого алгоритма много особенностей и он не всегда применим, однако более естественный способ развития ИИИ найти сложно.

На этом мы заканчиваем с теорией, а в следующий раз реализуем искусственную нейронную сеть на практике…

Похожие публикации

Комментарии

С AI все закончилось? Жаль. Очень.

Anonymous:

С AI все закончилось? Жаль. Очень.

Тема AI потом будет возобновлена. Сейчас идет накопление и подбор материала для новых статей.