로봇 강화 학습
robot reinforcement learning
PPO(Proximal Policy Optimization)
강화 학습이란 모든 트로젝토리에서 리워드의 합이 최대가 되게 하는 방식을 찾아 내는것
policy gradient
샘플이 많아야 함.
많은 데이터가 필요한 방식을 해결하기 위해 actor critic 방식으로 접근
state, action, reward
PPO
PPO(Proximal Policy Optimization)
1. PPO가 뭘까?
강화학습에서 에이전트(agent)는 환경에서 행동을 하면서 보상(reward)을 얻고,
그 경험을 통해 정책(policy, 행동을 선택하는 규칙)을 점점 더 좋게 만들어 갑니다.
문제는, 정책을 조금씩 업데이트해야 하는데, 너무 크게 바꾸면 성능이 오히려 떨어질 수 있다는 점입니다.
예를 들어 원래 잘하던 동작을 완전히 잊어버리거나, 랜덤하게 행동하게 될 수 있습니다.
그래서 나온 방법이 PPO(Proximal Policy Optimization, 근접 정책 최적화)입니다.
이름 그대로 “정책을 너무 멀리 바꾸지 말고, 가까운(proximal) 범위 안에서만 최적화하자”라는 아이디어예요.
2. 기존 문제점
- Policy Gradient: 정책을 gradient로 업데이트하는데, 한 번에 너무 크게 바뀔 수 있어 불안정함.
- TRPO(Trust Region Policy Optimization): 정책 변화가 너무 크지 않도록 제한을 두지만, 수학이 복잡하고 구현이 어렵고 계산량이 많음.
3. PPO의 핵심 아이디어
PPO는 TRPO를 단순하게 만든 버전입니다.
핵심은 “새로운 정책과 옛날 정책의 확률 비율”을 계산하고, 이 비율이 일정 범위를 벗어나면 업데이트를 제한하는 것입니다.
- 비율이 1에 가까우면 → 행동 확률이 많이 안 바뀐 것 → 괜찮음
- 비율이 크게 벗어나면 → 업데이트를 강제로 클리핑(clipping) 해서 제한
수식으로는 “새로운 정책 확률 ÷ 옛날 정책 확률” 형태인데, github.io에서는 깨질 수 있어서 말로 풀면:
새로운 정책과 예전 정책의 비율 × Advantage 값,
그리고 그 비율을 일정 범위 안으로 강제로 자른(clipping) 값 × Advantage 값,
두 개 중에서 작은 쪽을 선택해서 손실(loss)을 계산한다.
이 방식 덕분에 정책이 폭주하지 않고, 조금씩 안정적으로 학습할 수 있다.
4. 비유로 이해하기
PPO를 아이의 학습에 비유해보겠습니다.
- 아이가 자전거를 타는 걸 배우고 있음.
- 갑자기 “오늘은 외발자전거 타!” 라고 하면 너무 어려워서 못 배움 → 정책 급격 변화.
- 대신 “자전거에서 손을 한쪽만 떼고 가보자”처럼 조금만 변화 주면 안정적으로 늘어남.
👉 PPO는 이런 식으로 학습을 제한해서 안정성을 확보하는 방법이에요.
5. PPO의 장점
- 구현이 비교적 간단하다 (TRPO보다 훨씬 쉬움).
- 안정적이다 (정책이 폭주하지 않음).
- 성능도 좋은 편이라, 현재 강화학습에서 가장 널리 쓰이는 방법 중 하나.
6. PPO 코드 예시 (PyTorch 스타일)
import torch
import torch.nn as nn
import torch.optim as optim
class PolicyNet(nn.Module):
def __init__(self, state_dim, action_dim):
super().__init__()
self.fc = nn.Sequential(
nn.Linear(state_dim, 64), nn.ReLU(),
nn.Linear(64, 64), nn.ReLU(),
nn.Linear(64, action_dim)
)
def forward(self, x):
return torch.softmax(self.fc(x), dim=-1)
# 정책 네트워크와 옵티마이저
policy = PolicyNet(state_dim=4, action_dim=2)
optimizer = optim.Adam(policy.parameters(), lr=3e-4)
# PPO 업데이트 단계 (클리핑 포함)
def ppo_update(old_log_probs, states, actions, advantages, epsilon=0.2):
new_probs = policy(states)
new_log_probs = torch.log(new_probs.gather(1, actions))
ratio = torch.exp(new_log_probs - old_log_probs)
clipped_ratio = torch.clamp(ratio, 1 - epsilon, 1 + epsilon)
loss = -torch.min(ratio * advantages, clipped_ratio * advantages).mean()
optimizer.zero_grad()
loss.backward()
optimizer.step()
SIM to REAL
강화 학습을 실제 로봇으로 하게 되면 비용, 위헙도 측면에서 적합하지 않다. 그래서 SIM을 사용하는게 더 유용합니다.
다만 SIM과 실제 환경의 차이가 있어서 이를 위해 보상해줘야 하는 이슈가 있다.
FurnitureBench
https://github.com/clvrai/furniture-bench?tab=readme-ov-file
https://clvrai.github.io/furniture-bench/
robust rocomotion
rl in the world :daydreamer
a walk in the park learning to walk in 20 minutes with model-free reinforcement learning
.
강화 학습을 이용한 로봇 보행 (PPO를 사용)
논문- (Learning to walk in minutes using Massively Parallel Deep RL) - 엄청 많은 디바이스로 학습
reward
.
논문 (RMA) - 어려운 환경에서 실시간으로 동작
.
논문 - robot parkour
.
논문 (휴머노이드) robot parkour
https://humanoid4parkour.github.io/.
.
논문 (transformer)
.
.
tesla optimus.
https://x.com/tesla_optimus/status/1922456791549427867.
unitree.
.
.
boston Dynamics
.
.
로봇 파운데이션 모델
RFM (robot foundation model)
2016 google foundation model
QT-Opt
MT-Opt
task 나눠서, 잡을 물체를 정해서 잡는 훈련
BC-Z
RT-1 (robotics transformer)
https://robotics-transformer1.github.io/
논문
RT-2
pretrain-vlm 을 가져다가 학습 (vision language action)
https://robotics-transformer2.github.io/
논문
ALOHA and ACT
ACT : imitation learning algorithm
https://tonyzhaozh.github.io/aloha/
mobile aloha
https://mobile-aloha.github.io/
diffusion policy (2023)
https://diffusion-policy.cs.columbia.edu/
https://github.com/real-stanford/diffusion_policy
scaling robotic datasets
논문
https://droid-dataset.github.io/
https://github.com/google-deepmind/open_x_embodiment
https://robotics-transformer-x.github.io/
RT-X model
RT-1, RT-2, OpenX
Octo
transformer + diffusion
https://octo-models.github.io/
OpenVLA [An Open-Source Vision-Language-Action Model] (open source, llama 사용)
https://openvla.github.io/
https://github.com/openvla/openvla
OpenVLA-OFT
https://github.com/moojink/openvla-oft
https://openvla-oft.github.io/
SOTA VLA - open model
https://www.physicalintelligence.company/
10000 시간의 데이터
pyzero
https://www.physicalintelligence.company/blog/pi0
py fast
https://www.physicalintelligence.company/research/fast
py zero
https://www.physicalintelligence.company/blog/pi05
Real-Time Action Chunking with Large Models
https://www.physicalintelligence.company/research/real_time_chunking