Асимметричный actor-critic: как учить робота по картинке
Робот на реальном железе видит только зашумлённые пиксели с камеры, а в симуляторе доступны точные координаты и скорости. Асимметричный actor-critic использует это неравенство данных, чтобы обучение сходилось быстрее.

В чём проблема обучения робота по изображению
Обучение с подкреплением на реальном роботе упирается в одну вещь: политика видит мир через камеру. Это поток пикселей — с бликами, размытием при движении, частичными окклюзиями. Из такого сигнала агенту приходится одновременно решать две задачи: восстанавливать скрытое состояние сцены (где схват, где объект, под каким углом) и учиться действовать. Обе задачи трудны, а сигнал вознаграждения обычно редкий. В итоге обучение из пикселей сходится в разы медленнее, чем обучение из «чистых» координат, и часто не сходится вовсе.
Асимметричный actor-critic — это приём, который эксплуатирует одно практическое обстоятельство: при обучении в симуляторе вы знаете о сцене всё, а при развёртывании на железе — почти ничего. Идея в том, чтобы не выбрасывать точное состояние во время тренировки, а скормить его критику.
Откуда взялась асимметрия
Подход описан в работе Пинто и соавторов «Asymmetric Actor Critic for Image-Based Robot Learning» (2017). Классический actor-critic держит две сети: актор выдаёт действие по наблюдению, критик оценивает, насколько хорошо это действие в текущем состоянии. Обычно обе сети получают на вход одно и то же наблюдение. Авторы предложили разорвать эту симметрию.
- Актор получает только то, что будет доступно на реальном роботе — изображение с камеры.
- Критик получает полное состояние симулятора — позиции и скорости звеньев, координаты объектов, углы схвата.
Критик нужен лишь на этапе обучения. После тренировки его выбрасывают, и на робот уезжает только актор, работающий по пикселям. Асимметрия не мешает развёртыванию, потому что от критика на реальном железе ничего не требуется.
Почему это ускоряет обучение
Оценка функции ценности из полного состояния — простая регрессия по низкоразмерному вектору. Оценка той же ценности из изображения требует, чтобы сеть сначала выучила визуальные признаки. Когда критик работает по чистому состоянию, он даёт актору куда менее зашумлённые градиенты преимущества. Актор при этом всё равно вынужден извлекать полезное из пикселей — но теперь он получает более точный обучающий сигнал о том, какие действия хороши.
Асимметрия бесплатна ровно потому, что симулятор и так знает истинное состояние сцены. Вы платите за неё только тем, что политика должна обучаться внутри симуляции.
Что даёт замер
В оригинальной работе метод сравнивали с симметричным вариантом (критик тоже по изображению) на задачах манипуляции — толкание объекта, поднятие, укладка. Асимметричный вариант достигал сопоставимого качества за меньшее число шагов среды и с более стабильными кривыми обучения. Конкретные числа для вашей задачи будут другими: они зависят от алгоритма-основы (DDPG, SAC, PPO), архитектуры энкодера и плотности вознаграждения. Не переносите цифры из статьи 2017 года как гарантию.
Как это устроено на практике
Метод — это не отдельный алгоритм, а модификация входов. Он совместим с любым off-policy или on-policy actor-critic. Ниже минимальная схема на PyTorch: две сети с разными входами, общая логика обновления опущена ради краткости.
import torch
import torch.nn as nn
class ImageActor(nn.Module):
def __init__(self, action_dim):
super().__init__()
self.enc = nn.Sequential(
nn.Conv2d(3, 32, 8, 4), nn.ReLU(),
nn.Conv2d(32, 64, 4, 2), nn.ReLU(),
nn.Flatten(),
)
self.head = nn.Sequential(
nn.LazyLinear(256), nn.ReLU(),
nn.Linear(256, action_dim), nn.Tanh(),
)
def forward(self, image): # вход: пиксели
return self.head(self.enc(image))
class StateCritic(nn.Module):
def __init__(self, state_dim, action_dim):
super().__init__()
self.net = nn.Sequential(
nn.Linear(state_dim + action_dim, 256), nn.ReLU(),
nn.Linear(256, 256), nn.ReLU(),
nn.Linear(256, 1),
)
def forward(self, state, action): # вход: истинное состояние симулятора
return self.net(torch.cat([state, action], dim=-1))
Ключевой момент — буфер переходов должен хранить и изображение, и полное состояние для одного и того же шага. Актор обучается по изображению, критик — по состоянию, а действие для критика берётся то, что предложил актор.
Пошагово, что нужно сделать
- Настройте симулятор так, чтобы на каждом шаге он отдавал и кадр камеры, и вектор истинного состояния.
- Заведите два входа в реплей-буфер:
imageиstateдля одного перехода. - Постройте актор-энкодер над изображением и критик над состоянием и действием.
- Обновляйте критик по состоянию, актора — по градиенту, приходящему через критик, но по входу-изображению.
- При переносе на робота отключите критик и подавайте актору только реальный видеопоток.
Где метод помогает, а где нет
| Условие | Асимметрия полезна |
|---|---|
| Есть симулятор с доступом к истинному состоянию | Да, это основное требование |
| Обучение только на реальном роботе, состояние недоступно | Нет, критику неоткуда взять чистый вход |
| Наблюдение и так низкоразмерное (не пиксели) | Смысла мало, асимметрия вырождается в обычный actor-critic |
| Плотное информативное вознаграждение | Выигрыш меньше, но обычно всё равно есть |
Отдельная ловушка — sim-to-real разрыв. Асимметричный actor-critic ускоряет обучение внутри симуляции, но не решает проблему переноса на реальную камеру. Здесь нужны отдельные приёмы: рандомизация домена (варьирование текстур, освещения, шума камеры), калибровка и дообучение. Асимметрия и рандомизация домена решают разные задачи и хорошо сочетаются.
Что стоит проверить перед запуском
- Синхронизацию изображения и состояния — они должны относиться к одному тику симуляции, иначе критик учится на рассинхроне.
- Нормализацию состояния: критик к масштабам входа чувствительнее, чем свёрточный энкодер.
- Что энкодер актора не переобучается на артефакты рендера, которых не будет на реальной камере.
Асимметричный actor-critic — дешёвая по инженерным затратам модификация с понятной логикой: не выбрасывайте информацию, которую симулятор даёт бесплатно, но подавайте её только той сети, что останется в лаборатории. Актор при этом с самого начала учится жить в условиях реального развёртывания — по пикселям.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: Pinto et al. Asymmetric Actor Critic for Image-Based Robot Learning (arXiv:1710.06542)
Частые вопросы
Нужен ли критик после обучения?
Можно ли применить метод без симулятора, прямо на железе?
С каким базовым алгоритмом это работает?
Решает ли асимметрия проблему переноса из симуляции в реальность?
Насколько именно ускоряется обучение?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.