강화 학습으로 아타리의 퐁 마스터하기: 희소한 보상 극복과 성과 최적화

Michael Kudlaty
Michael Kudlaty
October 1, 2024

소개

이로써 탁구 종목까지 3차원 환경에서 복식 테니스 플레이를 시뮬레이션하는 여러 부분으로 구성된 시리즈의 시작이 될 것입니다.강화 학습 (RL) 은 특히 딥 러닝의 도래와 함께 최근 몇 년 동안 엄청난 인기를 얻고 있습니다.RL 알고리즘 테스트를 위한 가장 대표적인 벤치마크 중 하나는 Atari의 고전 게임인 Pong입니다.이 블로그 게시물에서는 RL 에이전트가 Pong을 플레이하도록 훈련하는 방법을 자세히 알아보고, 희소한 보상으로 인한 문제를 논의하고, 이미지 입력 전처리의 중요성을 알아보고, 리플레이 버퍼의 역할을 이해하고, 향후 개선을 위한 전략을 개괄적으로 설명하겠습니다.

강화 학습 및 퐁 소개

강화 학습이란 무엇입니까?

강화 학습은 상담원이 최대 누적 보상을 달성하기 위해 환경에서 작업을 수행하여 의사 결정을 내리는 방법을 학습하는 기계 학습의 하위 집합입니다.지도 학습과 달리 RL은 레이블이 지정된 입력/출력 쌍에 의존하지 않고 해당 동작의 결과를 통해 학습합니다.

왜 탁구인가?

Pong은 단순하지만 도전적인 게임으로 RL 알고리즘을 테스트하기 위한 훌륭한 환경입니다.간단한 규칙에도 불구하고 Pong을 마스터하려면 에이전트가 타이밍과 기대감을 키워야 하므로 RL 연구를 위한 이상적인 테스트베드가 될 수 있습니다.

스파스 리워드의 도전

스파스 리워드에 대한 이해

많은 환경, 특히 Pong과 같은 게임에서는 보상이 부족하고 지연됩니다.상담원은 점수를 얻거나 1점을 잃었을 때만 보상을 받습니다. 이는 처리된 프레임 수에 비해 자주 발생하지 않습니다.

학습에 미치는 영향

보상이 부족하면 상담원이 효과적인 정책을 배우기가 어려워지는 이유는 다음과 같습니다.

  • 지연된 피드백: 상담원은 자신의 행동이 미치는 영향을 즉시 알지 못합니다.
  • 크레딧 할당 문제: 어떤 행동으로 인해 보상을 받았는지 파악하기가 어렵습니다.
  • 탐사 난이도: 에이전트는 희귀하지만 상당한 보상으로 이어지는 행동을 탐색할 수 없습니다.

이미지 입력 전처리

원시 게임 프레임은 차원이 높고 불필요한 정보를 포함하므로 학습에 방해가 될 수 있습니다.전처리는 다음과 같은 이점을 제공합니다.

  • 차원 줄이기: 신경망의 입력값을 단순화합니다.
  • 중요 기능 강조 표시: 패들 및 공의 위치와 같은 관련 측면을 강조합니다.

전처리 단계

  1. 그레이스케일 변환 - RGB 프레임을 그레이스케일로 변환하면 입력 채널이 3에서 1로 줄어들어 필수 정보를 잃지 않고 입력을 단순화합니다.
  2. 크기 조정 - 프레임을 원래 크기 (예: 210x160픽셀) 에서 더 작은 크기 (예: 84x84픽셀) 로 축소하면 계산 복잡성이 줄어듭니다.
  3. 프레임 스태킹 - 마지막 네 프레임을 쌓으면 에이전트가 공의 속도와 방향을 이해하는 데 필수적인 동작 정보를 캡처하는 데 도움이 됩니다.
  4. 정규화 - 픽셀 값을 0에서 1 사이로 스케일링하여 학습을 안정화하고 속도를 높입니다.

전처리를 위한 코드 스니펫

1def preprocess_frame(frame):    
2	# Convert to grayscale    
3    gray_frame = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)    
4    
5    # Resize the frame    
6    resized_frame = cv2.resize(gray_frame, (84, 84))    
7    
8    # Normalize pixel values   
9    normalized_frame = resized_frame / 255.0    
10    
11    return normalized_frame

리플레이 버퍼에 대한 이해

익스피리언스 리플레이란 무엇인가요?

리플레이 버퍼는 (상태, 액션, 보상, next_state, done) 의 튜플로 정의된 에이전트의 경험을 저장하여 에이전트가 과거 액션으로부터 학습할 수 있도록 합니다.

리플레이 버퍼 사용의 이점

  • 상관 관계 끊기: 버퍼에서 임의 배치를 샘플링하면 순차 데이터 간의 시간적 상관 관계가 깨집니다.
  • 샘플 효율성 향상: 상담원이 각 경험을 통해 여러 번 학습할 수 있습니다.
  • 학습 안정화: 훈련의 진동과 발산을 줄입니다.

리플레이 버퍼 구현

1from collections import deque
2import random
3
4class ReplayBuffer:    
5	def __init__(self, capacity):
6    	self.buffer = deque(maxlen=capacity)
7   
8   	def add(self, experience): 
9    	self.buffer.append(experience)  
10    
11    def sample(self, batch_size):
12    	return random.sample(self.buffer, batch_size)

강화 학습 알고리즘 구현

