[DL Basics] Historical Review

임수정·2022년 2월 7일

DL Basics

목록 보기
1/4

DL Basics

1-1. Historical Review

Deep Learning Overview

1) Overview

  • 딥러닝은 장님이 코끼리를 만지는 것처럼 한 사람이 다 다루기에는 넓은 분야이다.

  • 좋은 딥러닝 연구자의 조건은?

    • 구현 능력(Implementation Skills) :

      tensorflow 또는 pytorch를 활용하여 머릿속에 있는 것을 코드로 구현하고 실행할 수 있는 능력

    • 수학적 능력(Math Skills) :

      선형대수학(Linear Algebra), 확률통계(Probability) 를 중심으로 한 수학적 이해 능력

    • 많은 최근 논문들에 대한 지식 = 최근 트렌드에 대한 이해(Knowing a lot of recent Papers)

2) AI의 정의 = 사람의 지능을 모방하는 것

  • 머신러닝은 인공지능의 한 종류 - Data Driven 방식
  • 또한 딥러닝은 머신 러닝의 한 종류이다.

3) Key components of Deep Learning

  • Data : 어떤 데이터를 가지고 학습하는가
  • Model : 데이터를 어떻게 변형하고 분석하는가
  • Loss function : 모델의 성능이 얼마나 안좋은지(또는 좋은지)의 지표를 무엇으로 볼 것인가
  • Algorithm : Loss를 줄이기 위해 파라미터를 조정하는 방식으로는 무엇을 쓸 것인가

Key components of Deep Learning

1) Data

  • 학습에 필요한 Data는 풀고자하는 문제에 따라 달라진다.

    • 풀고자 하는 문제의 예시 (CV 분야)

      • Classfication
      • Semantic Segmentation
      • Detection
      • Pose Estimation
      • Visual Q&A

2) Model

  • 모델은 데이터가 주어졌을 때 내가 알고자 하는 것(label, sentimental analysis등)으로 형태를 바꿔주는 역할을 한다.

    • 모델 예시

      • AlexNet
      • GoogleNet
      • LSTM
      • Deep AutoEncoders
      • GAN

3) Loss

  • 손실함수(loss function)는 우리가 도달하고자 하는 것의 근사치이다.

  • 풀고자 하는 Task 별 손실함수

    • Regression Task : MSE

    • Classifcation Task : CE(Cross Entropy)

    • Probabilistic Task : MLE ( = MSE)

  • 손실함수는 우리가 도달하고자 하는 것에 근사치일 뿐이다.
    따라서 많은 사람들이 쓰는 것을 따라쓰기 보다는,
    이루고자 하는 목적에 손실함수가 맞는지, 손실함수가 줄어드는 것이 실제로 우리의 목표치에 도달하는 데어떤 영향을 주는지를 고민해야 한다

4) Optimization Algorithm

  • 최적화 알고리즘은 데이터, 모델, 손실함수가 주어졌을 때 목표에 도달하기 위해

    모델 파라미터를 어떻게 업데이트 할지를 결정하는 역할을 한다.

  • 일반적으로 우리가 활용하는 방법들은 모두 다 first-order method,

    즉 뉴럴 네트워크의 파라미터를 loss function에 대해서 일차 미분한 정보를 활용한다.

  • Algorithm 종류

    • 일차 미분 정보를 그냥 활용하는 것 : SGD (잘 동작을 안함)

    • 예 ) AdaGrad / Adam /...

  • 우리의 목적은 단순히 손실 함수를 최소화 하는 것이 아니라,

    이 모델이 학습하지 않은 데이터에서도 잘 동작할 수 있게 하는 것이다.
    따라서

    • dropout

    • early stopping

    • k-fold validation

    • weight decay

    • batch normalization

    • mixup

    • ensamble

    • bayesian optimization

    등의 테크닉을 활용해서 네트워크가 한 번도 보지 못한 데이터에 대해서도 잘 학습할 수 있게 한다.

Historical Review

from 논문 : Denny Britz, Deep Learning's Most Important Ideas - A Brief Historical Review, 2020

(다 중요하지만, 진한 글씨는 나중에 더 깊게 다룰 주제들입니다.)

1) 2012 - AlexNet

  • CNN
  • 224* 244 이미지를 분류하는 게 목적
  • ImageNet 대회에서 처음으로 딥러닝을 활용하여 1등을 함
  • 그 이후에는 계속 딥러닝이 1등을 하고 있음 -> paradigm shift

