Реализация кодирования для обучения агентов обучения с подкреплением, критически важных для безопасности, в автономном режиме с использованием консервативного Q-обучения с d3rlpy и фиксированными историческими данными

В этом руководстве мы создаём механизм обучения с подкреплением, критически важный для безопасности, который обучается исключительно на основе фиксированных, автономных данных, а не в ходе активного исследования. Мы разрабатываем пользовательскую среду, генерируем набор данных о поведении на основе ограниченной политики и затем обучаем как модель клонирования поведения (Behavior Cloning), так и агент консервативного Q-обучения с помощью d3rlpy.

Этапы работы

1. Настройка среды: установка зависимостей, импорт библиотек и фиксация случайных семян для обеспечения воспроизводимости.
2. Определение класса среды: создание класса `SafetyCriticalGridWorld`, который представляет собой сетку с препятствиями, целями и стохастическими переходами.
3. Генерация эпизодов: разработка политики поведения, которая генерирует автономные данные без рискованного исследования.
4. Визуализация данных: анализ покрытия и смещения данных в автономном наборе данных.
5. Оценка политики: проведение контролируемых онлайн-оценок для измерения производительности политики.

Код

«`python
import os
import time
import random
import inspect
import numpy as np
import matplotlib.pyplot as plt

import gymnasium as gym
from gymnasium import spaces

import torch
import d3rlpy

SEED = 42
random.seed(SEED)
np.random.seed(SEED)
torch.manual_seed(SEED)

def pick_device():
if torch.cuda.is_available():
return «cuda:0»
return «cpu»

DEVICE = pick_device()
print(«d3rlpy:», getattr(d3rlpy, «version«, «unknown»), «| torch:», torch.version, «| device:», DEVICE)

def make_config(cls, kwargs):
sig = inspect.signature(cls.init)
allowed = set(sig.parameters.keys())
allowed.discard(«self»)
filtered = {k: v for k, v in kwargs.items() if k in allowed}
return cls(filtered)

[Код для определения класса среды и других функций]

def main():
env = SafetyCriticalGridWorld(
size=15,
max_steps=80,
slip_prob=0.05,
seed=SEED,
)

raweps = generateofflineepisodes(env, nepisodes=500, epsilon=0.22, seed=SEED)
dataset = buildmdpdataset(raweps)

print(«dataset built:», type(dataset).name)
visualize_dataset(dataset, env, title=»Behavior Dataset (Offline)»)

bc = creatediscretebc(DEVICE)
cql = creatediscretecql(DEVICE, conservative_weight=6.0)

print(«\nTraining Discrete BC (offline)…»)
t0 = time.time()
bc.fit(
dataset,
nsteps=25000,
nstepsperepoch=2500,
experimentname=»gridbc_offline»,
)
print(«BC train sec:», round(time.time() — t0, 2))

print(«\nTraining Discrete CQL (offline)…»)
t0 = time.time()
cql.fit(
dataset,
nsteps=80000,
nstepsperepoch=8000,
experimentname=»gridcql_offline»,
)
print(«CQL train sec:», round(time.time() — t0, 2))

print(«\nControlled online evaluation (small number of rollouts):»)
bcmetrics = rollouteval(env, bc, n_episodes=30, seed=SEED + 1000)
cqlmetrics = rollouteval(env, cql, n_episodes=30, seed=SEED + 2000)

print(«BC :», {k: v for k, v in bc_metrics.items() if k != «returns»})
print(«CQL:», {k: v for k, v in cql_metrics.items() if k != «returns»})

print(«\nOOD-ish diagnostic (policy action mismatch vs data action at same states):»)
bcmismatch = actionmismatchratevsdata(dataset, bc, sampleobs=7000, seed=SEED + 1)
cqlmismatch = actionmismatchratevsdata(dataset, cql, sampleobs=7000, seed=SEED + 2)
print(«BC mismatch rate :», bc_mismatch)
print(«CQL mismatch rate:», cql_mismatch)

# [Дополнительные визуализации и сохранение политик]

if name == «main«:
main()
«`

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

В заключение продемонстрировано, что консервативное Q-обучение обеспечивает более надёжную политику, чем простое подражание, при обучении на основе исторических данных в средах, чувствительных к безопасности.

1. Какие методы обучения используются в статье и в чём их особенности?

В статье используются два метода обучения: модель клонирования поведения (Behavior Cloning) и агент консервативного Q-обучения. Модель клонирования поведения обучается на основе автономных данных, имитируя поведение в определённой среде. Агент консервативного Q-обучения также обучается на автономных данных, но использует консервативный подход для обеспечения более надёжной политики в средах, чувствительных к безопасности.

2. Какие этапы включает в себя процесс обучения агентов в автономном режиме?

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

3. Какие инструменты и библиотеки используются для реализации кодирования в статье?

Для реализации кодирования в статье используются следующие инструменты и библиотеки:
* Python;
* NumPy;
* Matplotlib;
* Gymnasium;
* Torch;
* D3rlpy.

4. Какие метрики используются для оценки производительности агентов?

Для оценки производительности агентов в статье используются следующие метрики:
* производительность политики, измеренная с помощью контролируемых онлайн-оценок;
* диагностические метрики, такие как mismatch rate (процент несоответствия действий политики и данных).

5. Какие выводы можно сделать из статьи относительно эффективности консервативного Q-обучения по сравнению с моделью клонирования поведения?

Из статьи можно сделать вывод, что консервативное Q-обучение обеспечивает более надёжную политику, чем простое подражание, при обучении на основе исторических данных в средах, чувствительных к безопасности. Это подтверждается результатами контролируемых роллаутов и диагностических метрик.

Источник