Абстрактный

Мы использовали Kerbal Space Program для проверки метода оптимизации. В частности, в этой статье основное внимание уделяется вычислению приближения вектора стохастического градиента, которое лучше всего подходит для ситуаций с высоким уровнем шума и / или вычислительными затратами в функции оценки. Этот метод, называемый синтезом диполярного кристаллического градиента, использует метод обратного распространения, заимствованный у многоуровневых персептронов, для многомерного вычисления конечных разностей. Диполярные варианты генерируются вдоль подмножества взвешенных осей, где веса осей корректируются так, чтобы отдавать предпочтение размерам, изменения которых вносят наибольший вклад в градиент. Мы применили этот метод для оптимизации различных параметров судов KSP, в частности, настроек ИИ и конфигурации планера. Варианты оценивались на работоспособность в боевых условиях. Боевые характеристики повлияли на процесс обратного распространения.

Обзор

Это будет звучать немного странно ...

По крайней мере, это цель. Трудно представить, как кто-то может понять сложность n-мерных структур данных; еще труднее поверить, что кто-либо когда-либо мог надеяться ориентироваться в таком разнообразном ландшафте. Большинству из нас нужны очаровательные видеоролики на YouTube, чтобы объяснить такие вещи, как астрофизика, с помощью веселых мультфильмов. Даже со всей умной упаковкой и квалифицированным объяснением может быть трудно понять, как n-мерные вещи могут быть связаны с чем-либо в нашей повседневной жизни. Как и во многих других сферах нашей жизни, это помогает начать с чего-то знакомого и двигаться к более тонкому пониманию. Это действительно будет метафорой самого нашего путешествия.

Сценарии прелюдии

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

1D

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

2D

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

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

3D

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

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

Основное отличие в этом примере - явный ввод высоты иглы. В 2D-примере высота местоположения используется как функция значения, и мы скорректировали широту и долготу в качестве входных данных. Здесь мы используем отклонение стрелки как сигнал градиента топологии, который является нашей функцией значения.

4D

Вы создаете робота для боевого соревнования. Ваш дизайн позволяет настраивать различные параметры системы управления вашего робота, но вы не знаете, какие настройки являются «лучшими». Допустим, вы можете регулировать скорость поворота, максимальный крутящий момент колеса, расстояние срабатывания спускового крючка и мощность оружия. Разумно ожидать, что разные значения этих параметров повлияют на боевые характеристики робота. Возможно, ваши предположения о его возможностях тоже ошибочны.

К счастью, вы построили десять прототипов, так что у вас есть достаточно юнитов, чтобы провести несколько боевых испытаний и протестировать различные настройки перед соревнованиями. Однако, учитывая четыре измерения, вам понадобится 81 единица для изучения всех комбинаций некоторого центрального значения плюс или минус смещение. Может быть, есть способ сконфигурировать небольшое количество единиц, чтобы подобрать оптимальный набор параметров, оценивая меньший набор. Вот где действительно начинается путешествие.

Математика с картинками

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

Терминология

  • Диполь - пара векторов, равных по величине и противоположных друг другу по направлению.

  • Кристалл - выпуклая пространственная геометрическая фигура, состоящая из вершин, соединенных ребрами, представленная набором векторов, начинающихся в одной и той же точке, каждый из которых заканчивается вершиной.

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

Найдите древнее захороненное здание (2D)

Для наглядности и простоты рассмотрим 2D-пример. Таким образом, мы можем рисовать красивые картинки и делать математику более доступной. Концепции одинаковы независимо от того, сколько измерений мы используем. Два подойдут.

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

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

Направления в гору от разных отправных точек

Путь вперед

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

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

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

Боевые гены

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

Теперь мы знаем, что есть некоторые параметры, которые могут повлиять на оценку в кластерах или группах, но мы ничего не знаем о самих группах. Нам не обязательно что-либо знать о системе заранее, чтобы проверять гипотезы и учиться в процессе. Тем не менее, было бы неплохо иметь какой-нибудь компас, чтобы проложить путь. Мы вернемся к этому позже. А пока давайте сосредоточимся на самой экосистеме. Что определяет желаемое поведение системы? Какие факторы способствуют?

Для наших целей судно в Kerbal Space Program (KSP) представляет собой набор отдельных частей и модулей, каждый из которых отвечает за определение определенного поведения транспортного средства. Без каких-либо деталей с модулями поверхности управления пилот не имеет возможности управлять транспортным средством. В этом случае мы ожидаем, что боевые характеристики будут очень плохими. Игроки создают ремесла KSP в соревнованиях сообщества, чтобы удовлетворить самые разные цели. Таким образом, мы можем ожидать очень богатого генетического разнообразия в ремеслах, создаваемых игроками. Точно так же все эти корабли будут демонстрировать боевые характеристики, соразмерные творческому разнообразию игроков. Это прекрасная возможность изучить генетическую эволюцию через цифровую линзу.

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

Пьяная лодка прогресса

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

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

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

Собираем все вместе

Говоря абстрактно, мы начали с технического описания процесса, поэтому здесь мы разберем его, чтобы упаковать все вместе. Этот процесс лучше всего описать так:

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

