SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
분산 강화학습 논문
(DeepMind IMPALA)

구현
김정주 (haje01@gmail.com)
소개
정책(Policy) 기반 RL
•학습 및 표현이 더 간단하다

•가치(Value)는 어떤 동작을 해야하는지 지시해주지 않는다

•가치보다 정책기반이 더 강한 수렴 보장

•대표적으로 Actor-Critic 방법이 있음
Off-Policy Actor-Critic?
•Actor-Critic은 기본적으로 On-Policy

•DQN처럼 Replay Buffer를 사용할 수 없음

•대신 멀티 환경(Agent) 방식 사용

•A3C
논문 소개
•“IMPALA: Scalable Distributed Deep-RL with Importance
Weighted Actor-Learner Architectures”

•DeepMind, 2018

•빠른 학습을 위한 액터-러너 구성 분산(~수천 대) 강화 학습

•Off-Policy PG를 위해 중요도 샘플링 이용 V-trace 제안

•DMLab-30, Atari-57 등 Multi-Task에서 우수한 결과
비슷한 연구
•“Distributed Prioritized Experience Replay” (Ape-X)

•Google, 2018 (D. Silver)

•IMPALA와 비슷한 시기에 발표

•우선 경험 리플레이 방법으로 정책 지연 대응

•구현 발표 - https://www.slideshare.net/ssuser163469/
distributed-prioritized-experience-replay
데이터 병렬화
경사 병렬화
경험과 모수의 공유
•IMPALA에서 각 액터는 경험을 러너 중 하나로 보냄

•러너는 액터들이 보낸 경험에서 학습

•각 액터는 모든 러너에게서 가중치를 병렬로 얻고 병합

•가중치는 러너 머신간 분산

•러너들간 가중치 경사 공유
Single/Multi-Learner
Ape-X와 IMPALA의 공통점
•Off-Policy

•Multi-Actor

•경사가 아닌 경험을 공유 (지연 시간에 덜 민감)
Ape-X와 IMPALA 차이점
Ape-X IMPALA
러너 단일 러너 멀티 러너 가능
데이터 병렬화 중앙 집중 러너별 독립
경험 선별 Prioritization NA
정책 지연 대응 NA V-Trace
경사 병렬화 NA 러너들 간 공유
가중치 단일 가중치를 액터가 받음 복수 가중치를 액터가 병합
액터 전송 데이터 경험 + 우선도 경험 + 로짓 + LSTM상태
IMPALA 성능
DeepMind Lab-30 과제에서 점수와 소요 시간(처리량)
수식
V-trace target
vs ≜ V(xs) +
s+n−1
∑
t=s
γt−s
(
t−1
∏
i=s
ci)δtV
V-trace target
vs ≜ V(xs) +
s+n−1
∑
t=s
γt−s
(
t−1
∏
i=s
ci)δtV
≜ ρt(rt + γV(xt+1) − V(xt))
TD
V-trace target
vs ≜ V(xs) +
s+n−1
∑
t=s
γt−s
(
t−1
∏
i=s
ci)δtV
≜ min( ¯ρ,
π(at |xt)
μ(at |xt)
)
≜ ρt(rt + γV(xt+1) − V(xt))
절단 IS
갱신의 고정점(Fixed Point)을 정의
V-trace target
vs ≜ V(xs) +
s+n−1
∑
t=s
γt−s
(
t−1
∏
i=s
ci)δtV
≜ min(¯c,
π(ai |xi)
μ(ai |xi)
)
절단 IS
분산 감소에 이용
Policy Gradient - On Policy
∇J(μ) = 𝔼as∼μ(⋅|xs)[∇log μ(as |xs)qs |xs]
∇J(μ) = 𝔼as∼μ(⋅|xs)[∇log μ(as |xs)qs |xs]
Policy Gradient - On Policy
≜ rs + γvs+1 ≃ Qμ
(xs, as)
Policy Gradient - Off Policy
∇J(π) = 𝔼as∼μ(⋅|xs)[
π¯ρ(as |xs)
μ(as |xs)
∇log π¯ρ(as |xs)qs |xs]
Policy Gradient - Off Policy
∇J(π) = 𝔼as∼μ(⋅|xs)[
π¯ρ(as |xs)
μ(as |xs)
∇log π¯ρ(as |xs)qs |xs]
Importance Sampling
≜ ρ
기저있는 Actor-Critic Update
Δθ = α∇θlog πθ(s, a)(Q(s, a) − V(s))
V-trace Actor-Critic Update
+ ρs ∇wlog πw(a|xs)(rs + γvs+1 − Vθ(xs))
− ∇w ∑
a
πw(a|xs)log πw(a|xs)
(vs − Vθ(xs))∇θVθ(xs)
+ ρs ∇wlog πw(a|xs)(rs + γvs+1 − Vθ(xs))
− ∇w ∑
a
πw(a|xs)log πw(a|xs)
(vs − Vθ(xs))∇θVθ(xs)
Policy Gradient Loss
≃ Advantage
V-trace Actor-Critic Update
= qs
정책 모수 갱신
+ ρs ∇wlog πw(a|xs)(rs + γvs+1 − Vθ(xs))
− ∇w ∑
a
πw(a|xs)log πw(a|xs)
(vs − Vθ(xs))∇θVθ(xs)
Baseline Loss
V-trace Actor-Critic Update
가치 모수 갱신
+ ρs ∇wlog πw(a|xs)(rs + γvs+1 − Vθ(xs))
−∇w ∑
a
πw(a|xs)log πw(a|xs)
(vs − Vθ(xs))∇θVθ(xs)
Entropy Loss
V-trace Actor-Critic Update
탐험 유도
직관
•절단 중요도 샘플링(Truncated IS)으로 Policy-Lag 보완

