티스토리 뷰

Motivation

  • 앞에서 어떻게 값을 계산하는지를 알아냈는데, 그러면 그 값을 어찌 활용해야하는 지에 대해서도 생각해볼 필요가 있음
  • 딥러닝은 결국 Data들에서 Feature들 간의 특징을 찾아 값을 내는 과정, 즉 이미 주어진 것들에 대해 정답을 비교하여 계산할 필요가 있음 ⇒ 정답과 나의 답을 검증하는 과정이 필요함
  • 이 정답과 나의 답의 차이를 Loss(Cost)라고 하고, 이것들을 이용하여 Weight들을 업데이트 하는 과정을 Backpropagation, 그리고 그 업데이트를 어떤 주기로 진행할 것인지가 Batch, Batch size에 따라 업데이트의 종류(Minibatch, SGD, Batch)로 나뉜다.

Cost

  • Network와 Input, 그에 상응하는 Output이 주어지면 우리는 Estimate output을 구할 수 있고, 진짜 답과 그 답의 차이인 Cost도 구할 수 있음
  • 일반적으로 continuous한 label일 경우(Regression) 거리를 계산하는 MSE를 활용하고, Discrete할 경우 Cross Entropy를 사용하는 경우가 대부분이다.
  • 이산적인(실수값이 아닌 분류를 할 때 이용하는 경우) 답을 낼 경우 답에 대해서만 11을 뱉어내는 one-hot encoding을 한다.
    • 항상은 아니고, Word Embedding 같은 경우엔 답이 아님에도 연관성을 생각하여 답이 아님에도 값을 일부 할당해준다.
  • ii번째 input data를 xix^i, ii번째 predict output을 y^i\hat{y}^i, ii번째 target output을 yiy^i로 명명한다.
  • 이때, ii번째 data들에서 cost를 Li(θ)L^i{\left(\theta\right)}이고, 이들을 모든 cost들에 대해 합치면 Total cost이다.
  • Total Cost의 정확한 모양을 알 수는 없기 때문에 모든 것에서 최적을 이루는 weight들에 대해서 알 수가 없음
    • 이 외에도 Convex한 모양이면 괜찮으나, 그렇지 않으면 Local minimum problem 등에 빠질 수도 있음

Gradient Descent

  • f : RRf\ :\ \R\rightarrow\R일 경우, 미분 계수 f(x0)f'(x_0)을 통해 이 지점 x=x0x=x_0에서 어디로 가는지, 어느 정도로 감소하는지를 알 수 있다.
  • 과연, f : R Rf\ :\ \R\rightarrow\ \R이 아니라 f : RkRf\ :\ \R^k\rightarrow\R에도 이러한 요소가 있을까? ⇒ Gradient!
  • Gradient는 First-order detrivation을 통해 function의 최솟값을 구하는 것!
    • θ C(θt)=[C(θt)w1C(θt)w2]\nabla_\theta\ C\left(\theta_t\right)=\begin{bmatrix}\dfrac{\partial C\left(\theta^t\right)}{\partial w_1}\\\dfrac{\partial C\left(\theta^t\right)}{\partial w_2}\\\vdots\end{bmatrix}은 앞의 미분계수처럼 각 지점에서의 방향과 증가율을 의미한다.
  • 이때 우리의 목표는 코스트를 감소하는 것이고 그레디언트는 코스트가 증가하는 방향으로 가고 있기 때문에 그레디언트의 반대쪽으로 감소시켜야함! 즉, Gradient Descent가 의미하는 바는
θ C(θt)=[C(θt)w1C(θt)w2]-\nabla_\theta\ C\left(\theta_t\right)=-\begin{bmatrix}\dfrac{\partial C\left(\theta^t\right)}{\partial w_1}\\\dfrac{\partial C\left(\theta^t\right)}{\partial w_2}\\\vdots\end{bmatrix}

