부스트캠프 week2 day1 MLP

Dae Hee Lee·2021년 8월 9일
0

BoostCamp

목록 보기
10/22
post-thumbnail

딥러닝에서 필요한 실력

  1. 딥러닝에서 중요한 것은 역시 구현실력이다.
  2. 필수적인 수학 지식은 확률론이나 선형대수학이 필요하다.
  3. 현재 어떤 트렌드, 어떤 논문이나 연구들이 발표되었는지 아는 것도 중요하다.

인공지능의 정의

사람들마다 다르겠지만, 사람의 지능을 모방하는 것.

인공 지능 안에 Machine Learning이 있다. Data-Driven 형태를 가진 것. 그리고 이 안에 NN을 활용하는 Deep Learning이 있다.

Key Component

  • The data that the model can learn from
  • the model how to transform the data
  • The Loss Function that quantifies the badness of the model
  • the algorithm to adjust the parameters to minimize the loss
    위의 기준으로 논문을 살펴보는 습관을 가지자.

Data

data depend on the type of the problem to solve

  • Classification
  • Semantic Segmentation
  • Detection
  • Pose Estimation
  • Visual QnA

Model

  • AlexNet, GoogLeNet, ....

Loss

데이터와 모델이 정해져있을 때, 학습의 기준이 되는 함수
Regression Task에서는 보통 MSE를,
Classification 에서는 보통 CE,
Probability Task에는 보통 MLE를 사용한다.

optimization Algorithm

NN의 파라미터를 1차 미분한 정보를 사용하는데, SGD나 Momentum, AdaGrad등을 활용한다. 또한 학습이 잘 안되게 하는 규제(Regularization)을 포함해서 다양한 테크닉을 사용해서 데이터가 실제 데이터에 잘 작동하도록 하는 것이 핵심이다.

Historical Review

2012 - AlexNet

처음으로 딥러닝 모델으로 대회 우승
만년 유망주였던 딥러닝이 실제로 성능을 낸 사건

2013 - DQN

알파고 등 강화학습, 딥마인드가 있게 한 논문

2014 - Encoder, Decoder

단어의 시퀀스가 주어졌을 때 이를 인코딩하고 다시 디코딩하여 시퀀스를 출력

2014 - Adam

딥러닝 모델 학습 시 최적화 모델로 Adam을 많이 사용한다. Adam의 모델이 가장 결과를 잘 만들기 때문이다. Learning rate 스케쥴을 조정하는 것이 중요한데, 현실적으로 Adam이 가장 성능이 좋아 연구 개발의 효율성도 가져왔다,,

2015 - GAN(Generative Adversarial Network)

2015 - Residual Networks

왜 딥러닝인가에 대한 설명을 해줄 수 있는 연구. NN을 너무 깊게 되면 일반적으로 테스트 셋에 대한 결과가 오히려 좋지 않다고 생각했는데 이 연구를 통해 어느정도 깊이 까지는 더 쌓아도 결과가 좋아지게 되었다.

2017 - Transformer

Attention is ALL you need
모든 분야에 대해 대체할 수 있는 것이라고 생각못했지만, 현재는 모든 Recurrent구조를 대체하고 있다.

2018 - BERT

딥러닝의 흐름을 바꾸는 데에 있어서 Fine-tuned NLP 모델이라는 것이 중요하다. 일반적으로는 Language Model을 학습해서 이전의 단어를 보고 다음의 단어를 예측하는 형식이었다.
세상에는 다양한 문장 데이터가 많기 때문에 이런 글들을 기반으로 Pretrain되어 필요한 부분만 Fine tuning한다.

2019 - GPT3, BIG Language Models

fine tuned model의 끝판왕. 아주 많은 파라미터를 가지는 것이 강점이자 특징이다.

2020 - Self Supervised Learning

이미지 분류같은 분류문제를 풀고 싶은데, 한정된 데이터에 대해서 다양한 파라미터 설정을 통해 학습을 했다면 여기서는 라벨을 모르는 데이터를 학습에 같이 활용하는 것. Visual Representation을 비지도 학습을 통해 도움을 준다.
또, 학습 데이터 확장을 통한 방법도 이 중 하나로 알려져있다.

Multi-Layer Perceptron

NN의 시작은 인간의 뇌를 모방하려고 시작했지만 지금의 딥러닝의 작동 원리는 인간의 뇌를 모방했다기에는 어폐가 있다.

좀 더 정확한 정의는 다음과 같다.

Neural Networks are function approximators that stack affine transformations followed by nonlinear transformations.

GoogLeNet을 예로 들면, Convolution이라는 Linear한 연산이 Activation 함수를 거쳐서 나오는 형태의 function approximator이다.

NN에서 행렬이란 두 개의 벡터 스페이스 사이의 변환이라고 생각하는 것이 좋다. 즉, x라는 입력을 y로 변환시키는 것.

표현력을 최대화하기 위해 선형 결합을 반복하는 것이 아니라 각 Layer사이에 다양한 활성화함수를 통해 Nonlinear 변환을 거친다.

  • 대표적인 활성화 함수
    - ReLU
    • Sigmoid
    • tanh

어떤 활성화 함수가 좋을지는 경우에 따라 다르기 때문에 모르는 것이다.

Beyond Linear Neural Networks


존재성만 보장하지, 내 NN이 만족하는 지는 아무도 모른다.

MLP의 기본 구조

  • Loss Function
    Regression Task에서는 MSE를 많이 쓴다. 그러나 항상 이 값만이 목적이 되는 것은 아니다.
    Classification Task에서는 CE를 많이 쓴다. 분류문제의 아웃풋은 원핫벡터로 표현된다.
    Probability Task에서는 MLE를 많이 사용한다. 확률값을 원할 때.

Further Question

분류, 회귀, 확률 문제에 대한 Loss함수 클래스는 Pytorch에서 어떻게 구현되어있을까?

torch docs 참고

왜 머신러닝에서 loss 함수로 분류에 CE, 회귀에 MSE를 사용할까? (멘토님 심화 주제)

"거의 모든 loss 함수는 타겟 변수에 대한 분포 가정에서 유도된 MLE를 사용합니다. 즉, cross entropy, MSE 등 loss 함수가 특정 분포의 MLE와 연관 있다는 거죠. 다음 링크의 글을 읽고 위 질문에 대한 토론을 해보면 좋을 것 같습니다:)
총 3편이고, 심화 주제인 만큼 난이도가 좀 있습니다. 복잡한 수식은 건너뛰면서 내용을 이해해보세요, 특히 2편 수식은 좀 더 건너뛰어도 됩니다."

심화 주제 정리

profile
Today is the day

0개의 댓글