Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, 2018 1 1.1 Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제 6.5에서 찾아볼 수 있다. http://incompleteideas.net/book/bookdraft2017nov5.pdf Windy gridworld는 다음 그림과 같이 8 7 Grid world로, Agent는 up, down, right, left의 4가지 action을 수행하면서 시작 상태 S에서 목표 상태 G로 도달 하는 것이 목적이다. 추가로, 중앙의 columns들에 바람(wind)이 있어서 이 영역 에서는 Agent가 up방향으로 해당 바람의 세기(strength)만큼 이동하게 된다. 예를 들어, Agent가 G의 바로 왼쪽에서 right를 수행하면 G보다 2칸 더 위에 위치하게 된다. Agent가 G의 바로 오른쪽에서 left를 수행하면 G보다 1칸 더 위에 위치 하게 된다. (즉, Agent가 이동을 시작 할 때 위치의 column상 strength만큼 위로 이동한후 해당 action을 수행하는 것과 같다). Windy gridworld는 Undiscounted espisodic task로 goal에 도달할때마다 reward 가 1씩 주어진다. 1.2 Sarsa와 Q-learning구현 (python code작성) 위의 Windy gridworld에 대해서 -greedy action를 이용한 경우 Sarsa와 Q-learning 을 구현하시오 (python code). 이때, = 0.1, α = 0.5 로 한다. 참고로, Sarsa와 Q-learning의 기본 알고리즘은 다음과 같다. 1
1.3 Sarsa와 Q-learning학습 결과 확인 Sarsa와 Q-learning각각에 대해서 학습한 결과의 Q values와 optimal policy는 별 도의 파일로 저장하고 이를 출력하는 python code를 작성하시오. 출력결과도 report하라. 1.4 Sarsa와 Q-learning 시물레이션 Sarsa와 Q-learning을 시물레이션하여 다음과 같이 time steps별로 수행된 epicodes수에 대한 curves를 비교하시오. (하나의 그래프에서 Sarsa와 Q-learning 곡 선이 비교되도록 하면 된다.) 2
2 Pytorch: Tutorial Pytorch를 설치 (https://pytorch.org/) 하여 아래 튜토리얼을 통해 기본 구조 및 학습 및 구현 방법을 이해하시오. 단, 동일한 환경상에서 구동 확인을 위해 pytorch 0.4.1 버전을 설치하시오. https://pytorch.org/get-started/previous-versions/ https://pytorch.org/tutorials/ https://pytorch.org/tutorials/beginner/deep learning 60min blitz. html https://pytorch.org/tutorials/beginner/data loading tutorial.html https://pytorch.org/tutorials/beginner/pytorch with examples.html 2.1 Pytorch: ConvNet for MNIST 다음 튜토리얼 자료 및 코드를 이해 및 참고하여 Convolutional networks (ConvNet)에 대해서 간략히 설명하시오. 또한, 튜토리얼 코드에 기반하여 MNIST 데이터셋상에 적용하고 학습완료 후 테스트셋상에서 성능결과를 출력하시오. 튜토리얼 자료: http://adventuresinmachinelearning.com/convolutional-neural-networks-tutorial 코드: https://github.com/adventuresinml/adventures-in-ml-code/blob/ master/conv net py torch.py 추가로, Assignment 5의 MLP의 모델들과 테스트셋에서 classification accuracy 성능을 비교하시오. 3 Deep Q Learning 본 문제에서는 breakout게임의 action을 학습하기 위해 DQN (Deep Q Learning)을 구현한다. 다음은 이를 위해 확장해야 하는 pygame 코드이다. https://github.com/aknuck/atari-breakout 위의 Atari breakout게임 화면은 다음과 같다. 3
3.1 DQN (Deep Q-network): Tutorial DQN은 Experience replay로 (s, a, r, s0 )로 구성된 replay memory D를 만들고, 이로부터 random mini-batch Di 를 샘플링하여 Di 에 대한 다음 loss function (squared error)를 줄이도록 network의 parameter를 학습하는 것이다. Li = Es,a,r,s0 Di [r + γmaxa0 Q(s0, a0 ; wold ) Q(s, a, w)] 다음은 DeepMind의 DQN 논문에서 기술된 학습 algorithm이다. (https://www.cs.toronto.edu/ vmnih/docs/dqn.pdf) 3.2 DQN (Deep Q-network): Pytorch 코드 다음 DQN pytorch 코드를 참조하여, DQN 기본구조를 이해하고 정리하시오. https://pytorch.org/tutorials/intermediate/reinforcement q learning.html 4
3.3 DQN (Deep Q-network): 구현 및 확장 DQN pytorch 코드를 참조하여 Q(s, a, w)을 위해 convolutional networks으로 구성하여 w학습을 위한 일반적인 DQN 알고리즘을 구현하고 이를 breakout 학습에 적용하시오. 다음 코드등 open source code를 활용하여 확장해도 된다. (보고서 작성시 출처를 밝힐 것) https://github.com/transedward/pytorch-dqn 단, DQN은 어느 게임에도 적용될 수 있도록 modularity를 유지하도록 하고, breakout code는 state image 및 reward를 추출하기 위해 적절히 일반화되어야 한다. 다음은 추가 comments이다. 1. pytorch버전은 0.4.1이어야 함 2. linux상에서 동작이 되도록 하고, os 버전등도 함꼐 기술 3.4 DQN (Deep Q-network): 적용 DQN을 적용하면서 Training epochs이 진행됨에 따라 Average reward curvs를 그리시오. 다음은 DeepMind 논문의 해당 curves의 예이다. 3.5 DQN (Deep Q-network) 적용: breakout 시물레이션 DQN을 통해 학습된 결과를 저장한 후, 이를 로딩하여 학습된 Agent가 수행한 action에 따라 breakout가 play되도록 시물레이션 test code를 작성하시오. (실행 하면 Agent의 action에 따라 breakout가 자동으로 play되어야 함) 4 제출 내용 및 평가 방식 코드는 python으로 본 과제 결과물로 필수적으로 제출해야 내용들은 다음과 같다. 코드 전체 테스트 결과: 각 내용별 테스트 코드 및 해당 로그 또는 출력 결과. 결과보고서: 구현 방법을 요약한 보고서. 본 과제의 평가항목 및 배점은 다음과 같다. 5
각세부내용의구현정확성및완결성 (80 점 ) 코드의 Readability 및쳬계성 (10 점 ) 결과보고서의구체성및완결성 (10 점 ) 6