GDG 광주 2019 - 머신러닝 vs 딥러닝 개념 잡기 (발표자 - 이용이)

원본 발표자료

[DLSS]01_DL

 


머신러닝이란?

ML - 데이터 기반으로 알고리즘을 추론하는 법
DL - ANN을 이용한 방법인데, 기존 ML의 방법을 아득히 뛰어넘음.

개발 방법의 패러다임 변화

이전엔 Explicit programming으로 프로그램을 만들었다.

  • 개발자의 사전 지식을 가지고 알고리즘을 설계했다 (룰-베이스)
  • 룰이 너무 많은 경우에 (e.g. 경우의 수가 너무 많은 경우에는) 사람이 전부 정의하기 쉽지 않음.
    • 바둑? 자율주행?

이제는 ML기법을 사용해서 프로그램을 만들 수 있다.

  • 많은 데이터를 이용해서 룰을 뽑아냄.
    • 많은 데이터 → 더 정확한 시스템
    • 간단하지만 universal rule
    • 새로운 상황 (데이터)가 정의되면 업데이트 하기가 쉬움.
      • 새로운 데이터로 다시 학습을 시켜주면 됨.
    • 복잡한 상황에서 오히려 사람이 기계로부터 통찰력을 얻게 됨.

 


머신러닝의 종류

  • Unsupervised learning
    • 정답이 정해져있지 않은 데이터
    • 데이터들 간의 관계에 기반해 숨겨진 패턴이나 형태, 구조를 도출.
      • 이를 통해 데이터를 분류하거나 가공하는데 사용.
  • Supervised learning
    • 정답이 있는 데이터셋이 있는 경우, 정답을 모르는 새로운 데이터의 특성을 예측할 수 있음.
  • Reinforcement learning
    • 데이터가 전혀 없는데도 사용 가능. 이런 경우에는 동적인 환경에서 (직접 부딪쳐보면서) 데이터를 수집하면서 학습을 진행함.
    • Reward / Penalty 시스템을 통해서 직접 학습을 함.

 


Supervised learning에 집중해보면…

Regression

Input에 대응되는 continous output을 찾는 문제

Classification

Input에 대응되는 discrete output을 찾는 문제

 


ML의 파이프라인

가설→ Cost function → 최적화 (optimisation)

가설

  • 이러이러한 문제는 이러이러한 데이터가 있으면 풀릴것이다~

Cost function

  • 적절한 norm을 골라야한다.

최적화

  • 문제

 


Classification 예제

가설

Binary classification은 0과 1사이의 값만 내보내는 함수 - step function.

하지만 step function은 미분이 불가능하기 때문에, 결과 값을 확률로 나타내면서 미분이 가능한 함수 - sigmoid function를 사용한다.

기존에 probit regression이라는 함수도 가능하지만, 미분이 굉장히 복잡해서, sigmoid가 훨씬 쉬워서 사용한다.

Multiclass classification은 softmax 함수를 사용한다.

Cost function

Sigmoid function에 적합한 loss function을 정의.

Softmax function의 경우에는 cross-entropy 를 loss function으로 사용.

문제들

Evaluation techniques

  • Confusion matrix
  • Evaluation metrics
    • Accuracy - 모든 데이터에 대하여 정답을 제대로 예측한 비율
    • Precision - 정답이라고 예측한 데이터중에 진짜로 정답의 데이터 비율
    • Recall - 맞춰야 하는 정답 데이터에 대하여 실제로 정답을 맞춘 데이터의 비율

 


Deep Learning

ANN

뉴런이 신호를 보내는건 생화학적 신호가 특정 threshold를 넘으면 전기적 신호를 보낸다.

이와 비슷하게 Activation function을 만들었고, 여러 노드 (뉴런)을 이어서 multi-layer perceptron을 만들었다.

Multilayer perceptron을 최적화하는데 너무 많은 파라미터가 있다.

20년간의 AI Winter가 있다가, 힌튼 교수에 의해 cost function을 미분해서 최적화를 하는 backpropagation이라는 방법이 나타난다.

이제 뉴럴넷에서 최적화를 가능하게 되었다.

그런데, 뉴럴넷을 많이 쌓으면 쌓을수록 backpropagation을 할 때 vanishing gradient 문제로 최적화가 어려워졌다. Chain rule에 의한 sigmoid function의 미분 계수는 에 존재했고, 이 미분 계수는 곱해질수록 0에 수렴했기 때문에 업데이트가 어려워지는 문제가 vanishing gradient 문제이다. 이 때문에 2번째 AI Winter가 나타났다.(1986-2006)

그러면 미분 계수가 이 아니면 되는게 아닌가? ReLU라는 activation function을 써봤더니, gradient vanishing / exploding이 생기지 않았다. Dying ReLU라는 문제도 있었는데, 이를 고치기 위해 Leaky ReLU라는 activation function도 나타났다.

또 다른 소프트웨어 적 발전으로는, 초기 값을 설정하는게 중요하다는 점이 부각되었다.

  • 초기값이 optimal value와 멀리 떨어져있으면 학습시간이 길어지고 이는 overfitting을 야기한다. 그렇다고 초기값이 0으로 사용할 경우, 포워드 프로파게이션에 의해 전달되는 값이 사라지므로, 학습이 불가능해졌다.
  • 이에 대해서 여러가지 초기값 initialization방법들이 나타났다. 현재 사용되는 두가지 방법으로는 Xavier Initialization (glorot 2010)[sigmoid나 tanh에 적합한 초기값 설정법],와 He initialization (He 2015)[ReLU에 적합한 초기값 설정법이 있다.

이 외로 여러가지 소프트웨어적인 딥러닝 기법들이 나타났다.

  • 오버피팅 피하기
    • Batch normalization (Loffe2015)[활성화 값을 강제로 퍼뜨려서 gradient vanishing/exploding 해결]
    • Dropout (Srivastava2014)
    • Ensemble
    • Early Stopping
  • 최적화
    • SGD
    • Momentum (1999) [로컬 미니마에서 나오는 방법]
    • AdaGrad (Duchi 2011)
    • Adam (Kingma 2014)

이외에 딥러닝을 발전시키는데에는 효율적인 병렬처리를 가능하게 한 GPU의 발전과, 많은 양의 데이터로 오버피팅을 피하게 해줄 수 있는 빅데이터가 나타났다.

이제는 최적화된 뉴럴넷을 자동으로 찾을 수 있는 AutoML이라는 기법도 나타났다.

Learning Transferable Architectures for Scalable Image Recognition (Zoph 2017) [AutoML]

 


발표자님께서 말하시는 딥러닝을 할 때의 팁

  1. 데이터셋 준비
  2. Deep NN 설계
    • 네트워크 스트럭쳐 설계
    • 액티베이션 펑션 고르기
  3. Initilization 방법
    • Xavier, He
  4. Optimisation
    • SGD, Momentum, Adam
  5. Overfitting 방지
    • Dropout, Early Stopping