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

Post on 07-Jan-2017

2.878 views 9 download

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

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

저는

졸업

병특

EMNLP DataCom IJBDI 논문 게재

httpcarpedm20githubio

딥러닝 + 강화 학습

Playing Atari with Deep Reinforcement Learning (2013)httpsdeepmindcomresearchdqn

Mastering the game of Go with deep neural networks and tree search (2016)httpsdeepmindcomresearchalphago

>

(2016)httpvizdoomcsputedupl

딥러닝 + 강화 학습

딥러닝 + 강화 학습

ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크

딥러닝 + 강화 학습Reinforcement Learning

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

저는

졸업

병특

EMNLP DataCom IJBDI 논문 게재

httpcarpedm20githubio

딥러닝 + 강화 학습

Playing Atari with Deep Reinforcement Learning (2013)httpsdeepmindcomresearchdqn

Mastering the game of Go with deep neural networks and tree search (2016)httpsdeepmindcomresearchalphago

>

(2016)httpvizdoomcsputedupl

딥러닝 + 강화 학습

딥러닝 + 강화 학습

ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크

딥러닝 + 강화 학습Reinforcement Learning

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

딥러닝 + 강화 학습

Playing Atari with Deep Reinforcement Learning (2013)httpsdeepmindcomresearchdqn

Mastering the game of Go with deep neural networks and tree search (2016)httpsdeepmindcomresearchalphago

>

(2016)httpvizdoomcsputedupl

딥러닝 + 강화 학습

딥러닝 + 강화 학습

ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크

딥러닝 + 강화 학습Reinforcement Learning

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Playing Atari with Deep Reinforcement Learning (2013)httpsdeepmindcomresearchdqn

Mastering the game of Go with deep neural networks and tree search (2016)httpsdeepmindcomresearchalphago

>

(2016)httpvizdoomcsputedupl

딥러닝 + 강화 학습

딥러닝 + 강화 학습

ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크

딥러닝 + 강화 학습Reinforcement Learning

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Mastering the game of Go with deep neural networks and tree search (2016)httpsdeepmindcomresearchalphago

>

(2016)httpvizdoomcsputedupl

딥러닝 + 강화 학습

딥러닝 + 강화 학습

ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크

딥러닝 + 강화 학습Reinforcement Learning

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

(2016)httpvizdoomcsputedupl

딥러닝 + 강화 학습

딥러닝 + 강화 학습

ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크

딥러닝 + 강화 학습Reinforcement Learning

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

딥러닝 + 강화 학습

딥러닝 + 강화 학습

ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크

딥러닝 + 강화 학습Reinforcement Learning

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

딥러닝 + 강화 학습

ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크

딥러닝 + 강화 학습Reinforcement Learning

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

ldquo 뉴럴뉴럴rdquo한 뉴럴 네트워크

딥러닝 + 강화 학습Reinforcement Learning

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

딥러닝 + 강화 학습Reinforcement Learning

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Machine Learning

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

지도 학습

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

비지도 학습

지도 학습

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

비지도 학습

지도 학습

강화 학습

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

비지도 학습 강화 학습

지도 학습

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

동전

음식

동전음식

지도 학습

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

동전

음식

지도 학습

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

지도 학습

동전

음식

분류Classifica-

tion

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

비지도 학습

지도 학습

강화 학습

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

비지도 학습

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

비지도 학습

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

비지도 학습

군집화Clustering

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

비지도 학습

지도 학습

강화 학습

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

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

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

로봇를 걷게 하려면

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

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

>

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

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

>

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

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

>
>
>

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

강화 학습(Reinforcement Learn-ing)

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

목표

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

목표

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

목표

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

목표

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Agent

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

State

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

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

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

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

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

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

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

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

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

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

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

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

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

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

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

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

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

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

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

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

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

State

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

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

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

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

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

기대되는 미래 가치

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

앞에 젤리가 많은지 +1+1+1hellip

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

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

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

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

점프 10 8슬라이드 -2 1가만히 5 12

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

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

State Action

점프

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

Action

점프

State

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

Action State Reward

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

Action State Reward

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

State

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

Action State 가만히

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

Action State Reward

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

즉 강화 학습은

bull Agent 가 action 을 결정하는 방법을 학습시키는 것

bull각 action 은 그 다음 state 에 영향을 끼친다

bull성공한 정도는 reward 로 측정

bull목표 미래의 reward 가 최대가 되도록 action 을

취하는 것

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Environment

Agent

Action State Reward

Reinforcement Learning

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

그래서

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

DL+RL 로 무엇을 했나

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

AlphaRun

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

+

>

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

쿠키가 스스로 달릴 수 있으면

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

게임 밸런싱을

자동으로 할 수 있지 않을까

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

