Deep Learning 용어

Deep Learning 기본 용어

Data

  • Model이 학습할 때 활용할 것
  • Train Data : 학습 때 활용하는 Data
    Test Data : Model의 정확성을 평가하기 위해 활용하는 Data
  • 이미지 Data 처리 방법
    • Classification : (이미지 전체에 대한) 분류
    • Semantic Segmentation : 이미지 픽셀이 의미하는 것을 찾는 문제
    • Detection : 이미지 안의 물체를 찾아 Bounding Box를 찾고, 해당 물체를 분류
    • Pose Estimation : 물체의 3차원 Skeleton 정보
    • Visual QnA : 이미지가 주어지고, 질문이 주어질 때 답을 주는 것

Model

  • Data를 변화시켜 내가 원하는 결과를 반환하게 만들어주는 것
    • y = f(x)라는 수식이 존재하고, 내가 y라는 값을 얻기를 원할 때 x가 Data, f라는 함수가 Model이라고 할 수 있다.

Loss Function

  • Model의 학습을 위해 활용하는 것
  • Model에서 나온 예측값과 실제 값의 차이를 나타내는 함수
  • Regression Task(회귀)에서의 Loss Function
    • Regression Task : 데이터의 실제양과 모델의 예측치 사이의 차이가 평균으로 회귀하는 것
    • 회귀 모델링 : 오차의 합이 최소가 되도록 만드는 것
      MSE = 1Ni=1Nd=1N(yid  y^id)MSE\ =\ \frac{1}{N}\sum _{i=1}^N\sum _{d=1}^N\left({y}_i^d\ -\ \hat{y}_i^d\right)
    • yidy_i^{d}
  • Classification Task(분류)에서의 Loss Function
    CE = 1Ni=1Nd=1Nyid log( y^id)CE\ =\ -\frac{1}{N}\sum _{i=1}^N\sum _{d=1}^N{y}_i^d\ \log \left(\ \hat{y}_i^d\right)
    • yidy_i^{d}

Algorithm

  • Loss값을 최소화하건, Generalization을 위해 활용하는 방법들

Deep Learning 핵심 용어

Optimization(최적화)

Generalization(일반화)

  • DL의 목표 : Loss를 줄임과 동시에 일반화 성능을 높이는 것
  • Generalization Gap : Test Error와 Train Error의 차이
  • 일반화가 잘 되었다 \neq

Overfitting과 Underfitting

  • Overfitting : Model이 학습 데이터에 너무 적합하게 만들어져 Test Error와의 Gap 발생
  • Underfitting : 학습을 너무 적게 수행하여 Error 자체가 높음
  • Overfitting, Underfitting, Generalization을 표현한 그래프

Cross Validation

  • 개념 : Train Data를 임의로 쪼개 Train Data + Test Data로 생성하는 것
<설명>
우리에게 주어진 Data는 Test Data(Validation Data)와 Train Data이다.
Model을 평가할 때는 Test Data를 활용할 수 없다.
Test Data에 Labeling이 되어 있지 않아 예측치와 비교할 수 있는 Label이 
존재하지 않는 Case가 있다는 것도 이유겠지만, 애초에 Test Data를 학습에 
포함시키는 것은 그 자체로 Cheating이다.

따라서, 우리는 Train Data를 활용하여 내가 설정한 Learning Rate 등이 
최적의 Model을 도출해 내는지 유추할 필요가 있다.
이를 위해 활용하는 것이 Cross Validation이다.
  • Train Data를 쪼개는 방법 : https://m.blog.naver.com/ckdgus1433/221599517834
    • Holdout method
      • Train Set을 임의의 비율로 쪼개 Train Set과 Test set으로 분할하여 활용
      • 한 번 쪼갠 Data를 모든 Epoch에서 동일하게 활용
      • train : test = 9:1 또는 7:3 비율로 자주 활용
      • 계산 시간에 대한 부담이 적지만 Overfitting의 위험성이 높아짐
    • k-fold cross validation
      • 데이터를 K개의 Data Fold로 분할한 이후, 1번의 Epoch을 진행 할 때 마다 총 K개의 묶음 ({(K-1) Train Data, 1개 Test Data})을 모두 활용하여 Accuracy를 계산한 이후, 평균값을 활용하여 학습을 진행
    • Leave-p-out cross Validation
      • 전체 데이터를 K개로 나누고, 이 중에서 p개의 Sample을 선택하여 모델 검증에서 활용하는 방법
      • 얻을 수 있는 묶음이 nCpn C p 이므로, p에 따라 묶음의 개수가 너무 많아져 계산 시간에 대한 부담이 커질 수 있다.
      • k-fold는 p=1인 상황이다.
    • Stratified k-fold cross validation
      • 주로 Classification 문제에서 활용됨
      • Label의 분포가 각 클래스별로 불균형을 이룰 때 유용하게 활용됨
      • Label의 분포가 불균형한 상황에서 모든 Data Fold의 Label 분포를 최대한 실제 Data의 Label 분포와 비슷하게 하여 쪼개어 k-fold를 진행
  • Cross Validation 방법을 활용하여 HyperParameter 값을 결정하고, 이후 Train Data를 활용하여 Parameter를 학습시키는 방법 활용
    • HyperParmaeter : 내가 변경해 줄 수 있는 값들(Learning Rate 등)
    • Parameter : 학습을 통해 최적화 시키고 싶은 값
      • 컴퓨터 계산을 통해 최적화 됨
  • 장점
    • 특정 평가 데이터 셋에 overfit 되는 것을 방지할 수 있음
      • 좀 더 일반화된 모델을 만들 수 있음
    • 모든 데이터 셋을 훈련에 활용할 수 있음
      • 정확도를 향상시킬 수 있음
      • 데이터 부족으로 인한 underfitting을 방지할 수 있음
  • 단점
    • Iteration 횟수가 많기 때문에 모델 훈련/평가 시간이 오래 걸린다.