•Off-Policy Policy Gradient 구현

•두 중요도 샘플링 값의 절단 임계치로 튜닝

•rho bar 는 수렴하는 가치함수의 기준에

•c bar 는 수렴하는 속도에 영향
재구현
https://github.com/haje01/impala
논문의 구현 초모수
재구현 초모수
•Unroll 수 : 5

•경사 Clipping 크기 : 0.1

•미니배치 크기 : 128

•RMSProp: LR = 0.0001, EPS = 1e-5

•각 액터는 약 6초에 한 번씩 버퍼(100 경험) 전송

•러너는 약 10초에 한 번 모델 배포
재구현 스펙
•PyTorch, AWS + Terraform

•단일 러너 - AWS p2.xlarge (Tesla K80)

•16 액터 - AWS m5.xlarge 4대

•ZeroMQ로 네트워킹

•Publish-Subscribe 패턴으로 모델 배포

•실험 대상: Atari 57 Games -> Pong
재구현 구조도 (단일 러너)
구현 팁
•갱신할 모수가 아닌 것에서 나온 값은 계산 그래프에서 떼어낼 것

•적절한 Entropy Loss로 Exploration을 촉진

•액터 환경별로 서로 다른 Random Seed를 줄 것
배포 문제
•다양한 샘플이 필요 -> 많은 테스크 노드

•하나씩 설치하고 관리하기는 힘듦

•AWS + Terraform 👏
Terraform을 통한 배포
$ terraform init
$ terraform apply
배포 결과
실험 결과… 수렴 실패 😱
실패 원인?
•계산 그래프에서 중복 역전파로 Gradient Explosion 가능성

•DeepMind 코드의 이해 부족

•논문에 구현관련 설명이 부족

•시간이 더 있다면… 😥
소감
•재구현은 논문 이해를 위한 좋은 방법

•분산 강화학습 추천

•IMPALA vs Ape-X?

•IMPALA는 이론적 장점, Ape-X는 구현 측면 장점

•둘의 우위는 앞으로 두고 보아야…
감사합니다.
참고
•https://arxiv.org/abs/1802.01561

•http://proceedings.mlr.press/v32/silver14.pdf

•https://github.com/deepmind/scalable_agent

•https://github.com/Shmuma/ptan

•https://github.com/kimhc6028/policy-gradient-
importance-sampling/blob/master/
importance_sampling.py

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강
 
Facebook Talk at Netflix ML Platform meetup Sep 2019
Facebook Talk at Netflix ML Platform meetup Sep 2019Facebook Talk at Netflix ML Platform meetup Sep 2019
Facebook Talk at Netflix ML Platform meetup Sep 2019
 
ML Infrastracture @ Dropbox
ML Infrastracture @ Dropbox ML Infrastracture @ Dropbox
ML Infrastracture @ Dropbox
 
파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기
 
Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...
Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...
Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...
 
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
 
