- •Курсовая работа
- •Тема: «Обучение с подкреплением в робототехнике: обзор алгоритмов (dqn, ppo, sac) и примеров применения в сборке. Сравнение методов, их применимость для задач манипуляции нежёсткими объектами.»
- •Аннотация
- •Содержание
- •Список сокращений и условных обозначений
- •Введение
- •Системный анализ разработки интеллектуального агента с применением обучения с подкреплением
- •1.1 Общая характеристика и современные тенденции применения искусственного интеллекта и машинного обучения в игровой индустрии и симуляциях
- •1.2 Анализ задач и определение требований к интеллектуальному агенту. Характеристика целевых сред и сценариев тестирования
- •1.3 Описание потоков данных и бизнес-процессов
- •1.4 Обзор и сравнительный анализ игровых движков и фреймворков для реализации обучения с подкреплением
- •1.5 Анализ проблематики выбора архитектуры агента, настройки гиперпараметров и обеспечения стабильности обучения
- •1.6 Патентный поиск
- •1.7 Анализ существующих методов и алгоритмов обучения с подкреплением (dqn, ppo, sac) для задач навигации, управления и принятия решений в виртуальной среде
- •1.7.1 Математическая формализация процесса обучения и алгоритмов ppo и sac
- •1.8 Применимость алгоритмов dqn, ppo и sac для задач манипуляции нежёсткими объектами в роботизированной сборке
- •1.9 Выводы по главе 1
- •2. Методы и технологии разработки и исследования интеллектуального агента в среде unity
- •2.1 Применение фреймворка Unity ml-Agents Toolkit для создания среды обучения, конфигурации агентов и нейронных сетей
- •2.1.1 Архитектура искусственной нейронной сети и конфигурация гиперпараметров
- •2.2 Обзор и сравнительный анализ алгоритмов обучения с подкреплением, методов предобработки данных и техник ускорения обучения
- •2.3 Методы сбора, обработки и визуализации метрик обучения (cumulative reward, loss, entropy) для анализа поведения и эффективности агента
- •2.3.1 Итеративная настройка и эволюция функции подкрепления (Reward Engineering)
- •2.4 Методы оценки производительности, обобщающей способности и устойчивости обученного агента в детерминированных и стохастических условиях
- •2.5 Технологический стек и архитектурные решения для интеграции модели машинного обучения (Python) с игровой логикой и физическим движком (c#/Unity)
- •2.6 Выводы по главе 2
- •3.Экспериментальные исследования и анализ результатов работы интеллектуального агента
- •3.1 Характеристика экспериментального стенда и условий проведения эксперимента
- •3.2 Сравнительный анализ эффективности алгоритмов ppo и sac в задаче навигации
- •3.3 Исследование влияния сенсорной системы и формирования функции вознаграждения
- •3.4 Анализ влияния гиперпараметров на сходимость алгоритма ppo
- •3.5 Абляционные исследования: влияние архитектуры сенсоров и функции вознаграждения на процесс обучения
- •3.6 Профилирование производительности и анализ вычислительной нагрузки в режиме реального времени
- •3.7 Программная реализация алгоритмов поведения и управления агентом
- •3.8 Тестирование и валидация обученной модели в режиме инференса
- •3.9 Выводы по главе 3
- •Заключение
- •Список использованных источников
- •Приложение а
- •Приложение б
2.2 Обзор и сравнительный анализ алгоритмов обучения с подкреплением, методов предобработки данных и техник ускорения обучения
Процесс обучения агента в симуляции формализуется через Марковский процесс принятия решений (MDP). Одной из наиболее критичных задач при проектировании MDP в средах со сложной геометрией (лабиринтах) является формирование функции вознаграждения (Reward Shaping).
На начальном этапе исследований была выявлена фундаментальная проблема машинного обучения — проблема разреженного вознаграждения (Sparse Reward) [30]. При случайной инициализации весов нейронной сети агент совершал стохастические движения. Вероятность того, что агент в результате броуновского движения преодолеет все коридоры лабиринта и коснется цели, стремилась к нулю. Как следствие, алгоритм не получал положительного градиента для обучения, и сходимость модели не наступала.
Для преодоления данной проблемы, помимо бинарных наград (положительное подкрепление +1.0 за достижение цели и отрицательное -1.0 за падение с платформы), была внедрена техника экзистенциального штрафа (existential penalty). В метод OnActionReceived, вызываемый на каждом шаге симуляции, была добавлена функция постоянного отрицательного подкрепления, рассчитываемая по формуле:
|
(2.2.1) |
где MaxSteps — предельно допустимое количество шагов в одном эпизоде. Данная модификация функции полезности заставила алгоритм максимизировать не только саму вероятность достижения цели, но и скорость ее нахождения, минимизируя время пребывания в лабиринте.
Дополнительным вызовом стала проблема переобучения модели (overfitting). Если бы целевой объект и агент инициализировались в фиксированных точках пространства, нейронная сеть аппроксимировала бы жесткую последовательность действий (зазубривание маршрута), полностью утратив обобщающую способность (generalization).
В рамках исследования был разработан и реализован алгоритм динамической стохастической инициализации GetRandomSafePosition(). В начале каждого эпизода координаты агента и цели генерируются случайным образом. Для предотвращения коллизий с геометрией уровня (спавн внутри стен), алгоритм использует метод математического зондирования пространства Physics.OverlapSphere. Генератор случайных чисел ищет координаты до тех пор, пока сфера заданного радиуса не подтвердит отсутствие пересечений с коллайдерами объектов, имеющих тег Wall. Фрагмент кода метода GetRandomSafePosition приведу ниже:
private Vector3 GetRandomSafePosition()
{
Vector3 randomPos = Vector3.zero;
bool foundSafeSpot = false;
int attempts = 0;
int maxAttempts = 15;
while (!foundSafeSpot && attempts < maxAttempts)
{
randomPos = new Vector3(Random.Range(minBoundary, maxBoundary), 0.5f, Random.Range(minBoundary, maxBoundary));
Vector3 worldPos = transform.parent.TransformPoint(randomPos);
Collider[] colliders = Physics.OverlapSphere(worldPos, 0.4f);
bool hitWall = false;
foreach (Collider col in colliders)
{
if (col.CompareTag("Wall"))
{
hitWall = true;
break;
}
}
if (!hitWall) foundSafeSpot = true;
attempts++;
}
// Если за 15 попыток не нашли пустое место, просто ставим в центр (чтобы код не вис)
if (!foundSafeSpot)
{
randomPos = new Vector3(0, 0.5f, 0);
}
return randomPos;
}
Внедрение данного алгоритма в связке с технологией мультиагентного обучения (параллельный запуск 20 изолированных арен в едином пространстве симуляции) позволило колоссально ускорить сбор качественного опыта (experience replay) и сформировать у агента универсальную политику обхода препятствий, независимую от конкретных стартовых координат.
В рамках исследования был проведен экспериментальный сравнительный анализ двух передовых алгоритмов глубокого обучения с подкреплением: Proximal Policy Optimization (PPO) и Soft Actor-Critic (SAC). Оба алгоритма решали идентичную задачу навигации в мультиагентной среде лабиринта.
Алгоритм PPO, относящийся к семейству методов on-policy, осуществляет сбор больших пакетов данных (trajectory) и производит обновление весов нейронной сети дискретно. В конфигурации гиперпараметров был задан размер буфера (buffer_size) 2048 шагов при размере пакета (batch_size) 128. Данный подход обеспечил стабильную и плавную работу симулятора среды в Unity без падения частоты кадров, так как вычислительная нагрузка распределялась равномерно.
В свою очередь, алгоритм SAC, являясь off-policy методом, использует буфер воспроизведения опыта (Replay Buffer) и максимизирует энтропию для более активного исследования среды. Особенностью SAC является то, что он производит обновление функции ценности и политики на каждом шаге среды. При масштабировании среды до 20 параллельно работающих агентов использование SAC привело к эффекту вычислительного «бутылочного горлышка» (bottleneck) на стороне процесса-тренера (Python). Вычислительная сложность (time complexity) одного шага обновления у SAC оказалась кратно выше, что вызывало периодические паузы (зависания) в симуляции среды Unity.
Несмотря на высокие требования к аппаратному обеспечению в реальном времени, алгоритм SAC продемонстрировал значительно большую эффективность использования выборки (sample efficiency). Оптимальная политика обхода препятствий была найдена им менее чем за 5 000 шагов среды, в то время как PPO потребовалось более 60 000 шагов для достижения аналогичных показателей метрик.
На основе проведенного анализа, для итоговой компиляции автономного агента в рамках данного проекта был выбран алгоритм PPO. Он обеспечил оптимальный баланс между временем сходимости, стабильностью обучения и потреблением аппаратных ресурсов в процессе симуляции.