Bias and Variance

  • Bias : 평균적으로 봤을 때 Data가 목표치에 가까우면 Bias가 낮음
  • Variance : Target이 모여 있을 경우 Variance가 낮음
    • Bias와 Variance가 모두 낮을수록 좋음
  • Bias and Variance Tradeoff
<설명>
위 식에서 E[θ']이 커지면 Variance가 작아지고, Bias가 커지기 때문에 
서로 Trade off 관계에 존재함을 알 수 있다

그렇다면 어떻게 MSE는 Loss를 줄일 수 있을까? 
Var과 Bias는 Tradeoff 관계인데 말이다

Train을 통해 MSE를 구할 때는 Bias나 Variance 한 쪽을 보고 학습하는 것이 아닌 
예측치를 활용하기 때문에 Loss를 줄일 수 있다. 
즉, train을 위한 MSE를 구할 때는 Var이나 Bias 값이 영향을 끼치지 못한다. 
어디까지나 "Loss function"으로 구한 MSE 값이 작아지고 이에 의거하여 
Var과 Bias값이 바뀌는 것이지, Var이나 Bias 값이 바뀌어
MSE값이 변경되는 것은 아니다

Bias-Variance Tradeoff에 의하면 최적해에서는 Bias와 Variance값이 유사할 것이다

Generalization Gap이 생기는 이유도 예측이 되는 식이다. 
Loss 값은 최소를 향하고 결국 최솟값에 도달할 것이다. 
그런데, Var과 Bias는 계속해서 Update 될 것이다.
따라서, Variance가 높아지고 이에 따라 정확도가 떨어지게 되는 것이다

Bootstrapping

  • 통계학에서의 의미 : 가설 검증을 하거나 Metric을 계산하기 전 Random Sampling을 적용하는 방법
    • (ex) 집단 전체 값으로 가설 검증을 하지 않고, Random하게 100개를 뽑은 값으로 가설을 검증
  • ML에서의 Bootstrapping : Random Sampling을 통해 Training Data를 늘리는 방법
    • 학습 데이터의 일부분을 여러 개 묶음으로 만들고, 만든 Data Set을 통해 여러 개 Model을 만들어 모든 Model을 최종적으로 활용하는 것
  • Bagging
    • Data Set을 랜덤하게 여러 개 만들고 여러 개의 Data Set을 통해 각각의 Model을 생성. 이후 Model의 Output의 평균을 활용하는 Parallel 방식
    • 회귀 분석 : 평균 활용, 분류 : Voting 활용
    • 앙상블 유형 중 하나
    • 앙상블 : https://continuous-development.tistory.com/174
  • Boosting
    • 학습 Data를 Sequential 하게 바라보며 학습하는 방법
    • Model을 하나 생성하고, Data 중 Model과 Loss가 크거나 틀린 Data들로만 새로운 Data Set을 생성한다. 이후 새로 생성했던 Data Set을 다시 Model에 통과시켜 재학습시키고, 이 과정에서 틀린 Data들을 모아 새로운 Data Set을 만드는 방식의 Sequential 방식
    • Weak Learner : 오차가 발생한 Data Set으로 만든 Model
    • Strong Learner : Weak Learner를 계속 학습시켜 최종적으로 얻어진 정확도가 높아진 Model
    • Boosting에 대한 추가 설명 : https://hyunlee103.tistory.com/25

Gradient Descent Method


Gradient Descent Method(Optimizer)의 발전

공부할 때 활용한 사이트들

Stochastic Gradient Method

Wt+1=WtlrgtW_{t+1}=W_t-lr*g_t
  • 수식
    • lr : 학습율
    • gtg_t
  • 문제점 : 적절한 Learning Rate를 구하는 것이 어려움

Momentum

at+1=βat+gtWt+1=Wtlrat+1a_{t+1}=\beta a_t+g_t\newline W_{t+1}=W_t-lr*a_{t+1}
  • 수식
    • ata_t
    • lr : 학습율
    • β\beta : Momentum
  • 개념 : Gradient의 관성을 이용하는 방법
    • 이전에 특정 방향으로 Gradient가 흘렀다면, 다른 방향으로 이동하더라도 이전에 이동했던 방향성을 조금 활용하는 기법
    • 먼저 Accumulation을 계산한 뒤, 계산한 Accumulation을 활용하여 다음 Parameter를 구함

Nesterov Accelerated Gradient

at+1=βat+L(Wtlrβat)Wt+1=Wtlrat+1a_{t+1}=\beta a_t+∇L(W_t-lr*\beta a_t)\newline W_{t+1}=W_t-lr*a_{t+1}
  • 수식
    • ata_t
    • lr : 학습율
    • β\beta : Momentum
    • L(Wtlrβat)∇L(W_t - lr * \beta a_t)
  • 특징 : Lookahead Gradient의 활용
  • 개념 : 현재 주어진 좌표에서 Gradient 방향으로 한 번 이동한 뒤, 이동한 지점에서의 Gradient를 활용하는 방법
<도입이유>
Momentum은 Local Minimum 기준 그래프 좌우를 오가는 계산이 될 수도 있어 
Local Minimal을 기준으로 양 끝을 이동하며 Converging 하지 못하는 Case 발생한다

Nestrov Accelerated Gradient는 Local Minimal을 통과하지 않으므로 
Converging을 못하는 Case를 없앨 수 있어 이 방법이 고안되었다.

Adagrad

Wt+1=WtlrGt+egtW_{t+1}=W_t-\frac{lr}{\sqrt{G_t+e}}g_t
  • 수식
    • GtG_t
    • e : 분모가 0이 되지 않도록 만드는 상수
  • 개념 : Parameter 중 값의 변화가 큰 것에 대해서는 Step size를 작게 하여 근사치로 빠르게 수렴하게 만들고, 값의 변화가 적은 것에 대해서는 Step Size를 크게하여 세밀하게 겂의 변화를 확인함
  • 단점 : Iterator가 많아질 수록 수식의 분모값이 무한대로 가기 때문에 학습이 멈춤

Adadelta

Gt=γGt1+(1γ)gt2Wt+1=WtHt1+eGt+egtHt=γHt1+(1γ)(Wt)2G_t=\gamma G_{t-1}+(1-\gamma )g_t^2\newline W_{t+1}=W_t-\frac{\sqrt{H_{t-1}+e}}{\sqrt{G_t+e}}g_t\newline H_t=\gamma H_{t-1}+(1-\gamma )(△W_t)^2
  • 수식
    • GtG_t
    • e : 분모가 0이 되지 않도록 만드는 상수
  • 도입 이유 : Adagrad에서 GtG_t
  • Learning Rate가 존재하지 않음
    • 설정할 수 있는 Parameter가 거의 없으므로 잘 활용되지 않음

RmSprop

Gt=γGt1+(1γ)gt2Wt+1=WtlrGt+egtG_t=\gamma G_{t-1}+(1-\gamma )g_t^2\newline W_{t+1}=W_t-\frac{lr}{\sqrt{G_t+e}}g_t
  • 수식
    • GtG_t
    • lr : (글로벌) 학습율
  • Adagrad + EMA Of gradient Squares

Adam(Adaptive Moment Estimation)

mt=β1mt1+(1β1)gtvt=β2vt1+(1β2)gt2Wt+1=Wtlrvt+e1β2t1β1tmtm_t=\beta _1m_{t-1}+(1-\beta _1)g_t\newline v_t=\beta _2v_{t-1}+(1-\beta _2)g_t^2\newline W_{t+1}=W_t-\frac{lr}{\sqrt{v_t+e}}\frac{\sqrt{1-\beta _2^t}}{1-\beta _1^t}m_t
  • 수식
    • mtm_t
    • vtv_t
    • lr : 학습율
  • 개념 : Adadelta의 Gradient 제곱을 지수적으로 감소시키는 가중 평균 적용 & Gradient 자체를 지수적으로 감소시키는 가중 평균 적용
  • 1차 및 2차 모멘트 추정치를 계산함으로써 Bias를 방해함
    • Variance를 낮추기 위한 방법
    • 모멘트 추정치를 활용한 식 도출 과정

사진 출처
https://mj-lahong.tistory.com/58
https://www.listendata.com/2017/02/bias-variance-tradeoff.html

좋은 웹페이지 즐겨찾기