SlideShare a Scribd company logo
1 of 24
머신러닝 어따쓰까?
게임에서 머신러닝 활용사례와 Tensorflow
작성자 : 허현철 ( thx@daum.net )
머신
▪ 머신러닝
= 기계가 학습한다.
러닝??
인공지능, 머신러닝, 딥러닝 ??
▪ 딥러닝 ⊂ 머신러닝 ⊂ 인공지능
근데.. 똑똑한 AI가 필요해?
어떠십니까?
그냥 딱 봐도? 시르다.
어떠십니까?
음..
이런 느낌?
X
근데 왜 발표함?
▪ 엔씨소프트, 핵심 IP 활용·인공지능 기술로 지속성장 - (헤럴드경제)
▪ 넷마블·엔씨·넥슨, AI기술 통해 재미·수명·편의성 높여 (매일경제)
▪ 블레이드&소울 '무한의 탑' 신규 콘텐츠에 인공지능 기능을 적용 (게임동아)
▪ 게임업계에도 인공지능 바람 – 엔씨, 넥슨, 넷마블 AI 적용 게임 출시 예고 (헤럴
드경제)
▪ 게임도 AI·빅데이터… '사용자 맞춤형' 나온다 – (Chosunbiz)
왜 저러나 싶어 찾아봤다 [활용사례]
▪ 인게임
- 밸런싱
- 특정 유저 탐지 -> 선택적/즉각적 피드백
▪ 마케팅
- 추천, 이벤트, 프로모션
- 또 특정 유저 탐지 -> 또 선택적/즉각적 피드백
- 과금전환
▪ 보안
어찌보면 당연함
▪ 머신러닝의 궁극적 목표
인간의 패턴인식능력을 데이터기반 흉내
즉, 추론가능 데이터있다면 많은것을 효율적 처리가능
▪ 게임 = 데이터 세계
그럼 간단하게 한번해볼까? 뭘 하지??
출처 : Korea Games Conference
상관관계가 있어보이죠?
그럼 간단하게 한번해볼까?
▪ 돈좀 벌어보자! 일매출 = DAU * PU% * ARPPU
▪ DAU = SUM ( NRU * Retention )
▪ NRU는 광고 = 돈
▪ Retention = 무조건 재미
뭘 하지??
▪ 그래! “밸런싱” 너로 결정했어!! (뜬금포)
왜?? 거의 고정
변수 : 승부다!!
최종변수 : 최종승부다!!
재미 ≠ 밸런싱 But, 재미 ⊂ 밸런싱
∴ 밸런싱이
진짜진짜최종승부다!!
밸런싱실패에 따른 재미하락 Cycle
밸런싱실패
OP챔 출현
벤시스템
OP챔 차단/선택만
중요
챔프/전략
다양성 회손
▪ 성공사례 - [도타2 디 인터내셔널6]
110명 영웅 중 105명 활용 (95.45%)
▪ 실패사례 – [롤드컵 시즌6]
131명 챔피언 중 57명 활용(43.51%)
- 롤드컵 시즌4 : 120명 중 61명 등장 (50.83%)
- 롤드컵 시즌5 : 126명 중 74명 등장 (58.73%)
ML 따위 필요없다. 완벽한 수기 저울질
(feat. 내 손은 금손 / chorus. MS The 엑셀)
Tensorflow 소개
▪ 구글횽이 만든 대표 머신러닝 라이브러리
▪ Python / C++ 지원
▪ CPU / GPU 연산지원
▪ 통계에 사용되는 각종 수학함수 제공
Tensorflow 개발환경
▪ Python 3.5.3 / Anaconda 4.2.0
▪ IDE : Pycharm
▪ 라이브러리 : tensorflow, plot
아이디어 및 목표
▪ 아이디어
1. 입력  캐릭터 스탯, 밸런싱 성공/실패(평균승률기반)
2. 지도 학습으로 각 캐릭터의 스탯별 가중치 학습
▪ 목표
1. 학습된 스탯 별 가중치 기반 “패치할 스탯의 밸런싱 성공/실패 예측“
학습데이터 준비
▪ 밸런싱 성공/실패 조건
각 캐릭터 스탯 * 가중치 = 승점
모든캐릭터의 승점 표준편차 < 2.5  성공
아니면  실패
▪ 캐릭터 스탯 종류
기본, 스킬, 아이템 (캐릭터 별 각각 가중치 존재 – unknown)
▪ 라이브러리 : tensorflow, plot
Tensorflow 소스
# Lab 4 Multi-variable linear regression
import tensorflow as tf
import numpy as np
tf.set_random_seed(378) # for reproducibility
xy = np.loadtxt('databalancing.csv', delimiter=',', dtype=np.float32)
#xy = np.loadtxt('databalancing_YTV.csv', delimiter=',', dtype=np.float32)
x_data = xy[:, 0:-1]
#x_data = (xy[:, 0:-1] - xy[:, 0:-1].mean()) / xy[:, 0:-1].std()
y_data = xy[:, [-1]]
# Make sure the shape and data are OK
#print(x_data.shape, x_data, len(x_data))
#print(y_data.shape, y_data)
# placeholders for a tensor that will be always fed.
X = tf.placeholder(tf.float32, shape=[None, 9])
Y = tf.placeholder(tf.float32, shape=[None, 1])
#정규분포
W = tf.Variable(tf.random_normal([9, 1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
#균등분포
#W = tf.Variable(tf.random_uniform([9, 1], minval=0.3, maxval=0.5), name='weight')
#b = tf.Variable(tf.random_normal([1]), name='bias')
# Hypothesis using sigmoid: tf.div(1., 1. + tf.exp(tf.matmul(X, W)))
hypothesis = tf.sigmoid(tf.matmul(X, W) + b)
# cost/loss function
cost = -tf.reduce_mean(Y * tf.log(tf.clip_by_value(hypothesis, 1e-8, 1.)) +
(1 - Y) * tf.log(tf.clip_by_value(1 - hypothesis, 1e-8, 1.)))
#cost = -tf.reduce_mean(Y * tf.log(hypothesis) +
# (1 - Y) * tf.log(1 - hypothesis))
# Accuracy computation
# True if hypothesis>0.5 else False
학습 및 검증결과
예측 확률 : 90.2 %
한계 및 개선방법
▪ 학습 데이터의 현실반영 정도 불확실  실제 게임로그 활용
▪ 스탯 입력값 범위가 넓을 경우 예측확률 떨어짐 : 90%  75%
 CNN, RNN, Reinforce Learning 등 학습기법 변경 및 learning rate, 예측 기
준 최적화
Q & A
감사합니다

More Related Content

What's hot

게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱Seungmo Koo
 
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서영준 박
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점Ryan Park
 
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지Kwangyoung Lee
 
게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)ChangHyun Won
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다Jinho Jung
 
[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용Tapjoy X 5Rocks
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기Yongha Kim
 
게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티Seungmo Koo
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기ByungChun2
 
작은 레벨 디자인 가이드 01
작은 레벨 디자인 가이드 01작은 레벨 디자인 가이드 01
작은 레벨 디자인 가이드 01용태 이
 
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계Imseong Kang
 
게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해Seungmo Koo
 
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?강 민우
 
KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기용태 이
 
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법강 민우
 
도탑전기(刀塔传奇)_20140924
도탑전기(刀塔传奇)_20140924도탑전기(刀塔传奇)_20140924
도탑전기(刀塔传奇)_20140924Daewoong Kim
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019devCAT Studio, NEXON
 
기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까Han Je Sung
 
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요Eunseok Yi
 

What's hot (20)

게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱
 
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점
 
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
 
게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다
 
[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기
 
게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기
 
작은 레벨 디자인 가이드 01
작은 레벨 디자인 가이드 01작은 레벨 디자인 가이드 01
작은 레벨 디자인 가이드 01
 
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
 
게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해
 
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
 
KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기
 
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
 
도탑전기(刀塔传奇)_20140924
도탑전기(刀塔传奇)_20140924도탑전기(刀塔传奇)_20140924
도탑전기(刀塔传奇)_20140924
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까
 
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
 

Similar to 게임밸런싱과 머신러닝, 활용사례 & Tensorflow

NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 정주 김
 
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기Chris Ohk
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자TonyCms
 
[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기Chris Ohk
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기Wonha Ryu
 
[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기Chris Ohk
 
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템Hoyeon Kim
 
20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료JungGeun Lee
 
Spark & Zeppelin을 활용한 머신러닝 실전 적용기
Spark & Zeppelin을 활용한 머신러닝 실전 적용기Spark & Zeppelin을 활용한 머신러닝 실전 적용기
Spark & Zeppelin을 활용한 머신러닝 실전 적용기Taejun Kim
 
알파고 풀어보기 / Alpha Technical Review
알파고 풀어보기 / Alpha Technical Review알파고 풀어보기 / Alpha Technical Review
알파고 풀어보기 / Alpha Technical Review상은 박
 
Machine Learning with Apache Spark and Zeppelin
Machine Learning with Apache Spark and ZeppelinMachine Learning with Apache Spark and Zeppelin
Machine Learning with Apache Spark and ZeppelinDataya Nolja
 
All That Puzzle Games
All That Puzzle GamesAll That Puzzle Games
All That Puzzle GamesShin Dongwon
 
POSCAT AI seminar 01 완전탐색과 스코어링
POSCAT AI seminar 01 완전탐색과 스코어링POSCAT AI seminar 01 완전탐색과 스코어링
POSCAT AI seminar 01 완전탐색과 스코어링승진 김
 
게임 개체 팩토리
게임 개체 팩토리게임 개체 팩토리
게임 개체 팩토리종규 우
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출정주 김
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개Seungmo Koo
 
게임 인공지능 설계
게임 인공지능 설계게임 인공지능 설계
게임 인공지능 설계ByungChun2
 
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법ChangHyun Won
 

Similar to 게임밸런싱과 머신러닝, 활용사례 & Tensorflow (20)

NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
 
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
 
[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기
 
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
 
20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료
 
Spark & Zeppelin을 활용한 머신러닝 실전 적용기
Spark & Zeppelin을 활용한 머신러닝 실전 적용기Spark & Zeppelin을 활용한 머신러닝 실전 적용기
Spark & Zeppelin을 활용한 머신러닝 실전 적용기
 
알파고 풀어보기 / Alpha Technical Review
알파고 풀어보기 / Alpha Technical Review알파고 풀어보기 / Alpha Technical Review
알파고 풀어보기 / Alpha Technical Review
 
[PandoraCube] 게임 프로그래머로 성장하기
[PandoraCube] 게임 프로그래머로 성장하기[PandoraCube] 게임 프로그래머로 성장하기
[PandoraCube] 게임 프로그래머로 성장하기
 
Machine Learning with Apache Spark and Zeppelin
Machine Learning with Apache Spark and ZeppelinMachine Learning with Apache Spark and Zeppelin
Machine Learning with Apache Spark and Zeppelin
 
All That Puzzle Games
All That Puzzle GamesAll That Puzzle Games
All That Puzzle Games
 
POSCAT AI seminar 01 완전탐색과 스코어링
POSCAT AI seminar 01 완전탐색과 스코어링POSCAT AI seminar 01 완전탐색과 스코어링
POSCAT AI seminar 01 완전탐색과 스코어링
 
게임 개체 팩토리
게임 개체 팩토리게임 개체 팩토리
게임 개체 팩토리
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개
 
파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
 
게임 인공지능 설계
게임 인공지능 설계게임 인공지능 설계
게임 인공지능 설계
 
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
 

게임밸런싱과 머신러닝, 활용사례 & Tensorflow

  • 1. 머신러닝 어따쓰까? 게임에서 머신러닝 활용사례와 Tensorflow 작성자 : 허현철 ( thx@daum.net )
  • 2. 머신 ▪ 머신러닝 = 기계가 학습한다. 러닝??
  • 3. 인공지능, 머신러닝, 딥러닝 ?? ▪ 딥러닝 ⊂ 머신러닝 ⊂ 인공지능
  • 7. 근데 왜 발표함? ▪ 엔씨소프트, 핵심 IP 활용·인공지능 기술로 지속성장 - (헤럴드경제) ▪ 넷마블·엔씨·넥슨, AI기술 통해 재미·수명·편의성 높여 (매일경제) ▪ 블레이드&소울 '무한의 탑' 신규 콘텐츠에 인공지능 기능을 적용 (게임동아) ▪ 게임업계에도 인공지능 바람 – 엔씨, 넥슨, 넷마블 AI 적용 게임 출시 예고 (헤럴 드경제) ▪ 게임도 AI·빅데이터… '사용자 맞춤형' 나온다 – (Chosunbiz)
  • 8. 왜 저러나 싶어 찾아봤다 [활용사례] ▪ 인게임 - 밸런싱 - 특정 유저 탐지 -> 선택적/즉각적 피드백 ▪ 마케팅 - 추천, 이벤트, 프로모션 - 또 특정 유저 탐지 -> 또 선택적/즉각적 피드백 - 과금전환 ▪ 보안
  • 9. 어찌보면 당연함 ▪ 머신러닝의 궁극적 목표 인간의 패턴인식능력을 데이터기반 흉내 즉, 추론가능 데이터있다면 많은것을 효율적 처리가능 ▪ 게임 = 데이터 세계
  • 10. 그럼 간단하게 한번해볼까? 뭘 하지?? 출처 : Korea Games Conference 상관관계가 있어보이죠?
  • 11. 그럼 간단하게 한번해볼까? ▪ 돈좀 벌어보자! 일매출 = DAU * PU% * ARPPU ▪ DAU = SUM ( NRU * Retention ) ▪ NRU는 광고 = 돈 ▪ Retention = 무조건 재미 뭘 하지?? ▪ 그래! “밸런싱” 너로 결정했어!! (뜬금포) 왜?? 거의 고정 변수 : 승부다!! 최종변수 : 최종승부다!!
  • 12. 재미 ≠ 밸런싱 But, 재미 ⊂ 밸런싱 ∴ 밸런싱이 진짜진짜최종승부다!!
  • 13. 밸런싱실패에 따른 재미하락 Cycle 밸런싱실패 OP챔 출현 벤시스템 OP챔 차단/선택만 중요 챔프/전략 다양성 회손 ▪ 성공사례 - [도타2 디 인터내셔널6] 110명 영웅 중 105명 활용 (95.45%) ▪ 실패사례 – [롤드컵 시즌6] 131명 챔피언 중 57명 활용(43.51%) - 롤드컵 시즌4 : 120명 중 61명 등장 (50.83%) - 롤드컵 시즌5 : 126명 중 74명 등장 (58.73%)
  • 14. ML 따위 필요없다. 완벽한 수기 저울질 (feat. 내 손은 금손 / chorus. MS The 엑셀)
  • 15.
  • 16. Tensorflow 소개 ▪ 구글횽이 만든 대표 머신러닝 라이브러리 ▪ Python / C++ 지원 ▪ CPU / GPU 연산지원 ▪ 통계에 사용되는 각종 수학함수 제공
  • 17. Tensorflow 개발환경 ▪ Python 3.5.3 / Anaconda 4.2.0 ▪ IDE : Pycharm ▪ 라이브러리 : tensorflow, plot
  • 18. 아이디어 및 목표 ▪ 아이디어 1. 입력  캐릭터 스탯, 밸런싱 성공/실패(평균승률기반) 2. 지도 학습으로 각 캐릭터의 스탯별 가중치 학습 ▪ 목표 1. 학습된 스탯 별 가중치 기반 “패치할 스탯의 밸런싱 성공/실패 예측“
  • 19. 학습데이터 준비 ▪ 밸런싱 성공/실패 조건 각 캐릭터 스탯 * 가중치 = 승점 모든캐릭터의 승점 표준편차 < 2.5  성공 아니면  실패 ▪ 캐릭터 스탯 종류 기본, 스킬, 아이템 (캐릭터 별 각각 가중치 존재 – unknown) ▪ 라이브러리 : tensorflow, plot
  • 20. Tensorflow 소스 # Lab 4 Multi-variable linear regression import tensorflow as tf import numpy as np tf.set_random_seed(378) # for reproducibility xy = np.loadtxt('databalancing.csv', delimiter=',', dtype=np.float32) #xy = np.loadtxt('databalancing_YTV.csv', delimiter=',', dtype=np.float32) x_data = xy[:, 0:-1] #x_data = (xy[:, 0:-1] - xy[:, 0:-1].mean()) / xy[:, 0:-1].std() y_data = xy[:, [-1]] # Make sure the shape and data are OK #print(x_data.shape, x_data, len(x_data)) #print(y_data.shape, y_data) # placeholders for a tensor that will be always fed. X = tf.placeholder(tf.float32, shape=[None, 9]) Y = tf.placeholder(tf.float32, shape=[None, 1]) #정규분포 W = tf.Variable(tf.random_normal([9, 1]), name='weight') b = tf.Variable(tf.random_normal([1]), name='bias') #균등분포 #W = tf.Variable(tf.random_uniform([9, 1], minval=0.3, maxval=0.5), name='weight') #b = tf.Variable(tf.random_normal([1]), name='bias') # Hypothesis using sigmoid: tf.div(1., 1. + tf.exp(tf.matmul(X, W))) hypothesis = tf.sigmoid(tf.matmul(X, W) + b) # cost/loss function cost = -tf.reduce_mean(Y * tf.log(tf.clip_by_value(hypothesis, 1e-8, 1.)) + (1 - Y) * tf.log(tf.clip_by_value(1 - hypothesis, 1e-8, 1.))) #cost = -tf.reduce_mean(Y * tf.log(hypothesis) + # (1 - Y) * tf.log(1 - hypothesis)) # Accuracy computation # True if hypothesis>0.5 else False
  • 22. 한계 및 개선방법 ▪ 학습 데이터의 현실반영 정도 불확실  실제 게임로그 활용 ▪ 스탯 입력값 범위가 넓을 경우 예측확률 떨어짐 : 90%  75%  CNN, RNN, Reinforce Learning 등 학습기법 변경 및 learning rate, 예측 기 준 최적화
  • 23. Q & A