딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

172
딥딥딥딥 딥딥 딥딥딥딥 딥딥딥 딥딥딥 딥딥딥 AI 딥딥딥딥 딥딥딥

Transcript of 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

Page 1: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 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
Page 2: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 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
Page 3: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

딥러닝 + 강화 학습

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
Page 4: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 5: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 6: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

(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
Page 7: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

딥러닝 + 강화 학습

딥러닝 + 강화 학습

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
Page 8: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

딥러닝 + 강화 학습

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
Page 9: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 10: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

딥러닝 + 강화 학습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
Page 11: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 12: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류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
Page 13: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류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
Page 14: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류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
Page 15: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류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
Page 16: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류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
Page 17: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

동전

음식

지도 학습

지도 학습

동전

음식

분류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
Page 18: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

지도 학습

동전

음식

분류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
Page 19: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화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
Page 20: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

비지도 학습

비지도 학습

비지도 학습

군집화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
Page 21: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

비지도 학습

비지도 학습

군집화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
Page 22: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

비지도 학습

군집화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
Page 23: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

비지도 학습

지도 학습

강화 학습

분류도 아니고 군집화도 아닌것

로봇를 걷게 하려면

처음에는 학습할 데이터가 없다

>

( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서

>

( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다

>
>
>

강화 학습(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
Page 24: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

분류도 아니고 군집화도 아닌것

로봇를 걷게 하려면

처음에는 학습할 데이터가 없다

>

( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서

>

( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다

>
>
>

강화 학습(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
Page 25: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

로봇를 걷게 하려면

처음에는 학습할 데이터가 없다

>

( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서

>

( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다

>
>
>

강화 학습(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
Page 26: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

처음에는 학습할 데이터가 없다

>

( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서

>

( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다

>
>
>

강화 학습(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
Page 27: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

( 처음에는 아무것도 모르니 랜덤으로 )조금씩 관절을 움직여 보면서

>

( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다

>
>
>

강화 학습(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
Page 28: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

( 정답이 없기 때문에 학습 결과는 다양함 )시행 착오로부터 배운다

>
>
>

강화 학습(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
Page 29: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

강화 학습(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
Page 30: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

목표

목표

목표

목표

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
Page 31: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

목표

목표

목표

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
Page 32: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

목표

목표

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
Page 33: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

목표

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
Page 34: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 35: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 36: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 37: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 38: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 39: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 40: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 41: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 42: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 43: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 44: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 45: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

즉 강화 학습은

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
Page 46: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 47: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

그래서

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
Page 48: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 49: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 50: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 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
Page 51: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 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
Page 52: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 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
Page 53: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

쿠키 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
Page 54: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

평균 플레이 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
Page 55: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 56: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

쿠키런 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
Page 57: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 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
Page 58: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 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)

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
Page 59: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 60: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 61: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 62: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 63: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 64: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 65: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 66: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 67: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 68: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

기대되는 미래 가치

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
Page 69: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 70: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 71: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

미래에 얻을 점수들의 합

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
Page 72: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

점프 슬라이드 가만히

+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
Page 73: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

점프 슬라이드 가만히

-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
Page 74: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

결과는

>

하지만 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
Page 75: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
>

하지만 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
Page 76: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

하지만 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
Page 77: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 78: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

핵심은

미래의 가치를 나타내는 가

낙관적 예측 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
Page 79: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

미래의 가치를 나타내는 가

낙관적 예측 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
Page 80: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 81: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

예측 정답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
Page 82: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

예측 정답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
Page 83: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

예측 정답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
Page 84: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

예측 정답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
Page 85: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 86: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 87: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 88: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 89: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

결과는

>

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
Page 90: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
>

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
Page 91: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 92: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

하지만 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
Page 93: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

하지만 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
Page 94: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 95: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 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
Page 96: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 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
Page 97: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 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
Page 98: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

점프 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
Page 99: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 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
Page 100: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 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
Page 101: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

슬라이드 (기준 )

점프 +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
Page 102: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 103: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 104: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 105: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 106: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 107: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 108: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 109: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 110: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 111: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 112: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 113: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 114: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 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)

강화에 계속해서 실패한다면 논문 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
Page 115: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 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)

강화에 계속해서 실패한다면 논문 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
Page 116: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

강화에 계속해서 실패한다면 논문 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
Page 117: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

엔지니어링이라고 쓰고 노가다라고 부른다

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
Page 118: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 119: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

네트워크 바꾸기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
Page 120: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

총 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
Page 121: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 122: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 123: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

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
Page 124: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

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
Page 125: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

고정시킬 변수들을 정해서

한동안 건드리지 않는다

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
Page 126: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 127: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

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
Page 128: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 129: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 130: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 131: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 132: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 133: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

도움이 된 순간

>

도움이 된 순간

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
Page 134: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

도움이 된 순간

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
Page 135: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 136: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

시도해 봤다면 좋았을 디버깅

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
Page 137: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 138: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

하나의 모델을 처음부터 학습하기 위해선

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
Page 139: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 140: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

모든 네트워크의 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
Page 141: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

더 높은 점수를 얻을 확률이 높다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
Page 142: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 143: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 144: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 145: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 146: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 147: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 148: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 149: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 150: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 151: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

같은 이름의 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
Page 152: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 153: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

한 세션에는하나의 그래프만 존재

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
Page 154: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 155: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

핵심은

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
Page 156: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 157: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

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
Page 158: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

같은 방식으로보너스 타임도 학습

>

쿠키런 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
Page 159: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
>

쿠키런 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
Page 160: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

쿠키런 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
Page 161: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

학습된 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
Page 162: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 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
Page 163: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 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
Page 164: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 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
Page 165: 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 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