GOAL
- 딥러닝이 무엇인지 이해하기
- 딥러닝이 등장한 역사 배경과 발전 과정 살펴보기
- 2012년부터 최근까지 이어지는 딥러닝 연구 패러다임 살펴보기
- 딥러닝 관점에서 Data, Model, Loss, Optimization algorithms 에 대해 설명
Deep Learning 이란, Neural Network 를 활용하여 data 를 이용해 대상이 되는 것을 학습하는 것
data, model, loss, algorithm 관점에서 바라보면,
새로운 연구와 논문을 볼 때 이전 연구에 비해 어떤 장점과 contribution 이 있는지 이해하기 쉽다.
풀고자 하는 문제에 종속됨
Data depend on the type of the problem to solve
예를 들어
동일한 데이터와 태스크가 주어지더라도 어떤 모델을 사용하는지에 따라 성능이 다를 수 있다.
모델과 데이터가 정해졌을 때, weight 의 각각 parameter 들을 어떻게 업데이트할지 기준이 되는 함수를 결정
The loss function is a proxy of what we want to achieve
예를 들어
Loss function 은 우리 목적의 proxy(근사치)
에 불과하다.
예를 들어
왜 이 loss function 을 사용하는지와 loss function 의 값이 줄어드는 것이 풀고자 하는 문제를 어떻게 푸는지를 이해하는 것이 중요하다.
Data, model 그리고 loss function 이 정해졌을 때 network 를 어떻게 줄일지에 대한 것
Optimation 방법론들의 특성을 이해하는 것이 중요
학습에 사용되지 않은 다른 데이터를 사용할 때도 잘 동작하도록 하기 위해
Column 1 | Column 2 | Column 3 | Column 4 |
---|---|---|---|
2012 | AlexNet | 224x224 이미지를 분류하는 것이 목적 | |
2013 | DQN | 강화학습 방법론 | |
2014 | Encoder/Decoder, Adam |
| Encoder/Decoder : Input Sequence 를 output sequence 로 변환 Adam : Hyper parameter tuning 의 부담을 줄여준 optimizer |
2015 | Gan,ResNet |
| GAN : Network 가 Generator 와 Discriminator를 이용해 학습 ResNet : layer 를 깊게 쌓아도 test dat a 에서 좋은 성능을 낼 수 있게 됨 |
2017 | Transformer | 다른 구조의 방법론(RNN 등)들을 대체 attention, multi-head attention 을 잘 이해해보자. | |
2018 | BERT (Fine Tuned NLP model ) | 대량의 데이터로 pre-train 한 뒤 내 데이터로 fine tune | |
2019 | Big Language Models(GPT-X) | Fine tuning 을 통해서 여러 Sequence model( 문장, 프로그램, 표 등)을 만들 수 있다. 많은 parameter 가 특징 | |
2020 | Self-Supervised Learning | 한정된 학습 데이터가 주어졌을 때 labeling 되지 않은 데이터를 학습에 함께 씀 도메인 지식을 바탕으로 데이터셋을 추가로 만들어서 데이터셋을 뻥튀기 하는 방법 ( self-supervised data sampling ) |
GOAL
- 신경망(Neural Networks) 의 정의와 Deep Neural Networks 에 대한 이해
- Linear neural networks 의 예시로 Data, Model, Loss, Optimizatoin algorithm 정의
- Multi-layer perceptron 와 같이 더 깊은 네트워크는 어떻게 구성하는지 학습
- Deep Learning 에서
학습
이 가지는 의미에 대해 설명- MLP 실습
- MLP 과제
1. Regression Task와 Classification Task의 loss function이 다른 이유는 무엇인가요?
- Regression Task 은 n차원 input 과 output 을 이용하여 서로 간의 관계성을 찾아나가는 문제이다. 예측값과 실제값을 비교하며 차이를 줄여나가는 방법을 사용한다.
- Classification 은 어떤 대상을 n 개의 분류 중하나로 특정하는 문제이다. input 이 주어졌을 때 가장 확률이 높은 카테고리로 분류하는 방법을 사용한다.
2. Regression Task, Classification Task, Probabilistic Task의 Loss 함수(or 클래스)는 Pytorch에서 어떻게 구현이 되어있을까요? ( 참고 페이지: [pytorch official docs](https://pytorch.org/docs/stable/nn.html#loss-functions) )
Affine transformation 에 nonlinear transformation(activation function)이 반복적으로 일어나는 function approximators 로 정의하기도 함
목적 : 1차원인 입력과 출력의 관계를 나타내는 모델(함수)을 찾는 것
하지만
데이터의 수 , 모델의 선형성, convex function 이라는 많은 제약 조건이 존재backpropagation
: parameter 가 어느 방향으로 움직였을 때, loss 가 줄어드는지 찾아 그 방향으로 parameter 학습loss function 을 W에 대해 편미분한 값
, loss function을 b에 대해 편미분한 값
을 구해서 특정 step size 를 곱해 빼줌으로써 업데이트 행렬
( 2개의 vector space 또는 서로 다른 차원 사이의 선형 변환 ) 로 표현할 수 있다.
선형 변환만 쌓으면 결국 선형 변환으로 귀결되기 때문에 아무리 쌓아도 1단짜리 레이어와 같아진다.
Nonlinear transform (activation function) 으로 표현력을 증대해줌
왜 이 loss function 을 사용하는지와 loss function 의 값이 줄어드는 것이 풀고자 하는 문제를 어떻게 푸는지를 이해하는 것이 중요하다.
예를 들어
기쁨 20%, 슬픔 30%, 환호 50% GOAL
용어의 명확한 컨셉을 이해하자 !
- Optimization 과 관련된 용어 이해
- 다양한 최적화 기법(gradient descent) 에 대한 학습
- Regularization 방법 학습
Further Questions
- Cross-Validation을 하기 위해서는 어떤 방법들이 존재할까요?
- Time series의 경우 일반적인 K-fold CV를 사용해도 될까요?
MORE
찾고자 하는 parametre 를 loss function 에 대해 미분한 편미분값을 이용하여 parameter update local minimum을 찾아가는 과정
- Generalization
- Under-fitting vs. over-fitting
- Cross validation
- Bias-variance tradeoff
- Bootstrapping
- Bagging and boosting
학습 데이터로 평가한 성능과 테스트 데이터로 평가한 성능이 얼마나 차이가 있는지에 대한 지표
참고
Generalization 이 좋다는 것이 성능이 좋다는 것은 아님학습 데이터를 hit 하지 못하는 under-fitting
과 학습 데이터에 과적합되는 over-fitting
training data 와 validation data 를 나눠서 제공하여 학습에 사용되지 않은 validation dataset 에서 성능을 얼만큼 내는지 확인할 수 있다.
예를 들어
10만개의 데이터셋을 5개로 나누어 {1,2,3,4} 를 training 으로 {5}를 validation 으로 사용학습
데이터를 사용Variance
: 어떤 입력을 넣었을 때 출력이 얼마나 일관적으로 나오는지Bias
: 평균적으로 봤을 때 내가 원하는 값과 얼마나 근사한지입력 데이터에 noise
가 껴 있다고 가정했을 때, 최소화 대상인 cost 는 bias
, variance
그리고 noise
의 합성으로 볼 수 있다. ( := cost 를 minimize 할 때 세 개의 요소들은 tradeoff 관계이다. )
고정된 학습 데이터에서 sub sampling 을 이용하여 여러 모델을 만들어서 지표로 사용
Bagging
( Bootstrapping aggregating)
Enssemble
)Boosting
Stochastic gradient descent
- 하나의 sample 을 통해서 gradient 를 업데이트 하는 것
- Update with the gradient computed from a single sample
★Mini-batch gradient descent
- 지정한 batch size 만큼의 sample 을 통해서 gradient 를 구해서 업데이트 하는 방법
- 일반적으로 batch-size 가 작을수록 좋은 generalization 성능을 보인다.
- Batch-size Matters
- Update with the gradient computed from a subset of data
참고
On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima
- Batch-size 가 작을수록 좋은 generalization 성능을 보임을 실험적으로 증명
- 큰 batch-size 를 사용하기 위한 방법 소개
Batch gradient descent
- 한 번에 모든 데이터를 다 사용해서 gradient 의 평균을 이용해 업데이트 하는 방법
- Update with the gradient computed from the whole data
Note
각각의 optimization 이 어떤 성질을 가지고 있는지, 왜 제안되었는지 이해해보자.
- Stochastic gradient descent
gradient 를 다음 gradient 계산에 전달하여 local minimum 탐색을 도움
- Momentum
- Nesterov accelerated gradient
- Adagrad
- Adadelta
- RMSprop
- Adam
단점
: learning rate 이 너무 크면 학습이 잘 되지 않고 너무 작으면 학습이 너무 느리게 된다. learning rate 을 적절히 설정하는 것이 중요현재 주어진 parameter 에서 gradient 를 계산해서 그 gradient 를 이용해 momentum을 accumulation
idea
: 이전 batch 에서 얻어진 gradient 를 활용해보자.how
: hyper parameter 와 현재 gradient 를 합친 accumulation 을 이용하여 업데이트 하는 것 단점
: local minimum 에 수렴하는 속도가 느릴 수 있다. Lookahead gradient
: 라는 현재 정보가 있을 때, 그 방향으로 이동해서 gradient 를 구하고 accumulate 해준다.
장점
: local minimum 에 조금 더 빨리 수렴하는 효과가 있음목적
: 많이 변한 parameter 는 적게 변화 시키고, 적게 변한 parameter 는 많이 변화시키려고 함단점
: 학습이 길어지면 의 값이 커져 가 갱신되지 않는 문제점이 발생한다. monotonically decreasing property
how
: 현재 timestep t 가 주어졌을 때, window size 만큼의 parameter 들에 대해 시간에 대한 gradient 제곱의 변화를 살펴본다. 이 때, 이전 window size 동안의 모든 parameter 정보를 가지고 있어야 하는 문제가 있어 Exponential Moving Average of gradient squares 를 이용한다. Adadelta 에서 살펴본 EMA of gradient squares 를 그대로 사용하고, 분모에 stepsize 를 사용한다.
Momentum 과 adaptive learning rate 방법을 적절히 섞어 사용 의 값을 잘 바꿔주는 것이 중요
Generalization 을 높이기 위한 방법론
- Early stopping
- Parameter norm penalty ( weight decay )
- Data augmentation
- Noise robustness
- Label Smoothing
- Dropout
- Bath normalization
학습 중 validatoin data set 에 대한 loss 값이 증가하는 시점에서 학습을 중단하는 방법
질문
부드러운 함수( smoothness ) 가 의미하는 것이 뭘까 ? (35분)
Neural Network parameter 가 너무 커지지 않게 network weight 을 함께 줄인다.
Deep Learning 방법론에서는 데이터가 많을수록 performance 가 높아진다.
Label preserving augmentaion
참고
MNIST dataset 에서 flip 을 해버리면 label 정보가 바뀌어버릴 수 있으므로 flip 은 하지 않는 것이 좋다. ( 예 : 6 9 )Weight 를 학습시킬 때 noise 를 추가하는 것이 성능을 높일 수 있음이 실험적으로 증명
★Data 가 상대적으로 적다면 mixup 와 cutmix 사용을 고려해보자.
두 개의 training data 를 섞는 것
Decision boundary 를 부드럽게 만들어주는 효과가 있음
두 개의 training data 를 blending 하지 않고 합쳐 놓는 방법
Neural network 에서 일정 비율의 weight 를 0으로 바꾸는 것
적용하고자 하는 layer 의 statistics를 정규화시키는 것
예를 들어
Neural network 각각의 layer가 1,000개의 parameter 를 가질 때, 1,000개의 parameter 각각에 대한 statics 가 mean zero , unit variance 가 되도록 만드는 것이 글은 커넥트 재단 Naver AI Boost Camp 교육자료를 참고했습니다.