Artificil Intelligence: Assignment 3 Seung-Hoon N November 30, 2017 1 1.1 Srs와 Q-lerning Windy Gridworld Windy gridworld는 (Sutton 교재 연습문제 6.5) 다음 그림과 같이 8 7 Grid world 로, Agent는 up, down, right, left의 4가지 ction을 수행하면서 시작 상태 S에서 목표 상태 G로 도달하는 것이 목적이다. 추가로, 중앙의 columns들에 바람 (wind)이 있어서 이 영역에서는 Agent가 up방향으로 해당 바람의 세기(strength) 만큼 이동하게 된다. 예를 들어, Agent가 G의 바로 왼쪽에서 right를 수행하면 G 보다 2칸 더 위에 위치하게 된다. Agent가 G의 바로 오른쪽에서 left를 수행하면 G보다 1칸 더 위에 위치하게 된다. (즉, Agent가 이동을 시작 할 때 위치의 column 상 strength만큼 위로 이동한후 해당 ction을 수행하는 것과 같다). Windy gridworld는 Undiscounted espisodic tsk로 gol에 도달할때마다 rewrd가 1씩 주어진다. 1.2 Srs와 Q-lerning구현 위의 Windy gridworld에 대해서 epsilon-greedy ction를 이용한 경우 Srs와 Q-lerning을 구현하시오 (python code). 이때, = 0.1, α = 0.5 로 한다. 참고로, Srs와 Q-lerning의 기본 알고리즘은 다음과 같다. 1
1.3 Srs와 Q-lerning학습 결과 확인 Srs와 Q-lerning각각에 대해서 학습한 결과의 Q vlues와 optiml policy는 별 도의 파일로 저장하고 이를 출력하는 python code를 작성하시오. 출력결과도 report하라. 1.4 Srs와 Q-lerning 시물레이션 Srs와 Q-lerning을 시물레이션하여 다음과 같이 time steps별로 수행된 epicodes수에 대한 curves를 비교하시오. (하나의 그래프에서 Srs와 Q-lerning 곡 선이 비교되도록 하면 된다.) 2
2 Policy Grdient Theorem Episodic 경우에 대해 다음 policy grdient theorem 을 증명하시오 (Sutton 교재 13.2절 참조). Theorem 1 (Policy grdient theorem) " # J(θ) = Eπ qπ (St, ) θ log π( St, θ) 위의 증명을 위해 다음의 단계를 거치시오 (Sutton 교재 9.2절 및 13.2절 참조). 1. 모든 episode는 공통 START 상태인 s0 에서 시작한다고 가정하여, 목적함수 (policy objective function) J(θ)는 시작 상태에서 현재 policy πθ 를 따랐을 때의 vlue로 다음과 같이 정의한다. J(θ) = vπθ (s0 ) 2. J(θ) = vπθ (s0 )를 전개하기 위해, stte-vlue function의 정의에 따라, vπθ (s)를 다시 다음과 같이 기술한다. " # vπ (s) = π( s)qπ (s, ) 3. vπ (s)를 정의에 따라 unfolding하여 다음을 유도한다 (이 과정을 상세히 정리할 것). vπ (s0 ) = η(s) π( s)qπ (s, ) s 이때 η()는 한 episode내에서 상태 s에 평균적으로 머무르는 time steps의 수로 다음과 같이 정의된다 (Sutton 교재 9.2절 참조). η(s) = h(s) + η(s0 ) π( s0 )p(s s0, ) s0 4. sttionry 분포 dπ (s) = P η(s) 0 의 s0 η(s ) J(θ) = vπ (s0 ) 형태로, 위의 식을 다시 기술한다. s 3 dπ (s) π( s)qπ (s, )
5. Expecttion의 정의에 따라 Policy grdient theorem을 최종 유도한다 (이 과정을 구체적으로 정리할 것). Tensorflow 사용 3 Tensorflow를 설치 (https://www.tensorflow.org/) 하여 다음의 과정을 수행 해보고 Convolutionl network의 기본 구조 및 학습 및 구현 방법을 이해하시오. (이 문제에 대한 보고서는 1페이지 이내로 간략히 정리할 것) 3.1 MNIST dtset에서 실행 다음 MNIST을 위한 분류기 Tutoril을 참조하여 해당 code mnist_softmx.py 를 이해하고 실행한 결과를 보이라. https://www.tensorflow.org/get_strted/mnist/beginners Tensorflow구동방식과 mnist_softmx.py의 핵심 함수에 대해 요약적으로 설 명하라. 또한, 다음에 대해서 간략히 설명하라. 1. loss function - squred error 2. loss function - negtive cross entropy 3. model prmeter 4. stochstic grdient decent 5. minibtch trining 6. regulriztion 7. computtionl grph 8. tf.vrible 9. tf.plceholder 3.2 CIFAR dtset에서 실행 다음을 각각 참조하여 CIFAR dtset에서 학습을 수행하고, 실행한 결과를 보 이라. https://www.tensorflow.org/tutorils/deep_cnn https://github.com/tensorflow/models/tree/mster/tutorils/imge/cifr10/ 4 Deep reinforcement lerning 본 문제에서는 Tetris게임의 ction을 학습하기 위해 Convolutionl network을 이 용한 deep reinforcement lerning을 구현한다. 다음은 이를 위해 확장해야 하는 pygme 코드이다. https://github.com/smrtviking/mtris 참고로 위의 코드를 설치하여 실행한 게임 화면은 아래와 같다. 4
4.1 DQN (Deep Q-network) 구현 DQN은 Experience reply로 (s,, r, s0 )로 구성된 reply memory D를 만들고, 이로부터 rndom mini-btch Di 를 샘플링하여 Di 에 대한 다음 loss function (squred error)를 줄이도록 network의 prmeter를 학습하는 것이다. Li = Es,,r,s0 Di [r + γmx0 Q(s0, 0 ; wold ) Q(s,, w)] 다음은 DeepMind의 DQN 논문에서 기술된 학습 lgorithm이다. (https://www.cs.toronto.edu/ vmnih/docs/dqn.pdf) Q(s,, w)을 위해 convolutionl networks으로 구성하여 w학습을 위한 일 반적인 DQN 알고리즘을 구현하고 이를 MTris학습에 적용하시오. 5
단, DQN은 어느 게임에도 적용될 수 있도록 modulrity를 유지하도록 하고, MTris code는 stte imge 및 rewrd를 추출하기 위해 적절히 수정 및 확장하 시오. 다음은 추가 comments이다. 1. tensorflow 1.0버전이상 호환되도록 작성하라 (linux ubuntu 플랫폼) 2. convolutionl networks의 딥 모델 구조는 3-4개 층 정도로 적절히 구성하면 된다. 3. Discount fctor는 γ는 [0.7, 0.95]사이의 값으로 적절히 설정하라. 4. code실행을 위한 간단한 README 4.2 DQN (Deep Q-network) 적용 DQN을 적용하면서 Trining epochs이 진행됨에 따라 Averge rewrd curvs를 그리시오. 다음은 DeepMind 논문의 해당 curves의 예이다. 4.3 DQN (Deep Q-network) 적용: Tetris 시물레이션 DQN을 통해 학습된 결과를 저장한 후, 이를 로딩하여 학습된 Agent가 수행한 ction에 따라 MTris가 ply되도록 시물레이션 code를 작성하시오. (실행하면 Agent의 ction에 따라 MTris가 자동으로 ply되어야 함) 4.4 Actor-Critic model 구현 Actor-critic model은 vlue network v(s, w)와 policy network π(s, θ) 두고 vlue network의 prmeter를 갱신할 때는 TD-lerning을, policy network의 prmeter 를 갱신할 때는 policy grdient의 q 함수대신 dvntge function Aπθ (s, )를 사 용한 다음의 policy grdient를 사용한다. J(θ) = Eπθ [ log π( St, θ)aπθ (S, )] Actor-critic model의 학습 lgorithm은 다음과 같다 (Sutton 교재 13.5절 참조) 6
v(s, w)및 Q(s,, θ)을 위해 convolutionl networks으로 구성하여 w, θ 파 라미터을 위한 일반적인 Actor-Critic 알고리즘을 구현하고 이를 MTris학습에 적용하시오. 단, 마찬가지로 Actor-critic model은 어느 게임에도 적용될 수 있도록 modulrity를 유지하도록 하고, MTris code는 stte imge 및 rewrd를 추출하기 위해 적절히 수정 및 확장하시오. 다른 조건은 DQN과 유사하게 설정할 것. 4.5 Actor-Critic model 적용 및 시물레이션 마찬가지로, Actor-Critic model을 적용하면서 Trining epochs이 진행됨에 따라 Averge rewrd curvs를 그리고, 이를 DQN과 비교하시오. 또한, Actor-Critic model을 통해 학습된 결과를 저장한 후, 이를 로딩하여 학 습된 Agent가 수행한 ction에 따라 MTris가 ply되도록 시물레이션 code를 작 성하시오. (실행하면 Agent의 ction에 따라 MTris가 자동으로 ply되어야 함) 5 Deep reinforcement lerning: Brekout 추가로 앞에서 구현된 DQN, Actor-critic model을 확장하여 Brekout게임에 적 용하라. 다음은 이를 위해 확장해야 하는 pygme 코드이다. https://github.com/johncheethm/brekout 참고로 위의 코드를 설치하여 실행한 게임 화면은 아래와 같다. 7
또는, 다음의 tri brekout 코드를확장해도된다. https://github.com/knuck/atri-brekout 위의 Atri brekout 게임화면은다음과같다. 제출해야하는코드는다음과같다. 1. DQN을이용한 Brekout 학습기 ( 학습결과저장 ) 2. DQN을이용한 Brekout 테스트 : performnce curve 도출 3. DQN을이용한 Brekout 테스트 : simultion ( 자동실행 ) 4. Actor-critic model을이용한 Brekout 학습기 ( 학습결과저장 ) 5. Actor-critic model을이용한 Brekout 테스트 : performnce curve 도출 6. Actor-critic model을이용한 Brekout 테스트 : simultion ( 자동실행 ) 8