Размер Нейронной сети для системы Анимации

Я решил пойти с Нейронной сетью для создания поведений для механизма анимации, который я имею. Нейронная сеть берет в 3 vector3s и 1 Euler углу для каждой части тела, которую я имею. Первый vector3 является положением, второй является своя скорость, и третьей является своя угловая скорость. Euler угол - то, в каком вращении часть тела. и у меня есть 7 частей тела. Каждый из тех типов данных имеет 3 плавания. 7*4*3 = 84, таким образом, у меня есть 84 исходных данных для моей нейронной сети. Выводы отображаются на мышцах символа. Они обеспечивают количество силы для применения к каждой мышце, и существует 15 из них.

Я выполняю 15 сетей одновременно в течение 10 секунд, оценивая их физическую форму путем вычисления самого низкого использования энергии, наличия наименьшего количества суммы z и x перемещения, и если части тела находятся в корректном y положении по сравнению с остальными (hips.y> upperleg.y, upperleg.y> lowerleg.y и т.д.), и затем выполнение их через генетический алгоритм. Я выполнял нейронную сеть 168 нейронов на скрытый слой с 8 скрытыми слоями. Я пытаюсь заставить символ вставать прямо и не перемещаться слишком много. Я выполнил это для 3 000 поколений, и я даже не приблизился.

Нейронная сеть и генетический алгоритм являются версиями C# этого учебного руководства. Я изменил перекрестный метод от одной точки до смешивания.

У меня есть 84 исходных данных и 15 выводов. Насколько большой моя Нейронная сеть должна быть?

8
задан Svante 16 August 2010 в 20:07
поделиться

2 ответа

Проблема, которую вы хотите решить, довольно сложная, я сомневаюсь, что любые "ванильные" GA (особенно использующие фиксированную архитектуру для сетей) решат ее (в разумный срок). Я также не думаю, что вы когда-нибудь найдете «нужное количество нейронов» в скрытом слое.

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

HyperNEAT построен на основе NEAT ( Нейроэволюция дополнительных топологий ). NEAT может изменять не только веса ИНС, но и их структуру. Он начинается с простых сетей и постепенно усложняет их, пока вы не достигнете своей цели (или не откажетесь от нее).

Затем NEAT немного изменен, чтобы можно было использовать различные функции активации. Это позволит ему создавать широкий спектр «шаблонов», когда он применяется к набору точек, например. в системе координат. Узоры могут иметь некоторые интересные черты, такие как идеальная / несовершенная симметрия, или они могут быть периодическими. Этот вариант называется сетью создания композиционных паттернов или CPPN. Ярким примером применения этой технологии является PicBreeder , где сети используются для «рисования» изображений.

В HyperNEAT CPPN используются для создания других ANN.Скрытый слой новых сетей представлен так называемой подложкой, которую можно представить, как если бы нейроны слоя были помещены в систему координат 2D / 3D. Затем для каждой возможной пары нейронов (все от входного слоя до всех скрытых, от всех скрытых до всех выходных) CPPN используется для определения веса. Таким образом, у нас есть косвенное кодирование, которое

  • само по себе мало
  • , может создавать произвольные большие сети в конце
  • , которые также могут показывать довольно сложные модели поведения
  • , которые проявляются в реальности / природе (опять же, симметрия, периодическое поведение) могут возникать относительно легко. Обратите внимание, что для анимации / эффективного передвижения они оба очень полезны (если не обязательны).

В общем, это даст вам шанс решить вашу сложную проблему.

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

5
ответ дан 5 December 2019 в 23:12
поделиться

Интересный подход! Я давно подумываю о чем-то подобном, хотелось бы услышать, какие результаты вы получите.

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

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

Чтобы улучшить вашу функцию пригодности, я бы попробовал сделать что-то вроде штрафа за отклонение от вертикального положения на каждом кадре. Это даст некоторую заслугу решениям, которые справляются с частичным балансом, поэтому должен быть путь к улучшению. Я бы вообще не беспокоился об использовании энергии, пока не добьетесь их равновесия.

0
ответ дан 5 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

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