Как кодировать искусственную нейронную сеть (Tic-tac-toe)? [закрытый]

Для идентификации возвращающихся пользователей необходимо использовать userID. Он будет уникальным и не изменится для этого конкретного приложения.

Для отображения пользователей в разных приложениях: https://developers.facebook.com/docs/apps/for-business/

.

21
задан bias 19 July 2009 в 04:55
поделиться

7 ответов

Итак, у вас есть входной слой из 18 нейронов и выходной слой из 1 нейрона. Это нормально. Тем не менее, вы должны дать своей нейронной сети возможность связать входные данные. Для этого вам понадобится как минимум один промежуточный слой. Я бы предложил использовать 9 нейронов в промежуточном слое. Каждый из них должен быть подключен к каждому входному нейрону, а выходной нейрон должен быть подключен к каждому промежуточному. Каждое такое соединение имеет вес, а каждый нейрон имеет уровень активации.

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

Это рабочий принцип. Теперь вам нужно обучить эту сеть, чтобы получить лучшие результаты. Для этого есть несколько алгоритмов, вам придется поискать и поискать в Google. Наконец, вы можете настроить количество нейронов и слоев, если результаты не достаточно убедительны. Например, вы можете уменьшить входной слой до 9 нейронов и активировать их с +1 для X и -1 для O. Возможно, добавление другого промежуточного слоя даст лучшие результаты или увеличение количества нейронов в слое.

Уровень активации и вес соединения. Наконец, вы вычисляете уровень активации, применяя сигмовидную функцию к этой сумме.

Это рабочий принцип. Теперь вам нужно обучить эту сеть, чтобы получить лучшие результаты. Для этого есть несколько алгоритмов, вам придется поискать и поискать в Google. Наконец, вы можете настроить количество нейронов и слоев, если результаты не достаточно убедительны. Например, вы можете уменьшить входной слой до 9 нейронов и активировать их с +1 для X и -1 для O. Возможно, добавление другого промежуточного слоя даст лучшие результаты или увеличение количества нейронов в слое.

Уровень активации и вес соединения. Наконец, вы вычисляете уровень активации, применяя сигмовидную функцию к этой сумме.

Это рабочий принцип. Теперь вам нужно обучить эту сеть, чтобы получить лучшие результаты. Для этого есть несколько алгоритмов, вам придется поискать и поискать в Google. Наконец, вы можете настроить количество нейронов и слоев, если результаты не достаточно убедительны. Например, вы можете уменьшить входной слой до 9 нейронов и активировать их с +1 для X и -1 для O. Возможно, добавление другого промежуточного слоя даст лучшие результаты или увеличение количества нейронов в слое.

вам нужно тренировать эту сеть, чтобы получить лучшие результаты. Для этого есть несколько алгоритмов, вам придется поискать и поискать в Google. Наконец, вы можете настроить количество нейронов и слоев, если результаты не достаточно убедительны. Например, вы можете уменьшить входной слой до 9 нейронов и активировать их с +1 для X и -1 для O. Возможно, добавление другого промежуточного слоя даст лучшие результаты или увеличение количества нейронов в слое.

вам нужно тренировать эту сеть, чтобы получить лучшие результаты. Для этого есть несколько алгоритмов, вам придется поискать и поискать в Google. Наконец, вы можете настроить количество нейронов и слоев, если результаты не достаточно убедительны. Например, вы можете уменьшить входной слой до 9 нейронов и активировать их с +1 для X и -1 для O. Возможно, добавление другого промежуточного слоя даст лучшие результаты или увеличение количества нейронов в слое.

15
ответ дан 29 November 2019 в 21:32
поделиться

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

    I I I             O O O
    I I I      x      O O O
    I I I             O O O
9 input neurons  9 output neurons

в полностью подключенной сети, т.е. 81 вес. Затем обучите выходные нейроны относительной желательности игры в этой позиции.

5
ответ дан 29 November 2019 в 21:32
поделиться

Я думаю, что вы должны реализовать «традиционный» ANN прямой связи с использованием передаточных функций, как это позволяет тренировать его с использованием обратного распространения. Код для них обычно заканчивается несколькими строками кода, примерно так:

SetupInputs();
for (l = 1 .. layers.count)
    for (i = 0 .. layers[l].count)
        sum = 0
        for (j = 0 .. layers[l-1].count)
            sum += layers[l-1][j] * weights[l-1][j]
        layers[l][i] = TransferFunction(sum)
3
ответ дан 29 November 2019 в 21:32
поделиться

This is an excellent starter project for AI coding, but coming up with a complete solution will be way to big of an answer for SO.

As with most software, I recommend using an object-oriented design. For example: Define a Neuron class which has inputs, weights, and an output function. Then, create several of these Neuron objects in order to build your network.

See the wikipedia article on artificial neural networks for a good starting point.

Good luck with the code! Sounds like a lot of fun.

1
ответ дан 29 November 2019 в 21:32
поделиться

После добавления весов вам нужно нормализовать сумму с помощью функции, люди обычно используют TANH, если вы хотите разрешить отрицательные числа.

edit:

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

Кроме того, вам, вероятно, нужно найти способ научить его побеждать, но это еще одна проблема

0
ответ дан 29 November 2019 в 21:32
поделиться

Это не прямой ответ на ваш вопрос, но вам следует взглянуть на следующую структуру / инструмент: SNNS или его Аналог Java JavaNNS . Я почти уверен, что там вы найдете ответ на свой вопрос.

0
ответ дан 29 November 2019 в 21:32
поделиться

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

http://www.roncemer.com/tic-tac-toe-an-experiment-in-machine-learning

4
ответ дан 29 November 2019 в 21:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: