Study/ML&DL

[오승상 딥러닝 강의] 4, 5. Gradient Descent

p-jiho 2025. 7. 7. 00:28

 

Gradient Descent란? 

Gradient Descent는 Deep Learning에서 기본으로 쓰이고 있는 방법으로 손실함수를 최소화할 때 쓰인다.

 

실제 손실함수를 그래프로 그리면 아래와 같이 그릴 수 있다. [1]

 

 만약 우리가 초기에 설정한 파라미터에 따른 손실함수 값이 빨간색 부분에 있는 검은색 점이라고 가정해보자. 우리는 파라미터를 어떻게 설정하느냐에 따라 검은색 점이 위로 갈수도 아래로 갈수도 옆으로 갈수도 있다. 어떻게 가던 파란색 부분 즉, 손실함수의 값이 가장 작은 쪽으로 검은색 점이 이동하도록 파라미터를 설정해야한다.

 파란색 부분으로 이동하기 위해 손실함수를 미분하여 기울기를 구한다. 그 기울기의 반대방향 즉, 기울기가 작아지는 방향으로 파라미터를 이동한다. 그렇게 조금씩 조금씩 움직이다보면 손실함수의 값이 가장 작은 부분에 도달할 수 있다. 기울기가 작아지는 쪽으로 이동하게 되므로 Gradient Descent 즉, 경사하강법이라고 한다.

 

Batch 란?

 Gradient Descent를 제대로 알기 전에 Batch란 무엇인가를 알아야한다. Batch란 1번 Parameter를 업데이트할 때 사용되는 데이터를 의미한다.

Batch가 필요한 이유는 Forward pass를 할 때 모든 Train Data를 사용해 학습을 할 수 없다. 그 이유는 Train Data가 크다면 Cost를 계산하기 너무 크기 때문이다. 그러므로 일부 Data를 사용해 Cost를 계산하고 그 결과에 따라 Parameter를 Update한다. 물론 Train Data가 작으면 Batch를 사용하지 않아도 되는데 이 강의의 Chapter 1에서 말했듯이 Train Data가 작으면 애초에 DL Model로는 잘 학습되지 않을 것이다.

 Batch를 이해하기 위해서는 Batch Size, epoch와 iteration을 빼놓을 수 없다. Batch Size는 Single Batch에서 사용되는 데이터 양을 의미한다. 1 Epoch는 전체 데이터를 1번 Training 하는 것을 의미한다. iteration은 1 Epoch를 돌릴 때 실행되는 학습 횟수이다.

 예를들어 보면 만약 Train Data가 1000개이고 Batch size가 100이라고 하면 Data Set은 10개가 된다. 그러므로 Parameter 업데이트는 10번이 될 것이다. 이때 iteration은 10이라고 한다. 그리고 Parameter를 10번 업데이트를 하게되면 1 epoch를 돌렸다고 한다.

 예시를 보면 알다시피 Batch Size와 Epoch 수는 사람이 정할 수 있다. 하지만 iteration은 Batch Size와 Data 크기에 따라 자동으로 결정이 된다. 이때 Batch Size와 Epoch를 Hyper Parameter라고 한다. 이 Hyper Parameter를 여러가지 설정하며 반복적으로 Test를 하여 Model Test를 한다.

 

Gradient Descent의 종류

 Gradient Descent 방법은 총 3가지가 있다.

 1. Batch Gradient Descent

    : Batch Size = 전체 Train Data 양으로 설정. 즉, iteration이 1로 1 Epoch 당 Parameter Update 1번하는 것

 2. Stochastic Gradient Descent(SGD)

    : Batch Size = 1으로 설정. 즉, iteration이 전체 Train Data 양과 같은 것

 3. Minibatch ramdient Descent

   : Batch Size를 적당한 값으로 잡아주는 것.

 

SGD는 역사가 굉장히 오래된 방법이다. 그러므로 우리는 MiniBatch를 Default로 사용하지만 이를 그냥 SGD라고 부르기도 한다.

 

 

Gradient Descent의 종류의 장단점

 Gradient Descent 방법들의 장단점을 알아보자.

 

 1. Batch Gradient Descent

     장점

     1) Cost surface가 convex인 경우 잘 찾아간다. 즉, 손실함수가 단순 볼록함수인 경우는 Local Minimum이 없고 Global Mininum만 있으므로 국소값을 찾는 과정이 안정적이고 쉽다.

     2) Noise에 대해 Robust하다. 즉, 전체 Data를 학습에 사용하기 때문에 Noise의 영향을 덜 받는다.

 

     단점

     1) Training을 할 때 Memory Capacity가 커야한다.

     2) 데이터가 너무 큰 경우 학습이 제대로 이루어지지 않을 수 있다.

     3) Training 속도가 느리다.

     4) Online Learning 즉, 실시간으로 데이터를 받아서 학습하는 경우에는 적합하지 않다.

 

2. Stochastic Gradient Descent

     장점

     1) 속도가 아주 빠르다.

     2) Online Learninig이 가능하다.

 

     단점

     1) Update할 때 Variance가 크다. 데이터 하나하나에 민감하여 Global Minimum으로 잘 수렴하지 못할 수 있다. 이것을 SGD fluctuation이라고 한다.

 

3. Minibatch ramdient Descent

     장점

     1) BGD보다 빠르며 SGD보다 정답에 가깝게 수렴하여 가장 효율적인 방법이다.

     2) Online Learninig이 가능하다.

     3) 전체 데이터의 근사치를 구하므로 Variance가 줄어든다.

 

     단점

     1) Batch Size가 Hyper Parameter이다. 조정을 위해서는 많은 시간이 소요될 수 있다.

 

MGD에서는 Batch Size를 설정하는 것만큼 데이터를 뽑을 때 Random으로 뽑는 것이 중요하다. 그렇지 못하면 Updata를 할 때마다 어떤 데이터는 항상 나오고 어떤 데이터는 한 번도 나오지 않을 수 있으므로 편향적이게 학습하게 될 수 있다. 그러므로 Batch size만큼 Group을 미리 나누어놓고 학습을 한다.

 

 

 

[출처]

[1] https://mri-q.com/back-propagation.html