Проектирование нейронных сетей
Я узнаю о нейронных сетях и обратном распространении. Я думаю, что я понимаю, как работает сеть, с точки зрения ввода, вывода, скрытых слоев, весов, смещений и т.д. Однако я до сих пор не совсем понимаю, как создать сеть для решения проблемы. Т.е.: Скажем, я хотел, чтобы нейронная сеть научилась играть в Drafts, как бы я перевел проблему в дизайн нейронной сети? Приветствия:)
Ответы
Ответ 1
В проектировании нейронной сети определенно много решений, и нет ни одного правильного ответа. Однако есть несколько общих вопросов, которые часто бывают полезными:
-
Что вы пытаетесь сгенерировать в качестве вывода? Черновики кажутся сложной игрой, чтобы играть с нейронной сетью, потому что есть много потенциальных движений, а те, которые доступны, изменяются от поворота к повороту, но, по-видимому, вы хотите, чтобы результат был следующим шагом.
-
Каковы ваши входы? Это должно включать все, что, по вашему мнению, было бы полезно для принятия решения, которое вы хотите сделать нейронной сетью. В примере чертежей вам, вероятно, нужно будет предоставить нейронной сети расположение всех частей на доске.
-
Повторная или пересылка вперед? Как правило, если нет существенной причины для предоставления информации о том, что она делала в прошлом, лучше всего использовать функцию подачи вперед, потому что это позволяет вам обучать сеть с обратным распространением. Например, для черновиков вы, вероятно, захотите использовать сеть пересылки.
-
Вам нужен скрытый слой? Это более сложный вопрос, чтобы знать ответ и может потребоваться некоторое экспериментирование, если вы не знаете много о пространстве с высоким пространством, которое занимают ваши входы. Черновики достаточно сложны, что кажется, что для этого потребуется скрытый слой, но это трудно сделать.
Очевидно, что есть много решений, которые могут быть сделаны в отношении создания нейронной сети, но, надеюсь, они заставят вас идти.
Ответ 2
Ну, я думаю, что ваша проблема - проблема любого другого дизайнера NN... Одна вещь, которую вы всегда должны иметь в виду, NN - эвристические модели. Поэтому они учатся на опыте, так же, как и мы.. Вы не можете "вставить" чистые знания в NN (что возможно в других алгоритмах SC)
Мой подход к вашей проблеме или любая общая проблема, с которой я сталкиваюсь, заключается в том, чтобы начать с вопроса:
"Как я научу это кому-то?"
Вы должны знать правила игры и какие переменные вы можете играть и что хотите. Затем вам нужно обучить сеть (получить данные) с целью выиграть игру, как если бы это был ребенок. После достаточного количества изменений данных и веса NN должен быть в состоянии ответить на разумные игры, чтобы выиграть игру... поскольку больше данных вы получите, более точный ответ, который у вас может быть, и, следовательно, лучший игрок!
Нет ничего убедительного или линейного, но это моя перспектива;)
Удачи!
Ответ 3
Моделирование проблемы с использованием нейронной сети (или любой другой модели) представляет собой сложную проблему; для этого нет волшебной пули. Я бы рекомендовал прочитать о тех методах, которые разработали другие, и посмотреть, можете ли вы применить их к своей проблеме. Вы можете начать с ссылки, например,
https://en.wikipedia.org/wiki/Types_of_artificial_neural_networks
Ищите в Google ученого больше примеров.
Ответ 4
Поскольку вы разрабатываете AI-агент для игры, вам следует прочитать Reinforcement Learning (Q network), который идеально подходит для таких задач.