141
구름이 하늘의 일이라면: Python과 TensorFlow를 이용한 기상예측 윤상웅 (주식회사 해줌)

PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Embed Size (px)

Citation preview

Page 1: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

구름이하늘의일이라면:

Python과 TensorFlow를이용한기상예측

윤상웅 (주식회사해줌)

Page 2: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

구름이하늘의일이라면

Page 3: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

그것을예측하는것이우리의일입니다

!

Page 4: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

인공지능은구름의움직임을예측할수있는가?

?

Page 5: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝시스템을어떻게만들것인가?

Python TensorFlow+

Page 6: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

윤상웅

그전엔…

바이오지능연구실 (장병탁교수님)• Bayesian optimization• Decision making under uncertainty• Active learning• Artificial neural networks, especially RNN/LSTM

주식회사해줌

태양광발전 x 머신러닝

IT사업실머신러닝팀

Page 7: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝수업에서하지않는이야기

Toy Dataset에서 성능지표 찍어보는 것 너머

실제 문제에 머신러닝이 적용되는 전체 프로세스

Page 8: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

발표구성

기상예측머신러닝

문제만들기

01

기상예측머신러닝

모형만들기

02

기상예측머신러닝

시스템만들기

03

Page 9: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

대상청중

머신러닝을기상예측에응용하는것에관심이있으신분

머신러닝이실제문제에적용되는과정에대해관심이있으신분

머신러닝과 TensorFlow에기초적인개념이있으신분

Page 10: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

I. 기상예측머신러닝문제만들기

Page 11: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

자꾸 틀린 질문만 하니까 맞는 대답이 나올리가 없잖아.

‘왜 이우진은 오대수를 가뒀을까?’가 아니라‘왜 풀어주었을까?’란 말이야!

-박찬욱, <올드보이>(2003)

Page 12: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

무슨문제를풀것인가

머신러닝으로풀릴법한문제

머신러닝으로풀었을때이점이있는문제

데이터를구할수있는문제

(금전적으로?) 이익이되는문제

Page 13: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

문제를어떻게정의할것인가

입력은?

출력은?

문제유형은? Supervised? Unsupervised?

데이터의표현(representation)은?

문제를 어떻게 형식화(Formulation)

Page 14: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

어렵고암묵적인영역

머신러닝의수학적인가정에대한이해

데이터도메인에대한이해

비즈니스에대한이해

Page 15: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

우리의문제

태양광발전소의

미래발전량예측

Page 16: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
Page 17: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

태양 구름 발전소

태양광발전소발전량

Page 18: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

태양의움직임

자연계에서가장예측가능한현상

Pysolar, Sunpy, PyEphempysun

Page 19: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

태양광발전소모델

태양광발전소데이터를이용

별도로학습완료

Page 20: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
Page 21: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

구름을읽을수있다면

발전량을예측할수있다

Page 22: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

발전량을예측할수있다면

전력생산/소비를최적화할수있다

예측된 신재생에너지 발전량만큼

화력, 원자력 발전소를 덜 가동할 수 있다

Page 23: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

누가구름을좇을수있을까?

Page 24: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

천리안기상위성

2017년 8월 9일 12시 15분

적외1 적외1 수증기 가시광선 단파적외

Page 25: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
Page 26: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

우리의문제 1

태양광발전소의

미래발전량예측

Page 27: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

우리의문제 2

미래기상상황예측

Page 28: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

우리의문제 3

구름의움직임예측

Page 29: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

우리의문제 4

천리안기상위성영상의

다음프레임예측

Page 30: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

문제의구조

𝑋𝑡𝑋𝑡−1 𝑋𝑡+1

⋯ ⋯

Page 31: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

문제의구조

시계열예측 Time-Series Forecasting

동영상프레임생성 Video Frame Synthesis

Page 32: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

과연이게의미있는문제냐?

기상청이있는데뭐하러니가

Page 33: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

오늘날의기상예측

기상청슈퍼컴퓨터 4호기 수치모델에의한예보Numerical Weather Forecasting

Page 34: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

기상청을대체하려는것이아닙니다

사랑해요기상청

Page 35: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

이미기상예보에기반한

태양광발전량예측모형을가지고있음

