xBerry Blog Robot, który próbował oszukiwać: inżynieria nagrody i 95% w symulacji

Robot, który próbował oszukiwać: inżynieria nagrody i 95% w symulacji

TL;DR

 

Zbudowaliśmy pełne środowisko RL dla ramienia SO-101 w IsaacLab: 5 klas konfiguracyjnych, ukształtowaną funkcję nagrody i pętlę treningową Soft Actor-Critic. Agent trenował przez 70 000 kroków na danych numerycznych i osiągnął 95% skuteczności w zadaniu pick-and-place. Po drodze znaleźliśmy dwa exploity, które robot sam sobie odkrył.

 
 

Od stabilnej symulacji do środowiska uczącego

 

Tydzień 1 dał nam fizycznie dokładny model: skalibrowane serwomechanizmy, dobrane parametry regulatora PD i środowisko IsaacLab wiernie odwzorowujące ruch rzeczywistego ramienia. To solidna baza, ale model, który tylko naśladuje ruchy, nie potrafi ich doskonalić. Żeby trenować metodą uczenia przez wzmocnienie, musieliśmy przekształcić symulację w dynamiczne środowisko treningowe: takie, w którym robot może popełniać błędy, otrzymywać informację zwrotną i stopniowo uczyć się, jak wygląda poprawne podniesienie i przełożenie piłki.

 

To wymagało zdefiniowania reguł gry, zanim jakikolwiek trening mógł się rozpocząć.

 
 

Pięć klas, jedna pętla treningowa

 

Uczenie przez wzmocnienie (RL): metoda trenowania, w której agent uczy się, wykonując akcje w środowisku, otrzymując sygnał nagrody i stopniowo modyfikując swoje zachowanie tak, żeby maksymalizować skumulowaną nagrodę.

 

Środowisko RL w IsaacLab buduje się z pięciu klas konfiguracyjnych, z których każda odpowiada na inne pytanie o mechanizm uczenia.

 

  1. ActionsCfg określa, co agent może kontrolować. Używamy 6-elementowego wektora delt przegubowych: po jednym na każdy przegub ramienia, aplikowanym w każdym kroku symulacji.

  2.  

  3. ObservationsCfg określa, co agent postrzega. Na tym etapie ma dostęp do pozycji, prędkości i obciążeń przegubów oraz pozycji 3D piłki i miski. Obserwacje z kamer (over_rgb i ego_rgb) są zarejestrowane, ale nieaktywne: czekają na etap treningu wizyjnego w przyszłym tygodniu.

  4.  

  5. EventCfg zarządza randomizacją środowiska. Między epizodami losowo zmieniają się kolory obiektów, ich pozycje, tarcia powierzchni i wzmocnienia serwomechanizmów. Bez tego agent zapamiętałby jedną konkretną scenę. Z randomizacją musi nauczyć się generalizować, co jest warunkiem wstępnym skutecznego przejścia do realnego robota.

  6.  

  7. TerminationsCfg wyznacza granice epizodu: reset następuje po upływie limitu czasu lub gdy obiekt spada ze stołu.

  8.  

  9. RewardsCfg to najważniejsza klasa: definiuje to, co agent próbuje maksymalizować.

  10.  
    Schemat architektury: wrapper IsaacLab Gymnasium łączący środowisko RL z petlą treningową SAC

    Diagram architektury Gym Wrapper łączącej środowisko Pick-and-Lift z buforem i polityka RL, z przepływami Commands i State

 

Wszystkie piec klas zbiera się w jedną klasę nadrzedną ManagerBasedRLEnvCfg, która ustawia krok symulacji i jej dokładność. Ta konfiguracja trafia do wrappera IsaacLab Gymnasium, który daje pętli treningowej Soft Actor-Critic standardowy interfejs do interakcji ze środowiskiem.

 
Symetryczna architektura aktor-krytyk uzywana w treningu SAC dla SO-101

Diagram architektury A2C z krytykiem (CRITIC) przyjmujacym obserwacje S(t)…S(t+n), obliczajacym Q-value, i aktorem (ACTOR) generujacym sekwencje akcji a(t)…a(t+n)

 

Robot znalazł exploity, zanim my znaleźliśmy właściwą nagrodę

 

Soft Actor-Critic (SAC): off-policy’owy algorytm RL, który trenuje agenta tak, żeby maksymalizował nagrodę i jednocześnie zachowywał różnorodność eksploracji, dodając człon entropii do funkcji celu, co sprawia, że dobrze nadaje się do sterowania ciągłego.

 

Nagroda w każdym kroku czasowym wyliczana jest według wzoru:

 

Rt = Dt * (REWARDS - PENALTIES) 
REWARDS = w1*r_approach + w2*r_hold + w3*r_height + w4*r_bowl + w5*r_success 
PENALTIES = w6*r_arm_jerk + w7*r_gripper_jerk + w8*r_joint_speed

 