알고리즘 선택: 딥 Q-네트워크 (DQN)

DQN은 Q-Learning을 심층 신경망과 결합하여 에이전트가 이미지와 같은 고차원 입력 공간을 처리할 수 있도록 합니다.

네트워크 아키텍처

  • 입력 레이어: 사전 처리된 프레임 (예: 84x84x4 텐서) 을 허용합니다.
  • 컨벌루션 레이어: 공간적 특징을 추출합니다.
  • 완전 연결 계층: 각 동작의 Q-값에 특징을 매핑합니다.

손실 함수 및 최적화

  • 평균 제곱 오차 (MSE): 예측된 Q-값과 목표값 사이.
  • 최적화 알고리즘: Adam Optimizer는 적응형 학습률로 일반적으로 사용됩니다.

대상 네트워크

별도의 목표 네트워크를 사용하여 목표 Q-값을 계산하면 훈련을 안정화하는 데 도움이 됩니다.

DQN 모델용 코드 스니펫

1import torch
2import torch.nn as nn
3
4class DQN(nn.Module):    
5	def __init__(self, action_space):        
6    	super(DQN, self).__init__()        
7        self.conv1 = nn.Conv2d(4, 32, kernel_size=8, stride=4)  
8        
9        # 4 input frames        
10        self.conv2 = nn.Conv2d(32, 64, kernel_size=4, stride=2) 
11        self.conv3 = nn.Conv2d(64, 64, kernel_size=3, stride=1)
12        self.fc1 = nn.Linear(7*7*64, 512)        
13        self.fc2 = nn.Linear(512, action_space)    
14        
15  	def forward(self, x):      
16        x = x.to(device)        
17        x = nn.functional.relu(self.conv1(x))     
18        x = nn.functional.relu(self.conv2(x))  
19        x = nn.functional.relu(self.conv3(x))      
20        x = x.view(-1, 7*7*64)       
21        x = nn.functional.relu(self.fc1(x)) 
22        return self.fc2(x)

희박한 보상을 극복하기 위한 전략

리워드 쉐이핑

더 자주 피드백을 제공하도록 보상 함수를 수정하면 학습 속도를 높일 수 있습니다.

  • 중급 보상: 상담원을 성공에 더 가깝게 만드는 행동에 대해 소액의 보상을 배정하세요.
  • 주의: 과도한 쉐이핑은 의도하지 않은 행동으로 이어질 수 있습니다.

탐사 전략

  1. -욕심쟁이 정책 - 에이전트는 확률 인 무작위 동작과 확률이 1-π인 가장 잘 알려진 동작을 선택합니다.
  2. 쇠퇴하는 엡실론 - 시간이 지남에 따라 를 점진적으로 줄이면 탐색과 착취의 균형을 맞출 수 있습니다.
  3. 내재적 동기 부여 - 상담원이 호기심 중심의 보상을 사용하여 새로운 상태를 탐색하도록 장려합니다.

기타 기법

  • 더 큰 리플레이 버퍼 사용: 더 많은 상태-액션 쌍을 처리하는 데 도움이 됩니다.
  • 우선 순위가 지정된 경험 재생: 더 중요한 경험을 더 자주 샘플링합니다.

다음 번을 위한 성능 개선

하이퍼파라미터 조정

학습률, 배치 크기, 할인 요인을 다양한 값으로 실험하면 성능이 향상될 수 있습니다.

고급 알고리즘

  • Double DQN - 작업의 선택과 평가를 분리하여 Q-값을 과대평가하는 문제를 해결합니다.
  • 듀얼링 DQN - 상태 가치와 이점 추정을 분리하여 학습 효율성을 향상시킵니다.

우선 순위가 지정된 경험 리플레이

시간차 오류가 큰 경험에 더 높은 샘플링 확률을 제공합니다.

다단계 타겟

다단계 보고서를 사용하면 더 많은 정보를 제공하는 업데이트를 제공할 수 있습니다.

정규화 기법

  • 드롭아웃 및 L2 정규화: 과적합을 방지합니다.
  • 그라디언트 클리핑: 그라디언트가 폭발하는 문제를 완화합니다.

전이 학습

유사한 작업에서 사전 학습된 모델을 활용하여 네트워크를 초기화하면 학습 속도를 높일 수 있습니다.

결론

RL 요원이 Atari's Pong을 플레이하도록 교육하려면 희소한 보상이나 고차원적 입력과 같은 문제를 극복해야 합니다.이미지를 전처리하고, 리플레이 버퍼를 활용하고, DQN과 같은 강력한 RL 알고리즘을 구현함으로써 게임을 마스터할 수 있는 에이전트를 만들 수 있습니다.Double DQN, 우선순위가 지정된 경험 리플레이, 더 나은 탐색 전략과 같은 고급 기술을 실험하여 향후 개선을 이룰 수 있습니다.

다음 단계

  • 다양한 아키텍처로 실험하기: 깊이와 너비가 다양한 컨벌루션 신경망을 사용해 보세요.
  • 하이퍼파라미터 최적화: 하이퍼파라미터 최적화를 위한 자동화된 도구를 사용합니다.
  • 기타 알고리즘 살펴보기: 정책 기울기, 행위자-비판적 방법 또는 근위 정책 최적화 (PPO) 를 조사합니다.

추가 학습 자료

코드 리포지토리 및 모델

Updated On:
October 27, 2025
Follow on social media: