ABOUT ME

Today
-
Total
-
  • [Do it! 강화 학습 입문]4장. 딥레이서로 구현하는 자율 주행
    도서 정리/Do it! 강화 학습 입문 2023. 8. 9. 09:29
    본문의 모든 내용과 이미지의 저작권은 이지스퍼블리싱의 Do it! 강화 학습 입문 도서에 있습니다.

    4-1. PPO 알고리즘 알아보기

    1. PPO 알고리즘이란?

    • PPO(Proximal Policy Optimization) 알고리즘은 2017년 OpenAI 팀이 발표한 논문 <근위 정책 최적화 알고리즘(Proximal Policy Optimization Algorithms)>에서 소개된 비교적 최신 기법
    • 로봇 제어, 게임 등 다양한 강화 학습 과제에서 우수성을 입증했으며, 복잡한 난이도로 유명한 DOTA2라는 게임도 우수하게 플레이했음
    • PPO 알고리즘이 발표된 이후 OpenAI는 대부분의 과제에 이 알고리즘을 사용했고, Unity ML과 딥레이서 등의 환경에서도 기본 알고리즘으로 사용
    • PPO 알고리즘은 정책 경사(Policy Gradient) 방법에 해당, 정책 경사에 대한 공부가 필요

    2. 정책 경사부터 PPO 알고리즘 이해 시작하기

    • DQN이 가치 함수 또는 Q 함수를 업데이트하는 가치 반복법에 기초하는 반면, 정책 경사는 정책 반복법에 기초
    • 정책 경사와 정책 반복법은 특정 상태에서 취하는 행동의 확률 분포로 이루어진 정책 네트워크(Policy Network)를 학습시킨다는 점에서 차이가 있음
    • 상태를 입력으로 한다는 점에서 DQN의 신경망과 같지만, DQN의 출력이 Q 함수였다는 것과 대조적, 출력이 행동의 확률 분포라는 점에서 DQN에 비해 2가지 장점이 있음

    DQN과 비교할 때 정책 경사의 장점

    1. DQN은 에이전트가 취할 수 있는 행동이 불연속한 경우에만 적용 가능 하지만, 정책 경사는 출력인 ‘확률 분포’를 ‘정규 분포’라 가정하고 샘플링을 진행하면 에이전트의 연속된 행동을 추출할 수 있음
    2. 정책 네트워크는 확률 분포를 기반으로 해서 행동을 선택하기 때문에 Q 학습과 같이 탐험을 위한 무작위성을 부여하는 엡실론과 같은 별도 계수가 필요하지 않음. 에이전트는 기존 정책을 그대로 준수하며 에피소드를 진행해도 무방. 따라서 정책 경사는 정책 이탈(Off-Policy)이 아닌 정책 밀착(On-Policy) 기법에 속함

    정책 경사의 순서

    1. 정책 $\pi(\theta)$를 무작위로 생성($\theta$는 정책의 파라미터)
    2. 에이전트는 환경 내에서 $\pi(\theta)$에 따라 행동하며 확인한 일련의 상태와 보상을 샘플로 취함
    3. 특정 행동으로 인한 보상을 봄
      1. 특정 행동에 대한 보상이 기댓값보다 높으면 해당 행동의 확률을 증가시킴
      2. 특정 행동에 대한 보상이 기댓값보다 낮으면 해당 행동의 확률을 감소시킴
    4. 3을 반복하며 정책 파라미터 $\theta$를 조절

    4-2. 딥레이서로 공부하는 강화 학습

    1. 딥레이서 차량 설정하기

    회원 가입 후 로그인하기

    • 딥레이서 공식 홈페이지에 접속해 회원 가입 후, 로그인

    콘솔에 로그인하고 지역을 바꾼 뒤 딥레이서 서비스 선택하기

    • 오른쪽 상단의 ‘콘솔에 로그인’ 버튼 클릭

    • 국가를 ‘미국 동부(버지니아 동부)’로 설정

    • 상단 검색창에 ‘DeepRacer’를 검색하여 AWS DeepRacer로 접속

    차고에 들어가 차량 설정하기

    • 좌측 메뉴의 ‘Your garage’ 버튼을 클릭해 차고로 이동

    • 우측 상단의 ‘Build new vehicle’ 버튼 클릭

    • 자동차의 이름, 색 지정 후, 다음 클릭

    • 단일 카메라로 지정 후, ‘완료’ 클릭
    카메라를 여러 개 조합하면 장애물 회피와 같은 복잡한 과제를 잘 수행할 수 있지만, 그만큼 학습 시간이 길어지고 학습 수렴도도 낮아짐 그래서 시간 단축을 위한 타임 트라이얼류 과제는 단일 카메라로 훈련할 때 더 좋은 성능을 내는 것으로 알려져 있음

    2. 딥레이서 모델 만들고 학습시키기

    모델 생성 화면으로 이동하기

    • 우측 상단의 ‘Create model’ 버튼 클릭

    모델 이름 지정하기

    • 모델 이름은 64자까지 사용 가능

    시뮬레이션 환경 설정하기

    • 딥레이서를 처음 시도해볼 땐, ‘The 2019 DeepRacer Championship Cup’과 같이 트랙 너비가 넓고 단순한 코스를 추천

    경주 종류 선택하기

    • 레이스 타입은 ‘Time Trial’, 학습 알고리즘은 ‘PPO’ 선택

    차량 행동 공간 설정하기

    • 행동 공간은 연속(continuous), 불연속(discrete) 방식 중에서 선택 가능
    • PPO와 같은 정책 경사 방법은 에이전트의 연속되는 행동을 추출할 수 있다는 장점이 있으므로 에이전트의 행동을 둘 중 하나로 설정할 수 있음

    • 행동 공간을 ‘Discrete action space’로 설정
    • 조향각 세분을 ‘3’, 최대 조향각을 ‘30도’로 설정
    • 속도 세분을 ‘1’, 최대 속도를 ‘3’으로 설정

    모델을 적용할 차량 선택

    • 만들어둔 차량을 선택하고 ‘다음’ 클릭

    보상 함수 살펴보기

    def reward_function(params):
        '''
        Example of rewarding the agent to follow center line
        '''
        
        # Read input parameters
        track_width = params['track_width']
        distance_from_center = params['distance_from_center']
        
        # 중앙선으로부터 거리 계산
        marker_1 = 0.1 * track_width
        marker_2 = 0.25 * track_width
        marker_3 = 0.5 * track_width
        
        # 중앙선에 가깝게 달릴수록 더 높은 보상을 줌
        if distance_from_center <= marker_1:
            reward = 1.0
        elif distance_from_center <= marker_2:
            reward = 0.5
        elif distance_from_center <= marker_3:
            reward = 0.1
        else:
            reward = 1e-3  # 도로밖을 벗어나거나 부딫히면 보상을 잃음
        
        return float(reward)

    3. 딥레이서 실행하기

    훈련 초기화한 후 에이전트가 트랙을 달리는 모습 확인하기

    • 위의 모든 설정 단계를 마치면 훈련 창이 나타남
    • 훈련은 바로 시작되지 않으며, 훈련을 초기화하는 데 10분 정도 소요

    훈련 초기화 중
    훈련 진행 중

    • 초기화가 완료되고 학습이 시작되면, 차량의 움직임을 비디오로 확인 가능
    • 보상 그래프도 실시간으로 확인 가능
    • 훈련이 끝날때까지 대기

    훈련 완료 후, 개선 창

    • 훈련이 끝나면, 모델 개선이 가능.
      • 하단의 ‘Start evaluation’ 버튼을 눌러 모델 개선 진행
    • 모델 개선은 다른 트랙에서 진행이 가능하지만, 동일한 환경에서 시험해보기 위해 동일한 트랙 선택

    적절한 파라미터를 설정하지 못 해 완주하지 못함

    • 완주를 하지 못했고, 학습이 잘 못 되었다는 것을 확인 가능, 파라미터 수정이 필요
      • 즉, 강화 학습은 파라미터에 매우 민감, 적절한 파라미터 설정이 필요
    •  
Designed by Tistory.