Page 36: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

예측을개선하기위한것

앙상블 Ensemble

서로다른가정을하고있는예측모형의예측을합치면일반적으로성능이향상됨

Page 37: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝접근이가지는장점

도메인지식이적게필요

계산능력이적게필요

물리모형기반시뮬레이션대비

기상학박사학위없어요

슈퍼컴퓨터없어요

일해라핫산!

일반적으로다른대안보다적은자원으로실용적인결과를낼수있음

Page 38: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝접근이가지는단점

설명이되지않는다

물리모형기반시뮬레이션대비

왜이런예측이나왔는지 (보통은) 알수없다

Page 39: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

설명력을희생하여예측력을얻는방법론

정확한예측이다른무엇보다중요할때사용

머신러닝이란,

어머그런데그게딱우리경우네

Page 40: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

과연이게풀리는문제냐?

되겠죠뭐

핸드폰이말도하는시대인데

Page 41: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

정보가충분한가?

입력변수가 예측변수를 대해 충분한 정보를 가지고 있는가?

예측이 가능한가?

Page 42: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

대기의움직임은법칙을따른다Navier-Stockes equation

Page 43: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

데이터는법칙의파편을담고있다법칙이 있다면 학습할 여지가 있다

법칙이 희박한 현상을 예측하려는 것에 비하면…

Page 44: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

관측은부정확

모델은불완전

현실은

Page 45: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝은본래

불완전한데이터를다루기위해만들어졌다확률! 확률을 보자!

Page 46: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

승산이있다기온, 습도, 기압 등 추가적인 요소 반영하면 더욱 잘 될 것

Not today

Page 47: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

남들이푼적있는문제인가?

거인이있다면어깨위에올라가야지

Page 48: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

선행연구

Neural Information Processing Systems (NIPS), 2015

Page 49: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

선행연구

Neural Information Processing Systems (NIPS), 2016

Page 50: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

선행연구

SIGKDD Conference on Knowledge Discovery and Data Mining (KDD), 2015

Page 51: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

선행연구

Neural Information Processing Systems (NIPS), 2016

Page 52: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

선행연구

International Conference on Machine Learning (ICML), 2017

Page 53: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

데이터를구할수있는가?

여기서부터진흙탕시작

Page 54: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

천리안기상위성

관련기관

• 국가기상위성센터

• 기상청

• 기상산업기술원

• 기상자료개발포털

Page 55: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

• 1024x1024 (한반도), 5 channel

• 약 15분에한번씩촬영

• 결측(missing)이빈번함

• 2011년부터존재

• Pixel값물리량(알베도, 온도등) 변환필요

데이터스펙

Page 56: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

천리안기상위성 - 전처리파일읽기 (gzipped binary)

• gzip / bitstring

이미지축소• scipy.misc.imresize• bicubic• 1024 x 1024 256 x 256

데이터저장• HDF5 format : h5py• (T, 256, 256, 5)

분산처리• joblib

Python으로다할수있어요!

Page 57: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

I. 머신러닝문제만들기

천리안기상위성의다음프레임예측

풀수있을것같고, 풀었을때이득이있다

천리안기상위성의과거프레임들을알고있을때

Page 58: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

I. 머신러닝문제만들기

예측문제를잘정의하는것이중요하다

꼭머신러닝을써야만하는문제인가?

풀수있으면서, 의미있는문제 남이안푸는문제

Page 59: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

문제를만들었고, 데이터를준비했다

드루와다드루와

Page 60: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

II. 머신러닝모형만들기

Page 61: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

새로운데이터셋에머신러닝을적용하는것

Page 62: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

레알갓겜임

이런느낌

Page 63: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

기본원칙

1. Baseline 모델을먼저만든다

2. 눈으로직접본다

3. 단순한것부터시작한다

Page 64: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Baseline

상상할 수 있는 모델 중 가장 간단하고 못 하는 모델

절대 버그를 낼 수 없 버그를 금방 고칠 수 있는 모델

Page 65: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Scikit-Learn굳이 바퀴를 다시 발명할 필요없다

극도로 깔끔한 API

새 모델 구현할 때도 Scikit-Learn의 BaseEstimator를 상속받아서 만드는 것을 추천

