2019 07 딥리워드 101 참여

아래 내용은 딥 리워드 핸즈온 세미나를 참석하면서 작성한 필기 내용을 담은 포스팅 입니다.
세부 내용들은 링크들을 따라가시면 확인하실 수 있으므로 개략적으로만 담았습니다.


https://festa.io/events/383
매달 정기적으로 진행하는 스터디.
전 세션까지는 안들어도 되지만 이번 세션부터 중간에 참여하면 어려울 수 있음.
페이스북 딥리워드 그룹에서 확인하실 수 있음.

사전 준비 사항

https://github.com/DeepReward/101/blob/master/README.md

  • 아나콘다 + 파이썬 3
  • jupyter notebook 환경 + numpy, matplotlib
  • 스타2 설치, pysc2 연동.
  • tensorflow 설치.

첫번째 세션

위의 코드를 기준으로 강화 학습의 개념을 설명. jupyter notebook 실행.
Sutton 교수님의 책을 기준으로 설명하시는 듯.

강화학습의 기본적인 탐색법

epsilon-greedy(e-greedy, 입실론 그리디)

가위바위보를 한다고 할때 이론적으로는 확률이 반반이지만 사람에 따라서 편차가 있을 수 있다. 이를 찾는 알고리즘.

잘 터지는 슬롯 머신 고르기 문제

위의 문제에 업그레이드 문제? 농담으로 입구쪽의 슬롯머신이 광고를 위해서 잘터진다고 함.
탐색이 필요하다는 예시
아래는 그리디, 엡실론 0.1, 0.001에 대한 성능 향상 그래프 이고, 그리디는 향상이 없음.
엡실론 0.1이 더 빨리 좋아졌지만 0.001이 나중에는 더 좋아질 수도 있음.

Markov Decision Processes and Dynamic Programming

아래와 같이 각 state가 연결되어 있고 다음 state로 넘어가는 확률이 정해져 있는 문제

벨만 등식

부동산에서 옆동네가 가격이 오르면 나도 오르는것 처럼. 다음 state의 가치가 상승할시 현재 상태도 상승한다는 것.
보통 Dynamic Programming을 쓴다고 하지만 completely known MDP 즉 각 state에 대한 정보를 알 수 있어야 사용이 가능 하다.


Generalized Policy Iteration (GPI) 프레임워크


최적 정책, 최적 가치를 찾는 과정. 한번 iteration 마다 평가를 하고 업데이트 함.
4 × 4 grid world example : iteration을 돌면서 상태값을 업데이트 하는 것을 보여줌.


Monte Carlo Simulation

MDP중에서 환경을 알지 못하는 경우를 다루는 알고리즘.
블랙잭의 예시를 통해서 설명.
코드는 open ai gym을 활용.(본인은 gym이 설치가 안되서 실습을 돌려보지는 않음.)

중간에 이세돌의 신의 한수에 대하여 이야기 하심.
-> 이세돌의 신의 한수는 확률이 매우 낮은 경우였고 policy evaluation 이 잘 안되어 결국 지게 되었다고 함.

시간차 학습 (Temporal-difference Learning)

monte carlo와 같이 환경을 알지 못하는 경우를 다루는 알고리즘.
bootstrapping이라는 것을 통해서 다음 상태의 예측을 현재의 상태에서 예측. -> 한 iteration을 기다릴 필요가 없다.


아래는 회사 -> 집에 도착하는 시간을 예측하는 데에서 두가지 알고리즘의 차이

랜덤 워크 예제

TD러닝을 통해서 품. 맨 오른쪽으로 가야함.

TD 학습을 이용한 Control 문제

살사, 큐러닝 두개의 방법이 있음. off policy가 복잡한 문제를 더 푸는데에 유용함.
복잡하지 않은 문제에 대하여는 살사가 더 수렴을 잘하기 때문에 살사를 쓰는게 조음.

Racetrack problem

sarsa, q러닝을 통하여 레이싱을 하는 문제를 품.

두번째 세션

케라스를 통하여 딥러닝 에이전트를 스타크래프트에 올려봄.
스타크래프트 2 논문을 기준으로 설명
https://github.com/sc2-korean-level/sc2-rl-book/blob/master/positionbeacon-ppo-code-review.md.

https://github.com/sc2-korean-level/sc2-rl-book/blob/master/positionbeacon-script-review.md

CPU 4개, 1080 TI 머신 기준 학습에만 3일이 걸림.
이미테이션 러닝을 통하여 학습을 함. 제로 베이스로 바닥부터 진행을 하면 주어진 목표까지 가지 못하거나 엄청 많이 걸림.

https://github.com/sc2-korean-level/sc2-rl-book/blob/master/collectmineralshards-script-review.md
하루 6시간정도 걸림 -> 분산처리 필요.

이쪽 내용은 좀더 공부가 필요할것 같음.

댓글

이 블로그의 인기 게시물

포켓몬 고 17셀 확인 포고맵 사용 방법

HTTP 오류 500.19 - Internal Server Error 에러 처리법

고려대학교 야간대학원 중간 후기