쿠키 30 개 ( 평균 8 레벨 )

펫 30 개

보물 9 개 (2 개씩 장착 )

맵 7 개

평균 플레이 4 분

=

5040 일

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

평균 플레이 4 초

1 대 6 개 프로세스

30times8times30times91198622times7times46

=iquest

14 일

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

AlphaRun

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

쿠키런 AI 를 지탱하는 기술들

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

1 Deep Q-Network

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

State 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

Action

None 슬라이드 점프0

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

가장 좋은 행동

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Action 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 -1 -10 1 1 3 3 -1 -1 -10 1 1 0 0 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1

119904119905

Q

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

QState 에서

Action 를 했을 때

기대되는 미래 가치

( s a )

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

s Q (s 슬라이드 )Q (s 가만히 )

Q (s 점프 )

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

s Q (s 슬라이드 )=5Q (s 가만히 )=0

Q (s 점프 )=10

점프 슬라이드가만히

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

기대되는 미래 가치

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

rsquos 가치 = 점수

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

rsquos 가치 = 점수

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

미래에 얻을 점수들의 합

Q

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

점프 슬라이드 가만히

+1+1+5+hellip

+1+1+hellip

+0+1+hellip

Q

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

점프 슬라이드 가만히

-1-1-1+hellip

+1+1+hellip

-1+1-1+hellip

Q

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

결과는

>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172
>

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

하지만 1

bull왜 하나씩 놓치고 이상한 행동을 하는 걸까

>
>

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

2 Double Q-Learn-ing

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

핵심은

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

미래의 가치를 나타내는 가

낙관적 예측 or 발산하는 것을 막음

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

119897119900119904119904=(예측minus정답 )2

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

예측 정답minus

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

예측 정답minus

0

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

예측 정답minus

0

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

예측 정답minus

0

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

119876예측 정답minus

0

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

DQNDou-ble DQN

119897119900119904119904=(119876 (119904 119886)minusr+120574 (119904 argmax119886 119876 (119904 119886 )))2

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Double Q 가 Q 값은 작지만

Deep Q-learning Double Q-learning

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Deep Q-learning Double Q-learning

Double Q 가 Q 값은 작지만 점수는 훨씬 높다

무려 60 만점 차이

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

결과는

>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172
>

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

ldquo 아 다했다 rdquo

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

하지만 2bull단조로운 land 1 이 아닌 land 3 를 가보니

>
>

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

하지만 2bull그리고 충격과 공포의 보너스 타임

>

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

3 Dueling Network

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

의 값은 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

기대되는 미래 가치

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 +1+1+1hellip

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 03 3 3 3 0 03 3 3 3 0 00 0 0 0 0 0-1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

앞에 젤리가 많은지 장애물이 많은지 전혀 알 수 없음+1+1+1hellip +0-1-1+hellip

0 0 0 0 0 00 0 0 -1 -1 00 0 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 0 -1 -1 0-1 -1 -1 -1 -1 -1

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

점프 10 8슬라이드 -2 1가만히 5 12

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

정확한 예측이 어렵다

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

하지만

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

를 정확하게 예측할 필요가 있을까

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

슬라이드 (기준 )

점프 +1 +3가만히 +1 +2

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 1 1 3 3 0 0 00 1 1 3 3 0 0 00 1 1 0 0 0 0 0-1 -1 -1 -1 -1 -1 -1 -1

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

0 (기준 )

+1 +3-1 -2

10 200 114 32

Q어느 것이 예측하기 더 쉬울까

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

0 (기준 )

+1 +3-1 -2

Q당연히 차이를 배우는 것이 쉽다

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Q(sa)=V(s)+A(sa)

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Q(sa)=V(s)+A(sa)Value기준점

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Q(sa)=V(s)+A(sa)상대적인 Q 값의 차이

AdvantageValue기준점

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

119876 (119904 1198861)

119876 (119904 1198862)

119876 (119904 1198863)

119904

Deep Q-Network

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

119881 (119904)

119860(119904 1198861)

119860(119904 1198862)

119860(119904 1198863)

119904

Dueling Network

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

119904Q119881

119860Dueling Network

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Q119881

119860

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Sum

Max

Average

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

3 Dueling network

DQN Sum Max

60 만점 차이

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

3 Dueling network

DQN Sum Max

60 만점 차이 100 만점 차이

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

쿠키런 AI 를 지탱하는 8 가지 기술

1 Deep Q-Network (2013)2 Double Q-Learning (2015)3 Dueling Network (2015)4 Prioritized Experience Replay (2015)5 Model-free Episodic Control (2016)6 Asynchronous Advantageous Actor-Critic method (2016)7 Human Checkpoint Replay (2016)8 Gradient Descent with Restart (2016)

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