2) 2013 - DQN

  • 이세돌 vs 알파고 대결..!
  • 알파고를 만든 딥마인드에서 atari game을 강화학습으로 푸는 데 사용한 방법이 DQN
  • Q-learning이라는 강화학습 방법에 딥러닝을 적용한 방식
  • 이 때까지 딥마인드는 스타트업이었지만 DQN 소식을 들은 구글이 인수하게 되면서 지금의 구글 딥마인드가 되었다고 한다

3) 2014 - Encoder / Decoder

  • 처음에 NMT(Neural Machine Translation) 문제를 풀기 위해 나온 모델
  • 즉 어떤 언어(영어)로 되어있는 연속이 있을 때, 이에 대한 정보를 잘 학습해서 다른 언어(한국어)로 뱉어낼 수 있게 학습하고자 함

4) 2014 - Adam Optimizer

  • 대부분의 논문들이 Adam을 사용하는 이유 : Adam이 대부분 결과가 잘 나옴

  • 보통 연구를 할 때 여러가지 Optimizer를 써보고 Learning rate도 많이 바꿔가면서 실험을 해야 하는데(hyperparameter 탐색), 그러기 위해서는 많은 computing power가 필요함.

  • 그래서 우리같은 소상공인(?)들에게는 웬만하면 잘 되는 Adam이 참 좋은 알고리즘이다..ㅎㅎ

5) 2015 - GAN(Generative Adversarial Network)

  • 저자 : Ian Goodfellow 등, NIPS에 실림
  • 네트워크가 generator와 discriminator 두개를 만들어서 학습시킨다.
  • acknowledgement에 술집이 들어간 특이한 논문..ㅎㅎ(술집에서 아이디어를 떠올렸다고 한다..!)

6) 2015 - Residual Network

  • 이전의 문제 : 딥러닝에서 네트워크를 너무 깊게 쌓으면 training loss는 굉장히 많이 줄었지만, test에서 성능이 안나왔다.
  • ResNet의 등장으로 네트워크를 훨씬 깊게 쌓을 수 있게 됨

7) 2017 - Attention is all you need(Transformer)

  • RNN 구조를 쓰지 않고 Attention만 사용
  • RNN, 비젼 분야를 모두 대체하고 있음

8) 2018 - BERT ( fine- tuned NLP models )

  • 많고 다양한 데이터를 가지고 Pre-training 후,

  • 그 모델을 내가 풀고자하는 문제에 맞게 fine-tuning을 시켜서 좀 더 효율적으로 모델을 학습할 수 있게 됨

9) 2019 - BIG Language Model

  • OpenAI GPT-3, autoregressive language model with 175 billion parameters

  • 파라미터를 매우 많이, 모델을 매우 크게, 데이터를 매우 많이 써서 모델을 학습시키면 성능이 좋아진다.

10) 2020 - Self Supervised Learning

  • 라벨이 된 학습 데이터는 한정적
  • 주어진 학습 데이터 외에 라벨을 모르는 unsupervised data를 학습에 같이 활용하고자 함
  • Visual representation
    • 어떻게 하면 이미지를 컴퓨터가 잘 이해할 수 있는 벡터로 바꿀까?
    • 이것을 단순히 학습 데이터만 활용하는 게 아니라 비지도 학습 데이터를 같이 활용해서 결과론적으론 좋은 visual representation을 학습함으로써 진짜 풀고자 하는 분류 문제를 잘 풀 수는 없을까?
  • SimCLR ( a simple framework for contrastive learning of visual representations )
    • 이미지가 주어졌을 때, 내 학습 데이터 외의 데이터를 추가로 활용해서 이미지에 대한 좋은 representation을 얻겠다.
    • SimCLR 이후에 다양한 self supervised learning 방법론들이 제안이 되었다.(ex.BYOL=Boostrap your own latent)
  • self supervised learning 분야에서 또다른 트렌드
    • 내가 풀고자 하는 문제에 대해서는 굉장히 잘 알고 있고, 이 문제에 대한 고도화된 도메인 지식이 있을 때 오히려 Data를 추가로 만들어 내는 연구분야도 존재.(Self-supervised data sampling)
profile
유쾌하게, 열정적으로, 진심을 다해

0개의 댓글