[Pre-Course] Deep Learning Historical Review

냥린이·2021년 12월 6일
0

AI Tech 프리코스

목록 보기
1/2

네이버 커넥트에서 제공하는 Pre-Course를 수강하며 작성한 필기입니다

Introduction

강사님

최성준(고려대학교 인공지능학과)

Disclaimer

개인이 단기간에 인공지능의 모든 영역 마스터하기 어려움을 인지하고 시작할 것

좋은 Deep Learner로 만드는 것

  1. 구현 능력 (Tensorflow, PyTorch 사용 예정)
  2. 수학적 배경 (특히 선형대수와 확률론, 임성빈 교수님 강의와 병행 추천)
  3. 최신 연구 파악 (연구자로써 필요한 영역)

AI, ML, DL 관계

인공지능: 인간 지능을 흉내낸 모든 것
기계학습: 데이터 기반 접근법
딥러닝: 뉴럴 네트워크를 사용

딥러닝의 주요 요소

1. 데이터

The data that the model can learn from
이미지, 말뭉치, 비디오 등 모델의 학습 입력값

풀어야하는 문제의 종류마다 다름

  • Classification
    Binary, Multi-level로 다시 분류
  • Semantic Segmentation
    픽셀별로 클래스 분류하는 dense classification
  • Detection
    Bounding box 찾아줌
  • Pose Estimation
    2D, 3D Skeleton 정보 출력
  • Visual Q&A
    이미지와 문제를 주어주고 답을 출력

2. 모델

The model how to transform the data
입력된 값이 모델을 거쳐 출력됨
모델 학습과 정의가 필요

ex. AlexNet, GooLeNet, ResNet, DenseNet, LSTM, Deep AutoEncoders, GAN

3. 손실 함수 (비용 함수)

The loss function that quantifies tha badness of the model
예측값이 실제값과 얼마나 유사한지 판단하는 기준 (줄여나가는 방향으로 학습 진행)

The loss function is a proxy of what we want to achieve

  • MSE(Mean Squared Error)
    Regresstion Task에서 쓰이는 것으로 뉴럴넷의 출력값과 실제값 사이의 제곱을 최소화하는 게 일반적인 목적

  • CE(Cross Entropy)
    Classification Task에서 뉴럴넷의 출력값과 실제값 사이의 크로스 엔트로피를 최소화하는 게 일반적인 목적

  • MLE(Maximum Likehood Estimation)
    Probablistic Task에서 출력값이 단순 값이 아니라 평균, 분산, 가우시안으로 모델링 되어야 할 때 사용

Loss는 이루고자 하는 것의 근사치 일뿐, Loss function이 줄어든다고 해서 실제값을 얻을 것이라는 보장은 없다.

또한 위에 서술한 것은 어디까지 일반적인 방법이며 언제나 딱 맞는 모범 답안은 아니다.
예를 들어, 회귀 문제에서 노이즈가 많은데 MSE를 썼을 경우 이상치(Outlier) 때문에 제곱이 전체적인 학습을 줄이게 되므로, 제곱 대신에 절대값을 사용하거나 robust regression이 나오는 다른 함수를 사용해야 한다.

4. 최적화 알고리즘

The algorithm to adjust the parameters to minimize the loss
손실을 줄이기 위해 파라미터에 적용하는 다양한 알고리즘

모델과 손실함수가 정해졌을 때 네트워크를 어떻게 줄일 지에 대한 방법

보통 First Order Method, 즉 뉴럴넷의 파라미터를 손실함수에 대해서 1차 미분한 정보를 활용한다. 이 정보를 그대로 사용한 것이 Stochastic Gradient Descent(SGC)인데 여러가지 이유로 잘 동작하지 않는다. 따라서 이것을 변형한 Momentum이나 NAG, Adagrad, Adadelta, Rmsprop와 각 최적화의 특성을 이해할 필요가 있다.

Loss function을 줄이는 것만이 정답이 아니므로 오히려 학습을 억제하기도 한다. 즉 학습하지 않은 데이터에서도 잘 동작하게 만들기 위해서 dropout, early stopping, k-fold validation, weight decay, batch normalization, maxup, ensemble, bayesian optimation 등 다양한 기술을 사용한다.

Historical Review

참고 논문

Denny Britz, Deep Learning's Most Important Ideas; A Brief Historical Review, 2020-07-29

2012 AlexNet

2012년 ILSVRC(Imagenet Large Scale Visual Recognition Challenge)에서 1등한 최초의 딥러닝 모델로 CNN 네트워크이며 224x224 데이터가 들어왔을 때 분류하는 것이 목적이다. 이전까지 해당 대회에서는 커널 기반 혹은 SVM(Support Vector Machine) 과 같은 고전적 기계 학습 방법이 사용되었지만 2012년 이후 딥러닝 모델이 계속 수상하였다.

2013 DQN

