사내 학습회: AWS DeepRacer에서 기초편(모형 제작) 개최

15386 단어 DeepRacerAWS

개시하다


사내 AWS 딥레이서 인구가 늘자 조금 따라가지 못하는 사람을 대상으로 AWS 딥레이서 학습회 기초편을 열고 그 내용을 공개했다.
본 보도는 기초편의 모형 제작을 해설하였다.
기타 학습회의 내용에 관해서는 아래 보도를 확인해 주십시오.
  • 사내 학습회: AWS DeepRacer 기초편 개최(기록 취득)
  • 사내 학습: AWS DeepRacer에서 기초 편(슈퍼 파라미터)을 개최
  • 사내 학습회: AWS DeepRacer 응용편(로그 분석, 시각화) 개최
  • 모형 제작 준비


    AWS 관리 콘솔에 로그인


    AWS 관리 콘솔에 로그인하여 서비스 요약 테이블에서 AWS DeepRacer를 검색합니다.

    영역 선택


    탐색 모음 오른쪽 상단에서 영역 이름을 선택하여 미국 동부(버지니아 북부)/North Virginia로 변경합니다.

    Reinforcement learning 시작


    AWS DeepRacer 콘솔이 열리면 왼쪽 창의 [Reinforcement learning]을 클릭합니다.

    모형 제작


    시동 모형 제작 화면


    AWS DeepRacer 콘솔 화면에서 [Create model] 버튼을 클릭합니다.

    모델 이름 설정하기


    모델 이름(Model name)과 모델 설명(Model description-optional)을 입력합니다.
    ※ 모델 명칭은 계정에 중복 없이 설치해야 합니다.

    Environment simulation 설정


    훈련에 사용할 과정을 선택하다.
    ※ 7개 코스(2019/07/17 현재) 이용 가능

    Action space 설정


    다음 Action space(AWS DeepRacer 핸들의 각도 및 속도)와 관련된 매개변수를 설정합니다.
  • Maximum steering angle: 최대 회전 각도
  • Stering angle granulity: 회전 각도의 분할수
  • Maximum speed: 최대 속도
  • Speed granulity: 속도의 분할수
  • ※ 필자는 AWS 서밋 Tokyo 2019에 참여했을 때 다음과 같은 매개 변수로 설정했습니다.
  • Maximum steering angle:25 degrees
  • Steering angle granularity:3
  • Maximum speed:6 m/s
  • Speed granularity:2
  • Reward function 설정


    차량 동작에 상응하는 보수 함수를 정의하다.보수 함수의 샘플을 보려면 Reward function examples 를 클릭합니다.
    ※ 3개 샘플(2019/07/17 현재) 사용 가능
    Follow the center line (Default)
    중심선을 따라 주행하는 보수 함수
    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']
    
        # Calculate 3 markers that are at varying distances away from the center line
        marker_1 = 0.1 * track_width
        marker_2 = 0.25 * track_width
        marker_3 = 0.5 * track_width
    
        # Give higher reward if the car is closer to center line and vice versa
        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  # likely crashed/ close to off track
    
        return float(reward)
    
    Stay inside the two borders
    트랙 경계 내 주행 보수 함수
    def reward_function(params):
        '''
        Example of rewarding the agent to stay inside the two borders of the track
        '''
    
        # Read input parameters
        all_wheels_on_track = params['all_wheels_on_track']
        distance_from_center = params['distance_from_center']
        track_width = params['track_width']
    
        # Give a very low reward by default
        reward = 1e-3
    
        # Give a high reward if no wheels go off the track and
        # the agent is somewhere in between the track borders
        if all_wheels_on_track and (0.5*track_width - distance_from_center) >= 0.05:
            reward = 1.0
    
        # Always return a float value
        return float(reward)
    
    Prevent zig-zag
    Z자형 주행 억제 보수 함수
    def reward_function(params):
        '''
        Example of penalize steering, which helps mitigate zig-zag behaviors
        '''
    
        # Read input parameters
        distance_from_center = params['distance_from_center']
        track_width = params['track_width']
        steering = abs(params['steering_angle']) # Only need the absolute steering angle
    
        # Calculate 3 markers that are at varying distances away from the center line
        marker_1 = 0.1 * track_width
        marker_2 = 0.25 * track_width
        marker_3 = 0.5 * track_width
    
        # Give higher reward if the agent is closer to center line and vice versa
        if distance_from_center <= marker_1:
            reward = 1
        elif distance_from_center <= marker_2:
            reward = 0.5
        elif distance_from_center <= marker_3:
            reward = 0.1
        else:
            reward = 1e-3  # likely crashed/ close to off track
    
        # Steering penality threshold, change the number based on your action space setting
        ABS_STEERING_THRESHOLD = 15
    
        # Penalize reward if the agent is steering too much
        if steering > ABS_STEERING_THRESHOLD:
            reward *= 0.8
    
        return float(reward)
    
    ※ 필자는 AWS 서밋 토키오 2019에 참가했을 때 프리미엄 지그재그를 기반으로 한 보수 함수를 훈련했습니다.

    Hyperparameters 설정


    다음 하이퍼매개변수를 설정합니다.
  • Gradient descent batch size: 계단이 내려간 일괄 사이즈
  • Number of epochs: 시대수
  • Learning rate: 학습률
  • Entropy: 엔트로피
  • Discount factor: 할인율
  • Looss type: 손실 유형
  • Number of experience episodes between each policy-updating iteration: 정책 업데이트 반복 사이의 확장 에피소드 수량

  • ※ 필자는 AWS 서밋 토키오 2019에 참가했을 때 그라디언트 데스센터 배치사이즈를 128로 설정하고 그 외에 훈련을 묵인했습니다.
    ※ 수퍼 파라미터에 대한 자세한 내용은 사내 학습: AWS DeepRacer에서 기초 편(슈퍼 파라미터)을 개최확인하세요.

    Stop condition 설정


    여기서 Maximum time의 훈련 시간을 설정합니다.

    ※ 필자는 AWS Summit Tokyo 2019에 참가해 re:Invent 2018시간, AWS Track 1시간, Bowtie Track 1시간, re:Invent 2018분 훈련을 했습니다.

    훈련을 시작하다


    [Start training]을 클릭하여 훈련을 시작합니다.

    훈련 중인 그림.


    왼쪽의 도표는 훈련의 진전 상황을 나타내고 가로축은 훈련 시간을 나타내며 세로축은 보수를 나타낸다.
    오른쪽 상단에 있는 도표라면 최상의 보수를 찾는 상태라고 볼 수 있다.
    오른쪽 그림(콘솔 화면에서 영상)은 주행 중인 자동차의 시점을 표시해 주행 모습을 확인할 수 있다.

    모형 제작 후


    트레이닝이 끝나면 트레이닝의 오른쪽에 Compuleted가 표시됩니다.

    모델 평가


    [start evalution]을 클릭하고 평가하고자 하는 노선과 시험 횟수를 선택하여 모델을 평가합니다.


    평가가 완료되면 AWS 딥레이서 콘솔 화면에서 평가 결과를 확인할 수 있다.

    재훈련


    훈련된 모형을 사용해 추가 훈련을 하려면 [Clone] 버튼을 클릭하고 Environment simulation, Reward function, Hyperparameters, Stop condition을 설정해 재훈련을 한다.
    ※ 액션 스페이스는 변경할 수 없습니다.

    모델 다운로드


    실제 컴퓨터로 이동하려면 [Download 모델] 버튼을 클릭하여 모델을 다운로드합니다.

    Virtual race의 참여


    Virtual race에 참가하고 싶을 때 [Submit to virtual race] 버튼을 클릭하고 사용할 모델을 선택한 후 [Submit model] 버튼을 클릭합니다.


    Virtual race 화면에서 결과를 확인할 수 있습니다.

    총결산


    이 글에는 모델 제작 준비~경기 참가 방법에 대한 설명이 담겨 있다.
    Action space, Reward function, Hyperparameters에 관해서는 정밀도를 높이기 위해 다양한 오류를 시도해 보고 싶습니다.

    좋은 웹페이지 즐겨찾기