Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Spark Day 2017 Machine Learning & Deep Learning With Spark

4,843 views

Published on

Spark Day 2017 발표자료(17.06.27)
주제 : Bigdata, 머신러닝, 딥러닝 with spark, Automl
Slideshare는 자주 사용하지 않아서 질문은 페북으로 주세요.

Published in: Data & Analytics
  • Download this 3-step guide to generating insane amounts of media coverage for your from LinkedIn: http://bit.ly/linkedin3stepguide
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Spark Day 2017 Machine Learning & Deep Learning With Spark

  1. 1. Machine Learning & Deep Learnig With Spark SK 주식회사 DataScience 팀 스파크 사용자 모임 운영자 이상훈
  2. 2. Who am I? • 패턴인식, 머신러닝 전공 • 전) KIST 인지로봇 연구단 • SK 주식회사 Data Science 팀 • 스파크 사용자 모임 운영자 • Streaming, DW, Machine Learning, Deep Learning, AutoML 관심 많음 • 빅데이터 실무 기술 가이드 공저, 실시간 분석의 모든것 번역 • phoenixlee1@gmail.com • www.facebook.com/phoenixlee.sh
  3. 3. Apache Spark 오늘의 주제
  4. 4. Spark Mllib package spark.mllib vs spark.ml RDD 기반 더 많은 알고리즘 Spark 3.0 삭제 예정
  5. 5. Spark Mllib package spark.mllib vs spark.ml DataFrame 기반 Pipeline 제공 활발한 업데이트 Mllib package 대신 ml package로 넘어가야 함.
  6. 6. 머신러닝을 처음 시작할 때 배우는 것 • 머신러닝은 크게 2가지 종류로 나눌 수 있음 • Supervised Learning – 훈련 데이터(Training Data)로부터 하나의 함수를 유추 • Unsupervised Learning – 데이터가 어떻게 구성되었는지를 알아내는 문제의 범주에 속 함 – Supervised Learning 입력값에 대한 목표치가 주어지지 않음 • 참고 : Reinforcement Learning Labeled Data 유무! 보상과 환경
  7. 7. Spark Mllib package Supervised Learning UnSupervised Learning Spark 제공 머신러닝 알고리즘
  8. 8. 머신러닝에서 진짜 중요한 것 • 분석 목적 • 양질의 데이터 (Garbage in, garbage out) • 비지니스 효과성 측정 개인의 몫이 아닌 경우가 많고, 오늘의 주제 아님.
  9. 9. 머신러닝에서 진짜 중요한 것 • 분석 목적 • 양질의 데이터 (Garbage in, garbage out) • 비지니스 효과성 측정  개인의 몫이 아닌 경우가 많고, 오늘의 주제 아님. • Pre-Processing • Hyperparameter Tuning • 머신러닝 Flow (Pipeline) • Data, Model 관리 앞으로 다룰 내용
  10. 10. Data Ingestion Pre Processing Modeling Deployment Model Lifecycle
  11. 11. 1. 전처리 (General) • 특징 추출 및 일반화 • 적용: 텍스트와 같은 입력 데이터를 머신러닝 알고리즘에 활용할 수 있도록 변화 • 구성: 데이터 전처리, 특징 추출 2. 차원 축소 (Dimensionality Reduction) • 결정해야 할 확률변수의 개수를 줄이는 방법 • 적용: Visualization, Increased efficiency • 알고리즘: PCA, feature selection, non-negative matrix factorization. 전처리(Pre-processing) • 파라미터와 모델의 비교 및 평가를 통한 선택 • 목적 : 파라미터 조정을 통한 정확도 향상 • 구성 : grid search, cross validation,metrics , … 모델 선택(Model Selection) • 해당 객체가 어느 카테고리에 속하는지 확인하여 구분 짓는 방법 • 적용 : 스팸 메일 탐지, 이미지 인식 등 • 알고리즘 : SVM, ANN, random forest, ... 분류(Classification) • 유사성이 존재하는 객체들끼리 묶어주는 방법 • 적용 : 고객 세분화, 실험결과 grouping • 알고리즘: k-Means, spectral clustering,mean-shift, ... 군집(Clustring) • 변수 간의 이론적 의존 관계를 해석하는 방법 • 적용 : 약물 반응, 주식 가격 예측 등 • 알고리즘: SVR, ridge regression, Lasso, ... 회귀(Regression) • 상품이나 서비스 등을 제안하기 위한 분석 기법 • 적용: 미디어, 소셜 태그 등 추천 • 알고리즘 : Content Based Recommendation, Collaborative filtering 추천(Recommendation) 머신러닝 처리과정 R • 가장 다양하고 최신의 알고리즘 패키지 제공 • 분산처리 취약하고 주로 모델 분석용으로 사용 Spark ML • 분산처리 및 스트리밍 SQL 연동 등 쉬움 (Spark 기반) • 최근 많이 사용하고 있지만 적용사례 찾기 어려움 Scikit-Learn • 프로그래밍 언어(Python) 기반이기 때문에 편리함 • 분산처리 취약하고 R 대비 알고리즘 少 Mahout • 하둡과 연동이 쉬우며 적용 사례 가장 多 • 맵리듀스 기반이라 느리며, 지원 알고리즘 少 … 오픈소스 적용 및 알고리즘 머신러닝 알고리즘 및 오픈소스 Thanks to 서진철, 이은지
  12. 12. Pre-Processing • Data Cleaning • Instance selection (Dataset reduction) • Normalization • Transformation • Feature extraction and selection
  13. 13. Pre-Processing • Spark Programming + Spark SQL + Spark Streaming • Spark mllib API
  14. 14. Pre-Processing 예제 • Tokenizer -> StopWordsRemover -> Word2Vec
  15. 15. Pre-Processing 예제 • Tokenizer -> StopWordsRemover -> Word2Vec <Word2Vec : King – Man + Woman = Queen>
  16. 16. 알고리즘 선택
  17. 17. Spark Ml package HyperParameters Random forest classifier • setFeaturescol • setPredictioncol • setImpurity(String) : gain 계산시 사용할 수식 (대소문 자 구분함). • setMaxBins(Int) : 최대 bin(몇 개로 나눌지) 수 • setMaxDepth(Int) : 최대 트리의 깊이 • setMinInfoGain(Double) : 트리를 분류할 때 최소한의 inf omation gain. • setMinInstancesPerNode(Int) : 각 노드당 최소한의 인 스턴스 수. • setNumTrees(Int) : 학습할 트리 수. 1보다 같거나 커야 함 • setSeed(Long) : 랜덤 시드 • setSubsampleingRate(Double) : 각 결정 트리에서 사용 할 데이터 크기. 0초과부터 1까지. • setThresholds(Array[Double]) : Multi-class Classifi cation 임계치로 각 클래스의 예상 확률값. • 너무 많은 파라미터들!
  18. 18. Spark Ml package Confusion Matrix 출처 : 위키피디아
  19. 19. 모델 평가  ROC(Receiver Operating Characteristic) Curve 기계학습 추가이론
  20. 20. Typical learning curve 기계학습 추가이론
  21. 21. 기계학습 추가이론
  22. 22. Spark Ml package Parameters tunning in Spark Train Validation Cross Validation
  23. 23. Hyper-parameter tuning 기계학습 추가이론
  24. 24. Hyper-parameter tuning  Auto-sklearn 기계학습 추가이론
  25. 25. TPOT • 분산으로 하이퍼 파라미터를 구현하는 것중에 코 드가 공개된 것. • 파이썬 라이브러리를 활용해서 병렬로 최적화와 탐색을 진행함. • 아쉽게도 최근에는 개발이 활발하지는 않음 • 대신 심플한 코드 인상적이며 생성된 코드를 보 여줌
  26. 26. TPOT
  27. 27. TPOT
  28. 28. Advanced Hyperparameter tunning  Practical Bayesian Optimization of MachineLearning Algorithms − http://papers.nips.cc/paper/4522-practical-bayesian-optimization-of- machine-learning-algorithms.pdf − 위 논문이랑 비슷하게 bayseian 기반의 탐색이 종종 보임.  Sequential Model-Based Optimization for General Algorithm Configuration − http://www.cs.ubc.ca/~hutter/papers/11-LION5-SMAC.pdf − Auto weka 참고 논문으로 SMBO이긴 한데 random forest를 사용하고 있음.  Auto Weka − http://www.cs.ubc.ca/labs/beta/Projects/autoweka/papers/au toweka.pdf − 기본적으로 위의 SMBO(Sequential Model-based Bayesian Optimization)이라 는 방법으로 최적의 값을 찾아냄. − SMAC이라는 알고리즘을 기반으로 Hyper Parameter의 loss function을 구함 기계학습 추가이론
  29. 29. Auto Weka 기계학습 추가이론  사내에서 사용하기 위하여 이와 같은 기능을 Web + Spark 기반으로 구현해두었음.
  30. 30. Spark Ml package Spark Pipeline • 모델을 생성시키는 과정 • 생성된 모델을 통해 최종 prediction 도출
  31. 31. 사내 적용 솔루션 기계학습 추가이론 • 데이터셋 관리 • 모델 생명주기 관리 • Visualization • Web 기반 Spark 코드 생성 (코딩x) • AutoML
  32. 32. 참고 : ModelDB
  33. 33. 참고 : AutoML Automated Machine Learning — A Paradigm Shift That Accelerates Data Scientist Productivity @ Airbnb
  34. 34. 딥러닝
  35. 35. Single Layer Perceptron. Perceptron sgn
  36. 36. 딥러닝 Propagation  Propagation − Forward propagation: input training data로부터 output을 계산하고, 각 output neuron에서 의 error를 계산. − Back propagation: output neuron에서 계산된 error를 각 edge들의 weight를 사용해 바로 이 전 layer의 neuron들이 얼마나 error에 영향을 미쳤는지 계산.
  37. 37. 딥러닝 Single Layer Perceptron’s Limitation
  38. 38. 딥러닝 Multi Layer Perceptron  Hidden layer 계속 추가!
  39. 39. 딥러닝 Image Convolution  Convolution
  40. 40. Convolution Neural Network *** Feature Engineering을 대신 수행
  41. 41. Deep Learning으로 인한 인식률 개선
  42. 42. 참고 : AutoML • 딥 러 닝 이 Feature Engineering 을 대 신 해 주 고 Hyper Prameter를 대신 최적화 해주는 것 같지만 여전히 많은 이슈가 있음 • 뉴럴 네트워크를 ‘잘’ 디자인하고 튜닝하는 것은 더 어려움 • 병렬 인프라를 이용하여 좋은 구조를 자동학습하기 위한 시도들 – 강화학습, 유전자 알고리즘 등 활용 출처 : NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING
  43. 43. Deep Learning Frameworks 출처 : https://goo.gl/Pb3sRw
  44. 44. Deep Learning with Spark Deep Learning Frame work Focus BigDL BigDL big model training, ETL CaffeOnSpark Caffe small model training, ETL DeepLearning4J DeepLearning4J big/small model training, ETL DeepDist DeepDist big model training TensorFlowOnSpa rk TensorFlow small model training, ETL TensorFrames TensorFlow Spark integration, small model training, ETL
  45. 45. TensorflowOnSpark 분산 기계학습
  46. 46. CaffeOnSpark 분산 기계학습
  47. 47. 분산 기계학습 TensorFrame • Databricks 주도로 개발중 • Native embedding of Tensorflow
  48. 48. DL4J • History – 2014년 첫 릴리즈 – Skymind를 주도로 만들어진 오픈소스로 Skymind가 상업적 지원도 병행하고 있음 – 다른 딥러닝 프레임워크와 달리 Java를 메인 언어로 지원 – 연구용 보다는 Spark를 기반으로 엔터프라이즈를 추구 • 장점 – 엔터프라이즈에 적용이 상대적으로 쉬우며 컨설팅 가능 – Skymind(아담 깁슨) 등 주요 개발자가 채팅 등을 통해 적극적으로 이슈해결에 도움을 줌 – 빅데이터 시스템과의 연동이 쉬움 • 단점 – 사용자 층이 얇음 – 개발자 수가 적어서 이슈 처리가 상대적으로 느림 분산 기계학습
  49. 49. 분산 기계학습 BigDL • Intel의 주도로 개발되고 있으며 Xeon과 같은 서버 CPU 활용에 초점을 맞췄음 • MKL와 멀티쓰레딩을 이용하여 큰 모델에서의 뛰어난 성능 • Production ML/DL system is complex
  50. 50. CPU vs GPU Infra 출처 : https://goo.gl/S9E4dr
  51. 51. CPU vs GPU 출처 : https://github.com/jcjohnson/cnn-benchmarks Infra
  52. 52. CPU vs GPU Infra
  53. 53. Google TPU Infra • (’16) 이세돌과 싸웠던 알파고는 1202개 CPU와 176개 GPU를 활용 • (’17) 커제와 싸운 알파고는 수 개의 Google TPU를 활용하였음 • 2세대 Google TPU – 최대 180 Teraflops에 달하는 부동 소수점 연산기능 – TPU Pod을 이용하면 11.5 Petaflops까지도 가능함 • 단점 : Google 클라우드에서만 사용가능하고 비쌈
  54. 54. 결론 • 머신러닝 – 머신러닝은 알고리즘이 전부가 아니다. – Pre-Processing, Hyperparameter Tuning, Pipeline, Data, Model 관리 및 서빙이 필요하다. – Spark는 위 프로세스에 최적의 OpenSource이다. • 딥러닝 – Spark에 딥러닝을 접목하기 위한 시도가 많이 이루어지고 있다. – GPU와 딥러닝 프레임워크의 대체보다는 시너지를 가지는 방향으로 발전 될 것이다. • AutoML 분산 기계학습
  55. 55. Q & A

×