Gradient Descent variants

  • Gradient를 어느 주기로 업데이트를 하느냐에 따라 Batch Gradient Descent, Stochastic Gradient Descent, Minibatch Gradient Descent 총 3가지가 존재한다.
  • 용어들에 대해서 먼저 알아보자.
  1. Batch
    • 위의 Gradient Descent를 한번 시행할만한 데이터의 수
    • 즉, Batch size가 30이면 30개의 트레이닝 데이터를 돌린 이후 한 번의 파라미터 업데이트를 진행한다.
  1. Epoch
    • 앞의 Batch size가 일부였다면, Epoch는 전체를 의미한다.
    • 즉, Epoch number은 전체의 데이터를 몇 번 학습했는지를 의미한다.
  1. Iteration
    • 앞의 2개와 다르게, 이는 Batch와 Epoch가 정해지면 자동으로 정해지는 요소이다.
    • 총 몇 번의 Batch를 돌렸는지, 즉 몇 번의 Parameter Update가 이루어졌는지를 의미하는 바이다.
  • 앞의 두 개는 우리가 조정할 수 있는 요소로, Hyperparameter라 하고, 이걸 어떻게 정하느냐에 따라 모델의 성능이 크게 좌우된다.
  • 추가적으로 어느 주기로 업데이트를 하느냐에 따라 굉장히 많이 업데이트를 할 수도, 굉장히 적게 할 수도 있으므로 그냥 그레디언트로 학습을 할 경우

대표적인 Gradient Descent 3가지를 알아보자.

  1. Batch Gradient Descent
    • 앞에서 Batch 같은 경우 한 번의 Gradient Descent를 돌릴 때의 데이터 수를 의미했지만, 실제로 이렇게 수행하는 것은 다소 다른 Gradient Dscent임. 즉, 이름을 헷갈리면 안됨
    • BGD는 한 Epoch(전체 데이터)가 지난 후에 Parameter들을 학습하는 것을 의미
    • 각 Epoch마다 식을 업데이트하므로, 중간 중간에 튀어나와 욌는 outlier들에 대해 굉장히 둔감하게 반응한다는 단점이 있음
    • 이 외에도 Convex한 Surface에 대해서는 반드시 최적의 답을 찾아간다는 보장이 있음(전체에 대해 학습하기 때문이고, Convex하면 이가 성립함)
    • 다만, 전체 데이터셋에 대한 output 및 layer들을 들고 있어야 하므로 메모리가 굉장히 많이 필요하고, 너무 느림(Data set이 너무 큼)
    • 또한, 상황에 맞게 유동적인 learning이 힘듦(Traning set이 추가된다는 등)
  1. Stochastic Gradient Descent
    • 앞에서는 전체에 대해서 했다면, 이번엔 각 데이터마다 한다.
    • 한번 전체를 시행할 때마다 하므로 계산량이 굉장히 적고, 이에 따라 빠르다는 장점이 있음
    • 다만, 각 데이터마다 하기 때문에 Outlier들에 굉장히 민감하고, 최적을 찾아가는 과정이 굉장히 불안정함 (SGD Fluctuation)
  1. Minibatch gradient descent
    • Batch의 size를 정해놓고, 그 Batch size만큼 traning을 했으면 parameter update를 수행하는 방식
    • 이때 Bath 단위를 Minibatch라고 하고, 많은 epoch동안 이 과정을 반복한다.
    • Batch를 어떻게 설정하느냐에 따라 다르지만 일반적으로 굉장히 빠르며, outlier들에 대해서도 민감하게 반응하지는 않는다.
    • 다만, 미니배치 사이즈도 우리가 설정해야주어야 하는 Hyperparameter에 속한다.


Uploaded by N2T

'개인 공부' 카테고리의 다른 글

6. Universal Approximation Theorem  (0) 2022.07.16
5. Backpropagation  (0) 2022.07.16
3. Multilayer perceptron & Forward Pass  (0) 2022.07.16
2. Perceptron & XOR Problem  (0) 2022.07.16
1. Machine learning & Deep learning overall  (0) 2022.07.16
댓글
최근에 올라온 글
공지사항
Total
Today
Yesterday
최근에 달린 댓글
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함