이세돌과 알파고의 대결에 사용된 알고리즘을 개발한 딥마인드가 아타리 게임을 풀기 위해 사용한 알고리즘이 DQN이다. 이 방법론은 Q learning이라는 강화학습의 방법론을 이용해서 딥러닝에 접목한 것이다. 이 알고리즘을 발표한 이후 구글에 인수되었다고 한다.

2014 Encoder/Decoder

구글 번역에서 사용하는 NMT(Neural Machine Translation) 문제를 풀기 위한 알고리즘이다. 단어의 연속(Sequence)을 인코딩하여 다른 언어의 단어의 연속으로 바꾸어주는 것을 목표로 한다. 이 알고리즘을 계기로 기계어 번역의 트렌드가 바뀌었다.

2014 Adam Optimizer (Adaptive Momentum Optimizer)

많은 사람들이 딥러닝 학습에 아담을 사용한다. 학습시키려는 모델이 있을 때 선택할 수 있는 옵티마이저는 많지만 (Adagrad, Adadelta, Rmspro 등) 아담이 제일 성능이 좋다. 구글이나 큰 그룹에서 쓴 논문을 보면 러닝 레이트를 중간에 몇 번 바꾸고 옵티마이저도 변경하지만 그 이유는 제대로 작성하지 않는다. 이는 그렇게 하지 않으면 재현이 불가능 즉 그만큼의 성능이 나오지 않는다는 것을 반증한다. 일반적으로 딥러닝 모델을 만들 떄 다양한 하이퍼 파라미터 서치를 하는데 (베이스 러닝 레이트, 스케쥴링, 옵티마이저 선택) 이때 컴퓨팅 리소스가 상당히 중요하다. 중소 규모의 연구자가 하이퍼 파라미터 서치를 충분히 하면 아주 오랜 시간이 걸리므로 어느 정도의 성능을 보장하는 아담을 자주 사용하게 되는 것이다.

2015 GAN(Generative Adversarial network)

이미지나 텍스트를 만들어내는 것에 대한 얘기이며 딥러닝에서 중요한 개념이다. 주요한 특징은 네트워크가 generator(생성자)와 discrimiter(구분자)를 만들어 학습을 시킨다. 술을 마시다가 아이디어가 떠올라서 작성한 논문이라고 한다.

2015 ResNet(Residual Networks)

이 연구 덕분에 딥러닝의 딥러닝이 가능해졌다. 딥러닝은 뉴럴넷을 활용한 기계 학습 분야로 뉴럴 네트워크를 깊게 쌓는다. 네트워크를 너무 깊게 쌓으면 학습은 잘 되지만 테스트를 했을 때 성능이 잘 나오지 않았으나, 이 논문 이후로 네트워크를 어느 정도 깊게 쌓아도 성능 유지가 가능해졌다.

2017 Transformer (Attention is All You Need)

상당히 파급력이 센 MAT 구조이며 기존의 방법론에 비해 좋은 성능을 낸다 (향후 자세히 다시 기술)

2018 BERT (Find-tuned NLP models)

Bidirectional Encoder Representations from Transforms은 앞서 언급한 트랜스포머의 Bidirectional Encoder를 쌓아올린 구조이다. 알고리즘 자체도 중요하지만, 딥러닝의 역사 전체에서 보면 fine tuning 라는 개념이 중요하다. NLP에서는 언어 모델을 학습하는데 원하는 토픽에 대한 데이터가 충분하지 않을 때, 위키피디아 등 거대한 말뭉치를 이용해 pre tuning을 하고 진짜 풀고자 하는 소스의 데이터에 fine tuning을 하여 좋은 성능을 내는 구조이다.

2018 Big Language Models (GPT-X)

Fine tuned NLP 모델의 끝판왕이라고 할 수 있다. GPT-3 역시 언어 모델이며 간단한 문장, 프로그램, 표 등 시퀀셜 모델을 만들 수 있고 가장 큰 강점은 1750억개의 파라미터를 사용한 것이다.

2020 Self Supervised Learning

Self Supervisied Learning의 포문을 열었던 논문이 SimCLR(A Simple framework for contrastive learning of visual representations)이다. 이 방법론은 분류 문제를 풀 때 학습 데이터가 한정적이라면 주어진 데이터 외에 라벨을 모르는 데이터도 학습하겠다는 것이다. 이 논문의 핵심은 이미지를 컴퓨터가 이해할 수 있는 벡터로 바꾸는 것이며, 비지도학습 데이터셋을 같이 활용해 좋은 visual representation을 학습하고 분류 문제를 잘 해결하고자 한다. SimCLR 이후 BYOL(Bring your own latent) 같은 다양한 자기지도학습 방법론이 제안되었다.

Self Supervised Data Sampling 이라고 해서 해결하고자 하는 문제와 학습시킬 데이터에 대한 충분한 도메인 지식이 있을 때 오히려 학습 데이터를 만들어내는 트렌드도 생겨났다.

향후 목차

Neural Network & Multi-Layer Perceptron
Optimization Methods
Convolutional Neural Networks
Modern CNN
Computer Vision Applications
Recurrent Neural Networks
Transformer
Generative Model Part

profile
홀로서기 기록장

0개의 댓글