딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
-
Upload
naver-d2 -
Category
Technology
-
view
2.878 -
download
9
Transcript of 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
딥러닝과 강화 학습으로나보다 잘하는쿠키런 AI 구현하기김태훈
저는
졸업
병특
EMNLP DataCom IJBDI 논문 게재
httpcarpedm20githubio
딥러닝 + 강화 학습
Playing Atari with Deep Reinforcement Learning (2013)httpsdeepmindcomresearchdqn
Mastering the game of Go with deep neural networks and tree search (2016)httpsdeepmindcomresearchalphago
(2016)httpvizdoomcsputedupl
딥러닝 + 강화 학습
딥러닝 + 강화 학습
ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크
딥러닝 + 강화 학습Reinforcement Learning
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
저는
졸업
병특
EMNLP DataCom IJBDI 논문 게재
httpcarpedm20githubio
딥러닝 + 강화 학습
Playing Atari with Deep Reinforcement Learning (2013)httpsdeepmindcomresearchdqn
Mastering the game of Go with deep neural networks and tree search (2016)httpsdeepmindcomresearchalphago
(2016)httpvizdoomcsputedupl
딥러닝 + 강화 학습
딥러닝 + 강화 학습
ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크
딥러닝 + 강화 학습Reinforcement Learning
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
딥러닝 + 강화 학습
Playing Atari with Deep Reinforcement Learning (2013)httpsdeepmindcomresearchdqn
Mastering the game of Go with deep neural networks and tree search (2016)httpsdeepmindcomresearchalphago
(2016)httpvizdoomcsputedupl
딥러닝 + 강화 학습
딥러닝 + 강화 학습
ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크
딥러닝 + 강화 학습Reinforcement Learning
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Playing Atari with Deep Reinforcement Learning (2013)httpsdeepmindcomresearchdqn
Mastering the game of Go with deep neural networks and tree search (2016)httpsdeepmindcomresearchalphago
(2016)httpvizdoomcsputedupl
딥러닝 + 강화 학습
딥러닝 + 강화 학습
ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크
딥러닝 + 강화 학습Reinforcement Learning
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Mastering the game of Go with deep neural networks and tree search (2016)httpsdeepmindcomresearchalphago
(2016)httpvizdoomcsputedupl
딥러닝 + 강화 학습
딥러닝 + 강화 학습
ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크
딥러닝 + 강화 학습Reinforcement Learning
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
(2016)httpvizdoomcsputedupl
딥러닝 + 강화 학습
딥러닝 + 강화 학습
ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크
딥러닝 + 강화 학습Reinforcement Learning
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
딥러닝 + 강화 학습
딥러닝 + 강화 학습
ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크
딥러닝 + 강화 학습Reinforcement Learning
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
딥러닝 + 강화 학습
ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크
딥러닝 + 강화 학습Reinforcement Learning
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크
딥러닝 + 강화 학습Reinforcement Learning
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
딥러닝 + 강화 학습Reinforcement Learning
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Machine Learning
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
지도 학습
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
비지도 학습
지도 학습
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
비지도 학습
지도 학습
강화 학습
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
비지도 학습 강화 학습
지도 학습
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
동전
음식
동전음식
지도 학습
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
동전
음식
지도 학습
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
지도 학습
동전
음식
분류Classifica-
tion
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
비지도 학습
지도 학습
강화 학습
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
비지도 학습
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
비지도 학습
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
비지도 학습
군집화Clustering
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
비지도 학습
지도 학습
강화 학습
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
분류도 아니고 군집화도 아닌것
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
로봇를 걷게 하려면
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
처음에는 학습할 데이터가 없다
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
강화 학습(Reinforcement Learn-ing)
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
목표
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
목표
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
목표
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
목표
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Agent
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
State
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
State
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
State Action
점프
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
Action
점프
State
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
Action State Reward
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
Action State Reward
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
State
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
Action State 가만히
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
Action State Reward
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
즉 강화 학습은
bull Agent 가 action 을 결정하는 방법을 학습시키는 것
bull각 action 은 그 다음 state 에 영향을 끼친다
bull성공한 정도는 reward 로 측정
bull목표 미래의 reward 가 최대가 되도록 action 을
취하는 것
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Environment
Agent
Action State Reward
Reinforcement Learning
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
그래서
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
DL+RL 로 무엇을 했나
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
AlphaRun
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
+
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
쿠키가 스스로 달릴 수 있으면
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
게임 밸런싱을
자동으로 할 수 있지 않을까
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
쿠키 30 개 ( 평균 8 레벨 )
펫 30 개
보물 9 개 (2 개씩 장착 )
맵 7 개
평균 플레이 4 분
=
5040 일
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
평균 플레이 4 초
1 대 6 개 프로세스
30times8times30times91198622times7times46
=iquest
14 일
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
AlphaRun
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
쿠키런 AI 를 지탱하는 기술들
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
1 Deep Q-Network
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
Action
None 슬라이드 점프0
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
가장 좋은 행동
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1
119904119905
Q
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
QState 에서
Action 를 했을 때
기대되는 미래 가치
( s a )
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
s Q (s 슬라이드 )Q (s 가만히 )
Q (s 점프 )
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
s Q (s 슬라이드 )=5Q (s 가만히 )=0
Q (s 점프 )=10
점프 슬라이드가만히
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
기대되는 미래 가치
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
rsquos 가치 = 점수
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
rsquos 가치 = 점수
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
미래에 얻을 점수들의 합
Q
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
점프 슬라이드 가만히
+1+1+5+hellip
+1+1+hellip
+0+1+hellip
Q
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
점프 슬라이드 가만히
-1-1-1+hellip
+1+1+hellip
-1+1-1+hellip
Q
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
결과는
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
하지만 1
bull왜 하나씩 놓치고 이상한 행동을 하는 걸까
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
2 Double Q-Learn-ing
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
핵심은
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
미래의 가치를 나타내는 가
낙관적 예측 or 발산하는 것을 막음
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
119897119900119904119904=(예측minus정답 )2
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
예측 정답minus
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
예측 정답minus
0
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
예측 정답minus
0
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
예측 정답minus
0
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
119876예측 정답minus
0
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
DQNDou-ble DQN
119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Double Q 가 Q 값은 작지만
Deep Q-learning Double Q-learning
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Deep Q-learning Double Q-learning
Double Q 가 Q 값은 작지만 점수는 훨씬 높다
무려 60 만점 차이
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
결과는
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
ldquo 아 다했다 rdquo
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
하지만 2bull그리고 충격과 공포의 보너스 타임
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
3 Dueling Network
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
기대되는 미래 가치
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 +1+1+1hellip
0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip
0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
점프 10 8슬라이드 -2 1가만히 5 12
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
정확한 예측이 어렵다
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
하지만
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
를 정확하게 예측할 필요가 있을까
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
슬라이드 (기준 )
점프 +1 +3가만히 +1 +2
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
0 (기준 )
+1 +3-1 -2
10 200 114 32
Q어느 것이 예측하기 더 쉬울까
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
0 (기준 )
+1 +3-1 -2
Q당연히 차이를 배우는 것이 쉽다
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Q(sa)=V(s)+A(sa)
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Q(sa)=V(s)+A(sa)Value기준점
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이
AdvantageValue기준점
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
119876 (119904 1198861)
119876 (119904 1198862)
119876 (119904 1198863)
119904
Deep Q-Network
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
119881 (119904)
119860(119904 1198861)
119860(119904 1198862)
119860(119904 1198863)
119904
Dueling Network
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
119904Q119881
119860Dueling Network
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Q119881
119860
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Sum
Max
Average
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
3 Dueling network
DQN Sum Max
60 만점 차이
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
3 Dueling network
DQN Sum Max
60 만점 차이 100 만점 차이
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
쿠키런 AI 를 지탱하는 8 가지 기술
1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
엔지니어링이라고 쓰고 노가다라고 부른다
1 Hyperparameter tuning
2 Debugging3 Pretrained model4 Ensemble method
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
1 Hyperparameter tuning
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기
hellip
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
총 70+ 개
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Network
Training methodExperience memory
Environment
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
1 activation_fn activation function (relu tanh elu leaky)
2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-
tion 1 optimizer type of optimizer (adam adagrad rm-sprop)
2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target
network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning
rate7 learning_rate_end the minimum value of learning
rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate
restart
1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience
memory4 preload_memory whether to preload a saved
memory5 preload_batch_size batch size of preloaded
memory6 preload_prob probability of sampling from pre-
mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory
1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state
bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]
6 action_repeat of reapt of an action (frame skip)
bull i plain itembull h healbull m magicbull hi height
bull sp speedbull rj remained
jump
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
過猶不及과유불급
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
고정시킬 변수들을 정해서
한동안 건드리지 않는다
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
for land in range(3 7)
for cookie in cookies
options = []
option =
hidden_dims [[800 400 200] [1000 800 200]]
double_q [True False]
start_land land
cookie cookie
optionsappend(optioncopy())
array_run(options rsquodouble_q_test)
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
2 Debugging
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
ldquo 쿠키가 이상하게 행동하는데
이유라도 알려줬으면 rdquo
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
History
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Q-value
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
DuelingNetwork
V(s)A(sa)
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
도움이 된 순간
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
도움이 된 순간
bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-
tion 의 default 값이 nnrelu 로 설정되어 있음
bull Activation function 을 None 으로 지정하니 해결
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
tensorflowcontriblayerspythonlayerslayerspy
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
시도해 봤다면 좋았을 디버깅
bull State 를 실시간으로 수정하면서 Q 변화 보기
ex) 젤리를 쿠키 앞에 그려보면서 변화 확인
bull Exploration 을 어떻게 하고 있는지
bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
3 Pretrained model
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
하나의 모델을 처음부터 학습하기 위해선
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
ldquo반복된 실험의 학습
시간을
단축시켜야 한다 rdquo
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
모든 네트워크의 weight 를
저장하고 새로운 실험을 할 때
비슷한 실험의 weight 를 처음부터
사용
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
4 Ensemble methods
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Experiment 1
Experiment 2
Experiment 3
Experiment 4
점프
점프119878
가만히
점프
점프
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
ldquo 하나의 실험에서 만들어진여러 weight 들을
동시에 로드 하려면 rdquo
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는
젤리를 잘 먹는다
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Session
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Session
Graph
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Session
Graph
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Session
Graph
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Session
Graph
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
같은 이름의 node 는하나의 그래프에
두개 이상 존재할 수 없다
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Session
Graph Graph
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
한 세션에는하나의 그래프만 존재
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
Session
Graph Graph
Session
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
핵심은
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
with tfsession() as sess network = Network() sessrun(networkoutput)
평소처럼 이렇게 선언하지 마시고
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)
sessions[0]run(networkoutput)
이렇게 Session 을 살려서 선언하시면 됩니다
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
같은 방식으로보너스 타임도 학습
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
펫을 바꿔 보면서 성능 차이를 확인하거나
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
네
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
ldquo 알파런 잘 뜁니다 rdquo
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-
감사합니다
- 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
- 저는
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- 지도 학습
- 지도 학습 (2)
- 지도 학습 (3)
- Slide 20
- 비지도 학습
- 비지도 학습 (2)
- 비지도 학습 (3)
- Slide 24
- Slide 25
- Slide 26
- Slide 27
- Slide 28
- Slide 29
- Slide 30
- Slide 31
- Slide 32
- Slide 33
- Slide 34
- Slide 35
- Slide 36
- Slide 37
- Slide 38
- Slide 39
- Slide 40
- Slide 41
- Slide 42
- Slide 43
- Slide 44
- Slide 45
- 즉 강화 학습은
- Reinforcement Learning
- Slide 48
- Slide 49
- Slide 50
- Slide 51
- Slide 52
- Slide 53
- Slide 54
- Slide 55
- Slide 56
- 쿠키런 AI를 지탱하는 기술들
- 쿠키런 AI를 지탱하는 8가지 기술
- 쿠키런 AI를 지탱하는 8가지 기술 (2)
- 1 Deep Q-Network
- State
- Action
- Action (2)
- Action (3)
- Slide 65
- Slide 66
- Slide 67
- Slide 68
- 기대되는 미래 가치
- Slide 70
- Slide 71
- 미래에 얻을 점수들의 합
- Slide 73
- Slide 74
- Slide 75
- 결과는
- Slide 77
- 하지만 1
- 2 Double Q-Learning
- 핵심은
- Slide 81
- Slide 82
- Slide 83
- Slide 84
- Slide 85
- Slide 86
- Slide 87
- Slide 88
- Slide 89
- Slide 90
- Slide 91
- 결과는 (2)
- Slide 93
- ldquo아 다했다rdquo
- 하지만 2
- 하지만 2 (2)
- 3 Dueling Network
- Slide 98
- Slide 99
- Slide 100
- Slide 101
- Slide 102
- Slide 103
- Slide 104
- Slide 105
- Slide 106
- Q(sa)=V(s)+A(sa)
- Q(sa)=V(s)+A(sa) (2)
- Q(sa)=V(s)+A(sa) (3)
- Slide 110
- Slide 111
- Slide 112
- Slide 113
- Slide 114
- 3 Dueling network
- 3 Dueling network (2)
- 쿠키런 AI를 지탱하는 8가지 기술 (3)
- 쿠키런 AI를 지탱하는 8가지 기술 (4)
- 강화에 계속해서 실패한다면
- 엔지니어링이라고 쓰고 노가다라고 부른다
- Hyperparameter tuning
- 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
- 총 70+개
- Slide 124
- Slide 125
- 過猶不及 과유불급
- 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
- 고정시킬 변수들을 정해서 한동안 건드리지 않는다
- Slide 129
- Slide 130
- 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
- 2 Debugging
- ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
- Slide 134
- Slide 135
- Slide 136
- Slide 137
- Slide 138
- 도움이 된 순간
- 도움이 된 순간 (2)
- Slide 141
- 시도해 봤다면 좋았을 디버깅
- 3 Pretrained model
- 하나의 모델을 처음부터 학습하기 위해선
- ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
- 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
- 더 높은 점수를 얻을 확률이 높다
- 4 Ensemble methods
- Slide 149
- ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
- Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
- Slide 152
- Slide 153
- Slide 154
- Slide 155
- Slide 156
- Slide 157
- 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
- Slide 159
- 한 세션에는 하나의 그래프만 존재
- Slide 161
- 핵심은 (2)
- with tfsession() as sess network = Network() sessrun(net
- sessions = [] g = tfGraph() with gas_default() network =
- 같은 방식으로 보너스 타임도 학습
- Slide 166
- 쿠키런 AI로 밸런싱 자동화 하기
- Slide 168
- Slide 169
- 네
- ldquo알파런 잘 뜁니다rdquo
- Slide 172
-