강화에 계속해서 실패한다면 논문 8 개나 갈아 넣었는데 안된다고

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

엔지니어링이라고 쓰고 노가다라고 부른다

1 Hyperparameter tuning

2 Debugging3 Pretrained model4 Ensemble method

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

1 Hyperparameter tuning

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

네트워크 바꾸기Optimizer 바꾸기reward 식 바꾸기

hellip

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

총 70+ 개

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Network

Training methodExperience memory

Environment

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

1 activation_fn activation function (relu tanh elu leaky)

2 initializer weight initializer (xavier)3 regularizer weight regularizer (None l1 l2)4 apply_reg layers where regularizer is applied5 regularizer_scale scale of regularizer6 hidden_dims dimension of network7 kernel_size kernel size of CNN network8 stride_size stride size of CNN network9 dueling whether to use dueling network10double_q whether to use double Q-learning11use_batch_norm whether to use batch normaliza-

tion 1 optimizer type of optimizer (adam adagrad rm-sprop)

2 batch_norm whether to use batch normalization3 max_step maximum step to train4 target_q_update_step of step to update target

network5 learn_start_step of step to begin a training6 learning_rate_start the maximum value of learning

rate7 learning_rate_end the minimum value of learning

rate8 clip_grad value for a max gradient9 clip_delta value for a max delta10clip_reward value for a max reward11learning_rate_restart whether to use learning rate

restart

1 history_length the length of history2 memory_size size of experience memory3 priority whether to use prioritized experience

memory4 preload_memory whether to preload a saved

memory5 preload_batch_size batch size of preloaded

memory6 preload_prob probability of sampling from pre-

mem7 alpha alpha of prioritized experience memory8 beta_start beta of prioritized experience memory9 beta_end_t beta of prioritized experience memory

1 screen_height of rows for a grid state2 screen_height_to_use actual of rows for a state3 screen_width of columns for a grid state4 screen_width_to_us actual of columns for a state5 screen_expr actual of row for a state

bull c cookiebull p platformbull s score of cellsbull p plain jellyex) (c+2p)-si+h+m[rjsp] ((c+2p)-s)2i+h+m[rjsphi]

6 action_repeat of reapt of an action (frame skip)

bull i plain itembull h healbull m magicbull hi height

bull sp speedbull rj remained

jump

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

過猶不及과유불급

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

고정시킬 변수들을 정해서

한동안 건드리지 않는다

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

for land in range(3 7)

for cookie in cookies

options = []

option =

hidden_dims [[800 400 200] [1000 800 200]]

double_q [True False]

start_land land

cookie cookie

optionsappend(optioncopy())

array_run(options rsquodouble_q_test)

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

2 Debugging

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

ldquo 쿠키가 이상하게 행동하는데

이유라도 알려줬으면 rdquo

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

History

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Q-value

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

DuelingNetwork

V(s)A(sa)

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

도움이 된 순간

>

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

도움이 된 순간

bull 모든 action 에 대해서 Q 값이 0bull State 값을 조금 바꿔서 출력해도 여전히 0bull Tensorflow 의 fully_connected 함수에 activation func-

tion 의 default 값이 nnrelu 로 설정되어 있음

bull Activation function 을 None 으로 지정하니 해결

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

tensorflowcontriblayerspythonlayerslayerspy

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

시도해 봤다면 좋았을 디버깅

bull State 를 실시간으로 수정하면서 Q 변화 보기

ex) 젤리를 쿠키 앞에 그려보면서 변화 확인

bull Exploration 을 어떻게 하고 있는지

bull reward 는 제대로 학습 될 수 있도록 정해져 있었는지

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

3 Pretrained model

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

하나의 모델을 처음부터 학습하기 위해선

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

ldquo반복된 실험의 학습

시간을

단축시켜야 한다 rdquo

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

모든 네트워크의 weight 를

저장하고 새로운 실험을 할 때

비슷한 실험의 weight 를 처음부터

사용

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

더 높은 점수를 얻을 확률이 높다Max 3586503Max 3199324

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

4 Ensemble methods

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Experiment 1

Experiment 2

Experiment 3

Experiment 4

점프

점프119878

가만히

점프

점프

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

ldquo 하나의 실험에서 만들어진여러 weight 들을

동시에 로드 하려면 rdquo

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Ex) 가장 잘했던 weight 는보너스 타임은 잘하는데 두번째로 잘하는 weight 는

젤리를 잘 먹는다

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Session

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Session

Graph

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Session

Graph

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Session

Graph

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Session

Graph

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

같은 이름의 node 는하나의 그래프에

두개 이상 존재할 수 없다

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Session

Graph Graph

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

한 세션에는하나의 그래프만 존재

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

Session