Baseline 만들땐..

그밖에도 여러 도우미 함수들을 많이 제공

GridSearchCV, Preprocessing, train_test_split

Page 66: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

그치만우리문제는일반적이지않은유형

Scikit-Learn으로 해결 안 됨

그래도 소개해 드릴게요

모든 pixel을 regression

Page 67: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

추천 Baseline

선형모형 (Linear model)sklearn.linear_modelLinearRegression

LosgisticRegression

K-Nearest Neighborsklearn.neighbors

KNeighborsClassifierKNeighborsRegressor

특히 1-NN

Page 68: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

추천 Baseline

모델을만들었는데이친구들보다못하면뭔가문제가있다

Hyperparameter가거의없음

Page 69: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

뭐가좋아요?

Test Driven Development(Baseline을시험하면서성능평가코드를작성하게됨)

문제에대한대략적인감

진보의측정

Page 70: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

우리문제의 Baseline은?

시계열예측문제

⋯𝑋𝑡−2, 𝑋𝑡−1, 𝑋𝑡 가주어졌을때

𝑋𝑡+1을예측

Page 71: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Persistence Model

“내일의 주가? 오늘이랑 똑같을 거야!”

𝑋𝑡+1가 𝑋𝑡 와같을것이라고예측하는것

예측시점과의거리(lag)를늘려가면서실험해볼수있음

10시간 후 예측이 1시간 후 예측보다 어렵겠죠?

Page 72: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

성능지표

Mean Squared Error

E𝐷, 𝑋𝑡+1 − 𝑋𝑡+12

((target – pred)**2).mean()

pixel

Page 73: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Persistence Model Result

2016년을 Test set으로사용

시간간격(lag)을늘려가면서실험

시간간격이길수록프레임간차이가크다

matplotlib로 그렸습니다

Page 74: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

눈으로직접본다

당신의 코드를 믿지 마라

확실하지 않은 것에는 승부를 걸지 마라

몹쓸 타짜드립 OUT

Page 75: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

이상하다?

희한하네…

왜내려갈까?

matplotlib로 그렸습니다

Page 76: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

상식적예상과벗어나는곳에의미가있다

상식: 시간 간격이 멀 수록 프레임 간 차이가 크다

관찰: 프레임 간 차이가 크다가 다시 작아진다

이상한 현상은 데이터의 특징에 대해 말해준다

정보

Page 77: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

채널별로나눠보자

가시광선채널적외선채널

Page 78: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Show me the data!9 10 11 12 13 14

15 16 17 18 19 20

적외선채널

mpl_toolkits.axes_grid1.AxesGrid 를 이용하여 그렸습니다

Page 79: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Show me the data!9 10 11 12 13 14

15 16 17 18 19 20

가시광선채널

Page 80: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

데이터를직접보지않으면모르는것들이있다

귀찮고고통스럽지만하나하나열어보는것이필요

스스로에게하는이야기

Page 81: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

데이터의규칙성파악모델에반영

새로운 Feature:

태양이어디쯤있는지모델에게알려주자

Insight

Page 82: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

단순한것부터시도한다

Page 83: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Generative Adversarial Networks Variational Autoencoders

Video Pixel Networks Convolutional LSTM

세상엔멋진 ML 알고리즘이너무많다멋진 알고리즘은 많은 버그를 동반한다

Page 84: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

멋진 ML 알고리즘은

많은 Hyperparameter를가지고있다

새로운 데이터셋에 대해 좋은 hyperparameter 설정을 찾으려면

시간과 노력이 많이 든다

예) Learning rate, hidden neuron 수, activation function, regularization, …

Page 85: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

알고리즘이동작하지않았을때의사결정이어려움

Hyperparameter가 잘못된 건가

이 알고리즘이 이 문제에 맞지 않는 건가

알 수가 없다

Page 86: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

두번째 Baseline을만든다고생각하자

Page 87: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

가장간단한 ConvNet

𝑋𝑡CONV (3x3)

𝑋𝑡+1CONV (1x1)

Difference Image를학습

Page 88: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

왜 Recurrent Neural Net이아닌가?

기상위성 영상 Frame이 결측되는 경우가 꽤 많음 (1%)