[팝콘 시즌1] 허현 : 닭이 먼저 달걀이 먼저? 그래인저 인과검정
[팝콘 시즌1] 허현 : 닭이 먼저 달걀이 먼저? 그래인저 인과검정[팝콘 시즌1] 허현 : 닭이 먼저 달걀이 먼저? 그래인저 인과검정
[팝콘 시즌1] 허현 : 닭이 먼저 달걀이 먼저? 그래인저 인과검정
 
A Multi-Armed Bandit Framework For Recommendations at Netflix
A Multi-Armed Bandit Framework For Recommendations at NetflixA Multi-Armed Bandit Framework For Recommendations at Netflix
A Multi-Armed Bandit Framework For Recommendations at Netflix
 
PyMC mcmc
PyMC mcmcPyMC mcmc
PyMC mcmc
 
강화학습 해부학 교실: Rainbow 이론부터 구현까지 (2nd dlcat in Daejeon)
강화학습 해부학 교실: Rainbow 이론부터 구현까지 (2nd dlcat in Daejeon)강화학습 해부학 교실: Rainbow 이론부터 구현까지 (2nd dlcat in Daejeon)
강화학습 해부학 교실: Rainbow 이론부터 구현까지 (2nd dlcat in Daejeon)
 
강화학습 기초_2(Deep sarsa, Deep Q-learning, DQN)
강화학습 기초_2(Deep sarsa, Deep Q-learning, DQN)강화학습 기초_2(Deep sarsa, Deep Q-learning, DQN)
강화학습 기초_2(Deep sarsa, Deep Q-learning, DQN)
 
強化学習@PyData.Tokyo
強化学習@PyData.Tokyo強化学習@PyData.Tokyo
強化学習@PyData.Tokyo
 
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
 
Python入門
Python入門Python入門
Python入門
 
LinkedIn talk at Netflix ML Platform meetup Sep 2019
LinkedIn talk at Netflix ML Platform meetup Sep 2019LinkedIn talk at Netflix ML Platform meetup Sep 2019
LinkedIn talk at Netflix ML Platform meetup Sep 2019
 
新しい推薦方式 知識ベース型推薦についての解説
新しい推薦方式 知識ベース型推薦についての解説新しい推薦方式 知識ベース型推薦についての解説
新しい推薦方式 知識ベース型推薦についての解説
 
最近のDQN
最近のDQN最近のDQN
最近のDQN
 
Pythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI GymトレーニングPythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI Gymトレーニング
 
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
 
강화학습의 개요
강화학습의 개요강화학습의 개요
강화학습의 개요
 

Similar a 분산 강화학습 논문(DeepMind IMPALA) 구현

Similar a 분산 강화학습 논문(DeepMind IMPALA) 구현 (7)

Policy Gradient 부터 Actor-Critic 까지
Policy Gradient 부터 Actor-Critic 까지Policy Gradient 부터 Actor-Critic 까지
Policy Gradient 부터 Actor-Critic 까지
 
AlphaGo 알고리즘 요약
AlphaGo 알고리즘 요약AlphaGo 알고리즘 요약
AlphaGo 알고리즘 요약
 
Introduction toDQN
Introduction toDQNIntroduction toDQN
Introduction toDQN
 
CS294-112 Lecture 06
CS294-112 Lecture 06CS294-112 Lecture 06
CS294-112 Lecture 06
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
 
Control as Inference.pptx
Control as Inference.pptxControl as Inference.pptx
Control as Inference.pptx
 
알파고의 알고리즘
알파고의 알고리즘알파고의 알고리즘
알파고의 알고리즘
 

Más de 정주 김 (9)

SageMaker RL 맛보기
SageMaker RL 맛보기SageMaker RL 맛보기
SageMaker RL 맛보기
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
 
Theano 와 Caffe 실습
Theano 와 Caffe 실습 Theano 와 Caffe 실습
Theano 와 Caffe 실습
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101
 
WzDat과 Pandas를 통한 로그 데이터 분석
WzDat과 Pandas를 통한 로그 데이터 분석WzDat과 Pandas를 통한 로그 데이터 분석
WzDat과 Pandas를 통한 로그 데이터 분석
 
Interactive fiction
Interactive fictionInteractive fiction
Interactive fiction
 
Deploying flask with nginx & uWSGI
Deploying flask with nginx & uWSGIDeploying flask with nginx & uWSGI
Deploying flask with nginx & uWSGI
 
Logging 101
Logging 101Logging 101
Logging 101
 

분산 강화학습 논문(DeepMind IMPALA) 구현