Некоторые примечания по подсчету очков

Мы обсуждали результаты на протяжении всего этого пути, но не в каких-либо конкретных деталях. Оценка является неотъемлемым компонентом любого процесса оптимизации. Без механизма обратной связи невозможно проложить курс вперед, ожидая чего-либо, кроме случайного колебания. В контексте боевых оценок самолетов в этом анализе используется фиксированная метрика для вычисления характеристик по абсолютной шкале. Это в первую очередь измеряется скоростью попадания и уровнем урона - количеством ударов в секунду или нанесенного урона в секунду, усредненного за время продолжительности боя в открытой для всех боевой группе. Это имеет большое значение для оценки результатов, поскольку результаты могут значительно отличаться от плавания к плаванию.

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

Первичный цикл итераций

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

Цикл работает так:

  1. Начните с эталонного ремесла.
  2. Выберите верхние параметрические оси X для изменения, отсортированные по весу оси. Оси хранятся на карте, связанной с весовыми коэффициентами.
  3. Создайте варианты диполя (по два для каждой выбранной оси) для каждой оси.
  4. Выберите хотя бы одного случайного противника для каждой дипольной пары.
  5. Проведите N этапов боя, включая эталон, варианты и противников.
  6. Сводные оценки из вариантов и ссылки.
  7. Нормализовать оценки вариантов относительно максимальной оценки вариантов.
  8. Вычислите взвешенный центроид кристалла, образованного диполями, используя нормализованные результаты боя.
  9. Создайте новую ссылку, используя значения центроида.
  10. Отрегулируйте веса осей на основе относительного вклада.
  11. Повторить.

Детальный анализ

Справочное ремесло

Мы начнем наше путешествие с крафтового файла KSP, который представляет собой набор частей, представленных в древовидной структуре. Каждая часть дерева имеет какое-то физическое значение в виртуальной вселенной KSP. Некоторые хранят топливо. Другие действуют как подъемные или управляющие поверхности для самолета. Наш алгоритм анализирует данный файл, чтобы определить все части, которые тем или иным образом влияют на управляющие входы транспортного средства. Это будут наши оси, используемые в процессе оптимизации.

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

Выбор оси

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

Дипольный синтез

После выбора осей мы просто генерируем пару вариантов, представляющих наш осевой диполь. В этом исследовании мы используем фиксированное смещение ± 10%, надеясь на баланс между быстрой сходимостью и сохранением линейности. В будущих исследованиях можно рассмотреть возможность экспериментов с другими значениями.

Противоборствующая инъекция

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

Сбор данных

Из-за относительно высокого коэффициента шума в среде моделирования боевых действий KSP мы запускаем несколько этапов для каждого цикла итерации. Это помогает уменьшить смещение от начальных условий, поскольку начальное и порядковое местоположение рандомизировано. Мы проводим несколько открытых турниров и суммируем результаты. Для целей этого исследования мы запускали 5 плавок на итерацию. Мы также используем фиксированную продолжительность нагрева 3 минуты. Это означает, что нам нужно 15 минут, чтобы получить оценку для одной итерации. Прогоны можно было проводить параллельно, чтобы сократить общее время настенных часов, но в этом эксперименте все проводилось последовательно.

Примерный состав участников забега может выглядеть так:

  • R1 - эталонный семенной корабль
  • V1 - положительный вариант для оси A
  • V2 - отрицательный вариант для оси A
  • A1 - антагонист выбран случайным образом
  • V3 - Положительный вариант для оси B
  • V4 - отрицательный вариант для оси B
  • A2 - антагонист выбран случайным образом

Агрегация очков

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

Нормализация

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

Градиентный синтез

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

Шаг вперед

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

Обратное распространение

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

Полученные результаты!

В общей сложности этот эксперимент потребовал около недели вычислительного времени. Мы сравнили результаты пяти различных крафтов KSP за пятьдесят итераций. В каждом случае у нас есть две фазы - генерация и проверка. Здесь мы быстро рассмотрим процесс, используемый для синтеза и оценки результатов.

Методология

Фаза 1 - Поколение

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

Второй этап - проверка

Когда у нас есть группа семян из фазы генерации, мы можем начать проверку семян, сравнивая их друг с другом и со всеми антагонистами, используемыми на этапе генерации. Мы выбираем группы из шести семян (в порядке итерации) и запускаем их против шести антагонистов. Это позволяет сравнивать оценки друг с другом без необходимости нормализации. При одинаковом количестве судов в каждом заезде ожидается, что возможности для начисления очков будут одинаковыми. Мы проводим турниры для 12 игроков бесплатно для каждой группы из шести семян. Результаты этих турниров отображаются линейно для каждой серии ремесел.

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

Интерпретация графиков

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

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

Выводы

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

Будущее исследование

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

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

Специальная благодарность!

Во-первых, я хочу поблагодарить игроков, которые позволили мне использовать их прекрасные творения в моем странном научном эксперименте. Это игроки из сообщества KSP / BDArmory. Они оказали огромную поддержку в течение месяцев подготовки и развития, кульминацией которых стала работа, которую вы видите здесь.

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

И, как всегда, спасибо за чтение! ❤