А.И. Поведение принятия решений - PullRequest
4 голосов
/ 20 июня 2010

Я запускаю симуляцию физики и применяю набор инструкций движения к моделируемому скелету.У меня есть несколько наборов инструкций для скелета, состоящих из приложения силы к ногам, рукам, туловищу и т. Д. И продолжительности применения силы к соответствующей кости.Каждый набор инструкций (поведения) разрабатывается путем проверки его эффективности, выполнения желаемого поведения, а затем изменения поведения с помощью генетического алгоритма с другими подобными поведениями и проверки его снова.Скелет будет иметь поведение массива в своем сет-листе.

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

Мой вопрос: как мне запрограммировать скелет, чтобы он выбирал лучшее поведение для контекста??Например, выбрать лучшее поведение при ходьбе для случайной неровной местности.

Ответы [ 5 ]

2 голосов
/ 24 июня 2010

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

МЕТОДЫ ПЛАНИРОВАНИЯ ПУТИ / ДВИЖЕНИЯ

Существует довольно большое количество методов планирования траектории и движения,включая некоторые, возможно, более подходящие для ходьбы / передвижения, но некоторые из более общих, заслуживающих упоминания, следующие:

  • Графики видимости
  • Потенциальные поля
  • на основе выборкиметоды

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

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

Чтение предложений

Стивен Майкл ЛаВаль (2006). Алгоритмы планирования , издательство Кембриджского университета.

Крис Хаузер, Тимоти Бретль, Жан-Клод Латомб, Кенске Харада, Брайан Уилкокс (2008).« Планирование движения роботов на ножках на пересеченной местности », Международный журнал исследований в области робототехники, Vol.27, No. 11-12, 1325-1349, DOI: 10.1177 / 0278364908098447

Guilherme N. DeSouza и Avinash C. Kak (2002).« Vision for Mobile Robot Navigation: Опрос », IEEE Транзакции по анализу образов и машинному интеллекту, Vol.24, № 2, февраль, с. 237-267.

1 голос
/ 22 июня 2010

В моем ответе есть три аспекта: (1) теория управления, (2) восприятие и (3) слияние восприятия и действия.

ТЕОРИЯ УПРАВЛЕНИЯ

Ответ на вашу проблему частично зависит от того, какую схему управления вы используете: это прямой или обратный контроль? Если последнее, какие моделируемые датчики реального времени у вас есть, кроме информации о местности?

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

SENSING

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

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

ОБЪЕДИНЕНИЕ ДАТЧИКОВ И ДЕЙСТВИЙ

Используя один из описанных выше подходов кодирования пространства ввода, у вас есть несколько вариантов подключения выбор поведения пространство поиска и управление движением пространство поиска:

  1. Разделите два пробела на две задачи обучения и используйте отдельный GA для развития параметров стандартной многослойной нейронной сети персептрона . Последний будет иметь ваши данные датчика (возможно, преобразованные) в качестве входных данных и ваш набор поведения скелета в качестве выходных данных. Вместо того, чтобы использовать обратное распространение или какой-либо другой метод обучения ANN для изучения весов сети, ваш GA может использовать некоторую функцию пригодности для развития параметров в серии смоделированных испытаний, например, пригодность = расстояние, пройденное за фиксированный период времени к точке B, начиная с точки A. Эта должна эволюционировать в течение последующих поколений от совершенно случайного выбора поведения к чему-то более скоординированному и полезному.

  2. Объедините два пространства поиска (выбор поведения и управление двигателем скелета), связав многослойную сеть персептрона, как описано в (1) выше, с существующей структурой контроллера на основе GA, используя поведение скелета установить как связь. Пространство параметров, которое будет развиваться, будет как весом нейронной сети, так и пространством параметров вашего существующего контроллера. Предполагая, что вы используете многоцелевой генетический алгоритм, такой как алгоритм NSGA-II (так как у вас есть несколько функций пригодности), функциями пригодности будут стабильность, скорость, минимизация энтропии, сила на суставы и т. д., плюс некоторые фитнес-функции, предназначенные для изучения политики выбора поведения, например, расстояние, перемещенное к точке B, начиная с точки A в фиксированный период времени.

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

Учитывая, что у вас уже есть развитые решения проблемы управления двигателем, вам, вероятно, лучше использовать подход (1) для изучения модели выбора поведения с отдельным GA. Кроме того, есть много альтернатив гибридной схеме GA-ANN, которые я описал выше для изучения последней модели, включая полное отсутствие обучения модели и использование алгоритма планирования пути , как описано в отдельном ответ от меня . Я просто предложил этот подход, так как вы уже знакомы с машинным обучением на основе GA.

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

1 голос
/ 20 июня 2010

Почему бы не проверить поведение на случайной неровной местности?Просто установите параметры GA, чтобы он был немного прощающим и не осудил поведение за один или два сбоя.

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

Управление ГА - это столько же искусство, сколько наука.Есть много ручек, которые вы можете повернуть, и трудно найти параметры, которые позволят новинке расти, не заглушая ее шумом.

Простое начало (например, сканирование) поможет с обоими из них.

РЕДАКТИРОВАТЬ:
Подождите ... вы тренируете это снова и снова на То же Рандомизированная местность?Неудивительно, что у тебя проблемы!Оптимизация под эту конкретную компоновку камней и выступов, что намного проще, чем обобщение.В зависимости от того, как работает ваша GA, вы можете получить некоторую выгоду от продления курса, но лучшим решением будет рандомизировать местность для каждого прохода .Когда он больше не сможет использовать специфические особенности местности, у него будет эволюционный стимул для обобщения.Поскольку это более сложная проблема, она не будет учиться так же быстро, как раньше, и, возможно, не сможет добиться очень хороших результатов со своими текущими параметрами;будь готов повозиться.

0 голосов
/ 22 июня 2010

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

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

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

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

Сделайте это в автономном режиме: создайте достаточно случайных ландшафтов для достаточной выборки пространства параметров, отобразите эти ландшафты в свое сенсорное пространство (но помните, какие точки в сенсорном пространстве соответствуютна местности), а затем выполните k-означает кластеризацию в этом сенсорном пространстве, где k - количество классов, которые вы хотите выучить.Ваша функция расстояния между представителем класса C и точкой P в сенсорном пространстве была бы просто функцией приспособления, позволяющей алгоритму C ориентироваться на местности, которая произвела P. Затем вы получили бы разбиение вашего сенсорного пространства на k кластеров, каждый кластер отображался влучшая подпрограмма, которая у вас есть.Каждый кластер будет иметь репрезентативную точку в сенсорном пространстве.

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

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

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

0 голосов
/ 20 июня 2010

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

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

  1. Максимальная стабильность
  2. Максимальная скорость
  3. Минимизация усилий на соединениях
  4. Минимизировать производство энергии или энтропии

Или вы просто пробуете набор параметров, записываете значения, а затем позволяете генетическому алгоритму привести вас к наилучшему решению?

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

...