Sliding window input

Page 89: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

구현을하자!드디어

Page 90: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

애증의 TensorFlow어딘지 모르게 불편해… 꼭 Stack Overflow를 찾게 된다

(부들부들)

Page 91: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

현실적으로가장좋은대안

빠른 업데이트

두터운 사용자층

TensorBoard와 TensorFlow Serving

이미 구현된 모델들

High-level API (Keras, slim)

Page 92: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

TensorFlow 코딩스타일

http://bit.ly/tftalk-best-practicehttps://wookayin.github.io/TensorFlowKR-2017-talk-bestpractice/ko/

완전 강추:

최종욱과 신범준, <Toward Best Practices of TensorFlow Code Patterns>,

TensorFlowKR, 2017

TF는 어떤 일을 할 수 있는 방법이 여러 가지

복잡성과 혼란을 가져온다

Page 93: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

특이사항 - TensorFlow

Queue : 사용하지않음• placeholder와 feed_dict사용• 언제나 예상치 못한 입력을 사용하게 됨• GPU Utilization 나쁘지 않았음 (~90%)

keras, tf.slim: 사용하지않음• 모델 구조를 어떻게 지지고 볶을지 모름• 하지만 좀 더 일반적인 task(e.g. classification)였다면 추천!

Page 94: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

MSE Comparison

Baseline Conv-1

0.210 0.166

Page 95: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

가능성이보인다!

#GPU가_드디어_밥값을#감격#눈물#퇴근

Page 96: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

이제부터진짜시작

©박수진

Page 97: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

결과는맨마지막에!

Page 98: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

II. 머신러닝모델만들기

ConvNet 기반 Frame 생성

입력: 과거 Frame K 개 + 태양위치정보

출력: 그다음 Frame

Page 99: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

II. 머신러닝모델만들기

Baseline 모델을먼저만든다

눈으로직접본다

간단한것부터시작한다

Page 100: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

II. 머신러닝모델만들기

Baseline 모델을먼저만든다

눈으로직접본다

간단한것부터시작한다

Page 101: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

III. 머신러닝시스템만들기

Page 102: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝의산출물은시스템

Page 103: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝 != 데이터분석

자동화된예측시스템

그래프, 보고서,의사결정

Page 104: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝의도입은백엔드의복잡도를상승시킴

Page 105: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝연구개발프로세스

아이디어

데이터셋

모델학습 성능평가

모델출시

실제피드백1

2

3 4

5

6

Page 106: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

좋은성능의머신러닝시스템을만드는방법

Iteration을많이돌면된다

Iteration이덜고통스러우면된다

Page 107: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝시스템설계의주안점

1. 시스템의복잡도를낮게

2. 새알고리즘의출시를최대한고통없이

• 학습과예측의분리

• 머신러닝라이브러리제작

• 해줌머신러닝클래스구조

Page 108: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

학습과예측의분리

연구 배포

학습 예측

이과정에서별짓을다하게된다!Data augmentation, sampling,

preprocessing,…여기와는떨어져있는것이안전

Page 109: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

학습과예측의분리 – Repository 수준에서

머신러닝예측시스템리파지토리

개인별연구용리파지토리• 데이터분석• 모형학습

• 실시간데이터처리• 예측결과 API serving

GitHub 사용합니다

Page 110: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

시스템코드와연구용코드의싱크

Page 111: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

라이브러리(패키지)를만들자

• 구현된예측모형들

• 데이터(feature) 불러오는모듈

• 각종유틸리티함수들

• ML시스템과연구용리파지토리에설치

Page 112: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Sunspot (흑점)패키지이름

Page 113: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
Page 114: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

라이브러리로만들었더니

• 문서화 - Sphinx / Jupyter Notebook

• 테스트 – Unittest / PyTest

• 코드품질관리 – PEP8

연구용코드 / 시스템코드와핵심알고리즘코드가분리

코드품질을더잘관리할수있게됨

Page 115: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

머신러닝을위한클래스구조고안

새로운 알고리즘의 출시를 최대한 고통없이

Page 116: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Program

Predictor

Feature

해줌머신러닝클래스구조

사용자와상호작용

각머신러닝모델

