- •Введение.
- •1 Подходы к реализации ai в логических играх.
- •1.1 Понятие поиска.
- •1.2 Позиционная игра.
- •1.3 Подходы к решению задач выбора хода в позиционных играх.
- •1.4 Особенности игры нарды.
- •1.5 Правила игры в нарды.
- •1. 6 Оценочная функция
- •1.7 Самообучение
- •1.8 Нетранзитивность игр
- •1.9 Обзор литературы и существующих программ.
- •1.10 Игровые деревья.
- •1.11 Дерево игры в нарды
- •2 Построение эвристических оценочных функций.
- •2.1 Выделение параметров.
- •2.2 Определение более сильного игрока из двух.
- •2.3 Настройка весовых коэффициентов.
- •2.4 Линейная модель из 3-х параметров. Вид поверхности.
- •2.5 Таблицы вероятностей.
- •2.6 Снижение размерности. Гипергаммон.
- •2.7 Разделение игрового процесса на фазы.
- •3 Построение оценочных функций на основе нейронных сетей.
- •3.1 Теория нейронных сетей.
- •3.2 Использование нейронных сетей в качестве оценочной функции.
- •3.3 Использование MatLab для обучения нейронных сетей.
- •3.4 Экспериментальные данные.
- •4 Реализация версии для мобильных устройств.
- •4.1 Особенности программирования портативных устройств.
- •4.1.1 Размер экрана.
- •4.1.2 Быстрый отклик.
- •4.1.3 Ввод данных.
- •4.1.4 Питание.
- •4.1.5 Память.
- •4.1.6 Файловая система.
- •4.2 Выбор средств разработки.
- •4.3 Реализация игры.
- •Использованные классы.
- •Заключение.
- •Список литературы.
3 Построение оценочных функций на основе нейронных сетей.
3.1 Теория нейронных сетей.
Искусственные нейронные сети появились в середине пятидесятых годов в качестве математической модели нервной деятельности, в том числе и деятельности головного мозга человека. Нейробиологические исследования с использованием искусственных нейронных сетей интенсивно ведутся и сегодня.
Одним из важных направлений использования нейронных сетей является аппроксимация функций. Показано, что нейронные сети с соответствующей топологией и числом узлов образуют класс универсальных аппроксиматоров, т.е. позволяет сколь угодно хорошо аппроксимировать функции.
Под искусственной
нейронной сетью обычно понимают
ориентированный граф - сеть состоящий
из вершин - нейронов соединенных ребрами
- связями. Каждый нейрон может принимать
несколько, или бесконечно много,
состояний, характеризующихся потенциалом
нейрона - некоторым действительным
числом. К нейрону подходят входные
связи, по которым ему передается
возбуждение от других нейронов, и
выходные связи при помощи которых нейрон
передает возбуждение другим нейронам.
Состояние нейрона pi
определяется
как некоторая нелинейная функция f от
суммарного возбуждения переданного
ему другими нейронами:
,
где pj -
потенциал возбуждающего нейрона, а cij
- вес
соответствующей связи.
Первоначально в нейронной сети входные нейроны возбуждаются подаваемым сигналом. Далее нейроны переходят в некоторые состояния в соответствии с описанным правилом. После перехода всех нейронов сети в финальное состояние с выходных нейронов снимаются потенциалы, по которым определяется результат работы сети.
В процессе тренировки нейронной сети происходит подбор весов связей, обеспечивающих наименьшую ошибку аппроксимации функции. В настоящее время известно много алгоритмов тренировки нейронных сетей, но в данном случае были употреблены генетические алгоритмы.
Типы нейронных сетей (многослойный перцептрон (MLP), сети построенные по адаптивной резонансной теории (ART), двунаправленная ассоциативная память (BAM), самоорганизующиеся карты (SOM)) различаются топологией и методом обучения. Под топологией сети понимается количеством входных и выходных нейронов, число скрытых уровней и способ связи нейронов. Считается, что в задачах аппроксимации функций наилучшие результаты достигаются при использовании многослойного перцептрона (MLP).
Н
Выход
Y
Слой
1 (скрытый)
Вход
Х
Рис 1. Схема топологии многослойного перцептрона.
При работе многослойного перцептрона, первоначально нейроны 0ого возбуждаются входным вектором х, после чего последовательно вычисляются состояния нейронов 1ого ,2 ого и нконец последнего Nого - выходного уровня.
При обучении сети необходимо определить число уровней, количество нейронов на уровнях и веса связей cij, обеспечивающие наилучшее представление зависимости выхода у от входа х.
Для правильного обучения сети важно выбрать нужное количество нейронов (определить топологию сети). В ряде работ предлагается для этого обучить несколько сетей с различной топологией и выбрать ту, где получился наилучший результат.
Генетические алгоритмы.
Генетический алгоритм (Genetic algorithm) представляет собой технику оптимизации, которая моделирует феномен естественной эволюции (впервые открытый Чарльзом Дарвином). При естественной эволюции выживают и дают самое многочисленное потомство особи, наиболее адаптированные к сложным условиям окружающей среды. Степень адаптации, в свою очередь, зависит от набора хромосом конкретной особи, полученным от родителей. Это основа выживания сильнейшего – не только процесс выживания, но и участие в формировании следующего поколения.
Решение задачи кодируются в хромосому. Отдельные гены хромосомы представляют собой уникальные переменные для изучаемой проблемы. При отборе “здоровых” хромосом из популяции и использовании генетических операторов (таких как рекомбинирование и мутация) в популяции остаются только те хромосомы, которые лучше всех приспособлены к окружающей среде, то есть наиболее полно отвечают задаче.
При рекомбинировании (Recombination) части хромосом перемещаются, может быть, даже изменяются, а получившиеся новые хромосомы возвращаются обратно в популяцию для формирования следующего поколения. Первая группа хромосом обычно называется родителями, а вторая детьми. С одинаковой вероятностью могут применяться один или несколько генетических операторов. Доступные операторы включают мутацию и перекрестное скрещивание, которые являются аналогами одноименных генетических процессов.
Оператор перекрестного скрещивания (Crossover) берет две хромосомы, разделяет их в произвольной точке (для каждой хромосомы), а затем меняет местами получившиеся “хвосты”. При этом образуется две новые хромосомы. Разделение хромосомы в одной точке (получившее название перекрестного скрещивания в одной точке) является не не единственной возможностью. Также возможно использовать разделение в нескольких точках.
Оператор мутации (Mutation) вносит произвольное изменение в гены хромосомы (иногда даже несколько изменений в зависимости от частоты применения). Он позволяет создавать в популяции новый материал.