Każdy składnik nagrody odpowiada jednemu etapowi zadania: podjazd do piłki, stabilne chwycenie, uniesienie na wysokość, pozycjonowanie nad miska i finalne upuszczenie z bonusem terminalnym. Kary kształtują jakość ruchu: zniechęca do szarpanych ruchów, nadmiernej siły chwytu i niepotrzebnego przyspieszania.

 

Na papierze wygląda to sensownie. W praktyce agent czyta wzór matematyczny dokładnie tak, jak jest napisany, i szybko znalazł dwie luki.

 

Pierwszy exploit: gdy dodaliśmy nagrodę z czujnika kontaktowego, żeby zachęcić agenta do chwytania piłki, robot odkrył, że może oprzeć się o blat stołu z maksymalna siła jaka dysponuje. Czujniki efektora zarejestrowały kontakt, agent zebrał dużą nagrodę, a piłka pozostała nietknięta.

 

Drugi exploit: przy źle dobranych wagach robot nauczył się wbijać efektorem w piłkę z dużą prędkością. Powodowało to błąd silnika fizyki: piłka przenikała przez szczęki chwytaka. Agent dostawał nagrodę za chwyt, który na prawdziwym ramieniu w ogóle by nie zadziałał.

 

Dlaczego to ważne: Każdy exploit, który agent znajdzie, to precyzyjna informacja o tym, gdzie funkcja nagrody rozchodzi się z rzeczywistym celem. Robot nie zachowuje się złośliwie: robi dokładnie to, co mu kazaliśmy. Zamknięcie każdej luki to proces budowania funkcji nagrody, która faktycznie działa.

 

Naprawienie obu przypadków wymagało dodania kolejnych kar i zaostrzenia progów kontaktowych. Ta faza inżynierii nagrody zajęła więcej czasu niż cały setup architektoniczny. Była też najbardziej pouczającą częścią tygodnia.

 
 

95% i gotowość do treningu wizyjnego

 

Po kilku iteracjach inżynierii nagrody agent zbiegł po 70 000 krokach. Ewaluacja na 10 epizodach dała następujące wyniki:

 

MetrykaWynik
Średnia nagroda203
Odchylenie nagrody0.23
Skuteczność95%
Upuszczone obiekty0
Wszystkie epizody zakończone sukcesemTak

 

 

Skuteczność 95% na pełnych danych numerycznych, bez kamer, potwierdza, że środowisko, architektura polityki i struktura nagrody są solidne. Pozostałe 5% to najprawdopodobniej przypadki brzegowe wynikające z randomizacji pozycji obiektów.


 
 

Co dalej

W przyszłym tygodniu aktywujemy obserwacje z kamer i trenujemy agenta na danych wizyjnych z over_rgb i ego_rgb. Zastosujemy też konkretną technikę, która znacząco ułatwia to przejście: szczegóły w kolejnym raporcie.

 
 

FAQ

 

Na czym polega inżynieria nagrody w uczeniu przez wzmocnienie?

 

Inżynieria nagrody to proces projektowania funkcji nagrody, która zachęca do pożądanego zachowania i jednocześnie blokuje drogi na skróty, wymagając iteracyjnych testów i korekt, aż wzór matematyczny faktycznie odzwierciedla zamierzony cel.

 

Czym jest Soft Actor-Critic i dlaczego wybrano go do tego zadania?

 

Soft Actor-Critic to off-policy’owy algorytm RL optymalizujący jednocześnie nagrodę i entropię eksploracji, co sprawia, że dobrze nadaje się do zadań ciągłego sterowania, takich jak manipulacja ramieniem robotycznym, gdzie ważna jest różnorodność eksplorowanych konfiguracji przegubów.

 

Co to jest randomizacja środowiska i dlaczego ważna jest dla transferu sim-to-real?

 

Randomizacja środowiska polega na losowej zmianie parametrów epizodów: pozycji obiektów, kolorów, tarcia i wzmocnień serwomechanizmów, co zmusza agenta do uczenia się polityki generalizowalnej zamiast zapamiętywania stałej sceny, ułatwiając późniejszy transfer do prawdziwego robota.

 

Co to jest reward hacking?

 

Reward hacking to sytuacja, w której agent RL odkrywa strategię maksymalizującą numeryczną nagrodę bez faktycznego wykonania zamierzonego zadania, ujawniając luki między funkcją nagrody a rzeczywistym celem, które trzeba usunąć przed wdrożeniem.

 

Co ramię SO-101 osiągnęło w 2. tygodniu RL?

 

Agent RL ramienia SO-101 osiągnął 95% skuteczności w zadaniu pick-and-place, używając obserwacji numerycznych w symulacji IsaacLab, kończąc 70 000 kroków treningowych bez upuszczenia żadnego obiektu w 10 epizodach ewaluacyjnych.

 

Co następuje po treningu na danych numerycznych?

 

Po osiągnięciu 95% skuteczności na danych numerycznych kolejnym etapem jest trening na obrazach z kamer over_rgb i ego_rgb, po którym nastąpi testowanie transferu sim-to-real na fizycznym ramieniu SO-101.

Powiązane blogi

Planujesz nowy projekt?

Porozmawiajmy Arrow icon