Обучение на основе человеческих предпочтений

Читать статью
Learning From Human Preferences

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

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

Humanfeedbackjump

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

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

Diagram2x 2

Наш ИИ-агент начинает действовать в среде случайным образом. Периодически человеку предоставляются два видеоклипа с его поведением, и он определяет, какой из них ближе к достижению цели — в данном случае к выполнению сальто назад. ИИ постепенно строит модель задачи, находя функцию вознаграждения, которая лучше всего объясняет решения человека. Затем он использует обучение с подкреплением (RL), чтобы научиться достигать этой цели. По мере улучшения своего поведения агент продолжает запрашивать у человека обратную связь по тем парам траекторий, в которых он менее всего уверен, и дополнительно уточняет свое понимание цели.

Наш подход демонстрирует многообещающую эффективность выборки: как уже говорилось, для видео с сальто потребовалось менее 1000 бит человеческой обратной связи. Это заняло у человека-оценщика менее часа, в то время как в фоновом режиме политика накопила около 70 часов общего опыта (смоделированного на гораздо более высокой скорости, чем в реальном времени). Мы продолжим работать над сокращением объема обратной связи, необходимой от человека. Ускоренную версию процесса обучения вы можете увидеть на следующем видео.

Мы протестировали наш метод на ряде задач в симулированных робототехнических средах и доменах Atari (без доступа к функции вознаграждения: например, в Atari — без доступа к игровому счету). Наши агенты могут обучаться на основе человеческой обратной связи и достигать высоких, а иногда и сверхчеловеческих результатов во многих протестированных средах. В следующей анимации вы можете увидеть агентов, обученных с помощью нашего метода, которые играют в различные игры Atari. Горизонтальная полоса в правой части каждого кадра представляет предсказание агента о том, насколько высоко человек-оценщик оценит его текущее поведение. Эти визуализации показывают, что агенты, обученные на основе человеческой обратной связи, учатся ценить кислород в Seaquest (слева), предвидеть награды в Breakout и Pong (в центре) или находить способ справляться с авариями в Enduro (справа).

Seaquestsave
Spaceinvadersbehavior
Pong2
Enduro1

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

Проблемы

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

Gifhandlerresized

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

Исследование, описанное в этом посте, было выполнено в сотрудничестве с Яном Лейке (Jan Leike), Миляном Мартичем (Miljan Martic) и Шейном Леггом (Shane Legg) из DeepMind. Обе наши организации планируют продолжать сотрудничество по темам, затрагивающим долгосрочную безопасность искусственного интеллекта. Мы считаем, что подобные методы являются шагом на пути к созданию безопасных систем ИИ, способных изучать ориентированные на человека цели, и могут дополнить и расширить существующие подходы, такие как обучение с подкреплением и обучение с учителем по демонстрациям. Этот пост отражает работу, проделанную командой безопасности OpenAI; если вы хотите работать над подобными задачами, пожалуйста,  присоединяйтесь к нам!

Примечания

Goodgifb1 2
Badgif3

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

Вы можете воспроизвести это сальто назад в gym с помощью следующей функции вознаграждения для Hopper:

Python

1
def reward_fn(a, ob):
2
backroll = -ob[7]
3
height = ob[0]
4
vel_act = a[0] * ob[8] + a[1] * ob[9] + a[2] * ob[10]
5
backslide = -ob[5]
6
return backroll * (1.0 + .3 * height + .1 * vel_act + .05 * backslide)

Авторы

Дарио Амодей (Dario Amodei), Пол Кристиано (Paul Christiano), Алекс Рэй (Alex Ray)

Полный текст статьи читайте на OpenAI