데이터 API

Page 117: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

.predict()하청

Program

Predictor

Feature

해줌머신러닝클래스구조

.predict()

하청

하청

하청

.fetch()

드..드리겠습니다!

Page 118: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Program

Predictor

Feature

해줌머신러닝클래스구조

최종예측값반환1) Missing 처리

2) Ensemble

예측값

데이터

데이터

예측값

Page 119: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

효과

여러다른모델이통일된 API를가질수있음

모델앙상블쉬움

협업/분업가능

예측모형의버전관리 – 진보의측정

Page 120: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

로직과패턴에대한고민과공유가더필요힘을 합쳐요!

머신러닝은보통백엔드중에서도가장숨겨져있음

Page 121: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

III. 머신러닝시스템만들기

태양광발전소

마이크로서비스 A

마이크로서비스 B

마이크로서비스 C

DjangoPostgreSQL

PostGISScikit-LearnTensorFlow

JenkinsSunspot

Django RestFramework

연구용환경

Jupyter NotebookPandas

Scikit-LearnR

Sunspot

머신러닝서버

Page 122: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

III. 머신러닝시스템만들기

학습과예측의분리

자체라이브러리를통한코드싱크

머신러닝모델을위한클래스구조고안

Page 123: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

그래서모델은어찌되었나?

Page 124: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

MSE Comparison

Baseline Model-1

0.210 0.166

Model-23

0.109

▼48.36%

Page 125: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

최종 ConvNet

𝑋𝑡 , 𝑋𝑡−1, 𝑋𝑡−2𝑋𝑡+1

일종의 Attention Mechanism

이전프레임에서어디를업데이트할지학습

Difference Image를생성

Page 126: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

과정

Page 127: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Persistence Model의예측

Target Persistence Prediction

Error(Pred - Targ)

𝑋𝑡+1 𝑋𝑡

2016년 5월 1일오후 1시적외1 채널예측

Page 128: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Persistence Model의예측

Target Persistence Prediction

Error(Pred - Targ)

𝑋𝑡+1 𝑋𝑡

2016년 5월 1일오후 1시적외1 채널예측 구름이이동한다!

Page 129: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Persistence Model의예측

Target Persistence Prediction

Error(Pred - Targ)

𝑋𝑡+1 𝑋𝑡

2016년 5월 1일오후 1시적외1 채널예측

Page 130: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Conv-23의예측

Target Conv-23 Error(Pred - Targ)

Page 131: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

예측비교

PersistencePrediction

Conv-23 Diff(Model - Persist)

Page 132: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Persistence Model의예측

Target Persistence Prediction

Error(Pred - Targ)

𝑋𝑡+1 𝑋𝑡

2016년 4월 16일오후 6시가시광선채널예측 해가지면서전체적인영상밝기가감소

Page 133: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

Conv-23의예측

Target ModelPrediction

Error(Pred - Targ)

Page 134: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

예측비교

PersistencePrediction

ModelPrediction

Diff(Model - Persist)

Page 135: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

예측의개선에는끝이없다

그만퇴근합시다?

Page 136: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

To Do List

다른기상요소반영

Forecast Horizon 늘리기

새로운모델링아이디어들

예측된 Frame에서발전량예측

Page 137: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

구름의움직임에는법칙이있고

Page 138: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

우리는그것을찾아내예측을수행할것입니다

끝나지않는여정이지만끊임없이시도할것

가능성을확인

Page 139: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

생략한이야기들이많아아쉬워요

머신러닝을 실제로 적용하면서 봉착한 문제 중 일부분에 불과

Page 140: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

궁금하신가요?

Page 141: PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)

지원하세요!

들어주셔서감사합니다윤상웅

e-mail: [email protected]

fb: http://www.facebook.com/sangwoong.yoon.24

Github: swyoon

디자인 도움: 박수진님 (금손..!)

대한민국 유일 IT기반 태양광 스타트업

Django, PostgreSQL, Vue.js, jQuery, Less, TensorFlow, GitHub, Jenkins, JIRA, …모든 개발자가 Python 사용 (실화임)[email protected]

웹프론트엔드, 백엔드개발자모셔요! 다른 포지션도 연락주세요♥