Graph Graph

Session

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

핵심은

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

with tfsession() as sess network = Network() sessrun(networkoutput)

평소처럼 이렇게 선언하지 마시고

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

sessions = []g = tfGraph()with gas_default() network = Network() sess = tfSession(graph=g) sessionsappend(sess)

sessions[0]run(networkoutput)

이렇게 Session 을 살려서 선언하시면 됩니다

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

같은 방식으로보너스 타임도 학습

>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172
>

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

쿠키런 AI 로 밸런싱 자동화 하기밸런스를 360 배 빠르게 해 봅시다

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

학습된 AI 로 모든 쿠키의 평균적인 점수를 계산하거나

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

펫을 바꿔 보면서 성능 차이를 확인하거나

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

ldquo 알파런 잘 뜁니다 rdquo

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172

감사합니다

  • 딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
  • 저는
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • 지도 학습
  • 지도 학습 (2)
  • 지도 학습 (3)
  • Slide 20
  • 비지도 학습
  • 비지도 학습 (2)
  • 비지도 학습 (3)
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • 즉 강화 학습은
  • Reinforcement Learning
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • 쿠키런 AI를 지탱하는 기술들
  • 쿠키런 AI를 지탱하는 8가지 기술
  • 쿠키런 AI를 지탱하는 8가지 기술 (2)
  • 1 Deep Q-Network
  • State
  • Action
  • Action (2)
  • Action (3)
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • 기대되는 미래 가치
  • Slide 70
  • Slide 71
  • 미래에 얻을 점수들의 합
  • Slide 73
  • Slide 74
  • Slide 75
  • 결과는
  • Slide 77
  • 하지만 1
  • 2 Double Q-Learning
  • 핵심은
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 결과는 (2)
  • Slide 93
  • ldquo아 다했다rdquo
  • 하지만 2
  • 하지만 2 (2)
  • 3 Dueling Network
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Q(sa)=V(s)+A(sa)
  • Q(sa)=V(s)+A(sa) (2)
  • Q(sa)=V(s)+A(sa) (3)
  • Slide 110
  • Slide 111
  • Slide 112
  • Slide 113
  • Slide 114
  • 3 Dueling network
  • 3 Dueling network (2)
  • 쿠키런 AI를 지탱하는 8가지 기술 (3)
  • 쿠키런 AI를 지탱하는 8가지 기술 (4)
  • 강화에 계속해서 실패한다면
  • 엔지니어링이라고 쓰고 노가다라고 부른다
  • Hyperparameter tuning
  • 네트워크 바꾸기 Optimizer 바꾸기 reward 식 바꾸기 hellip
  • 총 70+개
  • Slide 124
  • Slide 125
  • 過猶不及 과유불급
  • 성능은 올릴 수는 있지만 그만큼 끊임없는 실험을 해야한다
  • 고정시킬 변수들을 정해서 한동안 건드리지 않는다
  • Slide 129
  • Slide 130
  • 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험 실험실험
  • 2 Debugging
  • ldquo쿠키가 이상하게 행동하는데 이유라도 알려줬으면rdquo
  • Slide 134
  • Slide 135
  • Slide 136
  • Slide 137
  • Slide 138
  • 도움이 된 순간
  • 도움이 된 순간 (2)
  • Slide 141
  • 시도해 봤다면 좋았을 디버깅
  • 3 Pretrained model
  • 하나의 모델을 처음부터 학습하기 위해선
  • ldquo반복된 실험의 학습 시간을 단축시켜야 한다rdquo
  • 모든 네트워크의 weight를 저장하고 새로운 실험을 할 때 비슷한 실험의 weight를 처음부터 사용
  • 더 높은 점수를 얻을 확률이 높다
  • 4 Ensemble methods
  • Slide 149
  • ldquo하나의 실험에서 만들어진 여러 weight들을 동시에 로드 하려면rdquo
  • Ex) 가장 잘했던 weight는 보너스 타임은 잘하는데 두번째로 잘하는 weight는 젤리를 잘 먹는다
  • Slide 152
  • Slide 153
  • Slide 154
  • Slide 155
  • Slide 156
  • Slide 157
  • 같은 이름의 node는 하나의 그래프에 두개 이상 존재할 수 없다
  • Slide 159
  • 한 세션에는 하나의 그래프만 존재
  • Slide 161
  • 핵심은 (2)
  • with tfsession() as sess network = Network() sessrun(net
  • sessions = [] g = tfGraph() with gas_default() network =
  • 같은 방식으로 보너스 타임도 학습
  • Slide 166
  • 쿠키런 AI로 밸런싱 자동화 하기
  • Slide 168
  • Slide 169
  • ldquo알파런 잘 뜁니다rdquo
  • Slide 172