여러가지공부/머신러닝(Machine Learning)

SGD, BGD, mini BGD란? 차이를 예제로 쉽게 이해하기(Stochastic Gradient Descent, Batch, Epoch, Iteration)

끄적끄적아무거나 2023. 4. 5. 09:06
반응형

 

목차

     

     

     

     

     

    SGD란?(Stochastic Gradient Descent)

     

    출처: Analytics

     

    출처: 부산대

     

    SGD(Stochastic Gradient Descent)는 머신 러닝에서 가장 많이 사용되는 최적화 알고리즘 중 하나입니다. 이 알고리즘은 모델의 파라미터(Parameter)를 조정하여 손실 함수 값이 가장 적게나오는 지점을 찾아서 그때의 파라미터를 사용해서 모델을 만들어 냅니다. 

    SGD의 특징은 전체 데이터셋을 한 번에 학습하는 대신 데이터셋을 무작위로 섞은 후 일정 크기 데이터 포인트에 대해 모델을 학습시킵니다. 이렇게 하면 학습이 더욱 빠르게 수렴하고, 더욱 미세한 변화도 파악할 수 있습니다.

     

    여기서 중요한 용어 3가지가 나옵니다.

     

     

    • Batch-Size(배치 사이즈)

    위 그림에서 녹색에 해당하는 부분입니다. SGD에서 데이터를 처리할 때 몇 개의 데이터 포인트를 한 번에 처리할지를 결정합니다. 이 값이 클수록 더 많은 메모리가 필요하지만, 더 높은 성능을 기대할 수 있습니다.

     

     

    • Epoch

    위 그림에서 파일을 배치해서 Update Paramter까지의 완료까지를을 1 Epoch이라고 합니다.

    SGD에서 전체 데이터셋에 대해 학습을 완료하는 단위입니다. 즉, 한 번의 epoch는 전체 데이터셋을 한 번 학습하는 것을 의미합니다.

     

     

     

    • Iteration

    SGD에서 파라미터를 한 번 업데이트하는 단위입니다. 즉, 한 번의 iteration은 batch-size 개수만큼의 데이터 포인트에 대해 모델을 학습하고 파라미터를 업데이트하는 것을 의미합니다.

     

     

     

     

     

     

    BGD와 mini BGD란?(Batch Gradient Descent)

    BGD(Batch Gradient Descent)는 Gradient Descent 알고리즘의 한 종류로, 전체 데이터셋을 한 번에 사용하여 모델의 파라미터를 업데이트하는 방법입니다. 앞서 그림에서 녹색칸이 데이터셋을 다 채운 배치라고 생각하시면 됩니다. 

     

    BGD는 SGD와 달리 모든 데이터를 사용하므로 전체 데이터셋에 대한 기울기를 계산하고 이를 사용하여 파라미터를 업데이트합니다. 이 방법은 전체 데이터셋에 대한 정보를 사용하므로 SGD보다 더욱 안정적인 방법이지만, 더 많은 계산 비용이 듭니다.

     

     

     

     

     

     

    MBGD(Mini-batch Gradient Descent)는 Gradient Descent 알고리즘의 한 종류로, 데이터셋을 작은 미니배치(mini-batch)로 나누어 각각의 미니배치에 대해 모델의 파라미터를 업데이트하는 방법입니다.

     

    MBGD는 BGD와 SGD의 장점을 결합한 방법으로, BGD보다 빠르게 학습할 수 있으면서 SGD보다 안정적인 방법입니다. 또한 미니배치의 크기를 조절하여 메모리를 효율적으로 사용할 수 있습니다.

     

     

    MBGD를 예를 들어 설명하면 아래와 같습니다.

     

    1. 데이터셋을 작은 미니배치로 나눕니다. 이때, 미니배치의 크기는 보통 32, 64, 128 등으로 지정합니다.

    2. 각 미니배치에 대해 모델의 손실 함수를 계산합니다.

    3. 손실 함수의 기울기를 계산합니다. 이를 위해서는 미니배치에 포함된 데이터 포인트에 대한 기울기를 계산해야 합니다.

    5. 기울기를 사용하여 파라미터를 업데이트합니다. 이때, 학습률(learning rate)을 사용하여 업데이트 크기를 조절할 수 있습니다.

    6. 이러한 과정을 반복하여 모델을 학습시키게 됩니다.

     

     

     

     

     

     

     

     

    SGD vs BGD vs MBGD 비교

     

    출처: 부산대

     

    위 그림은 3가지 알고리즘의 특성을 가장 쉽게 보여주는 그림이라고 생각합니다. 3차원 Gradient을 사용해서 Cost Function의 최저점을 찾는 그림입니다. 빨간점이 최저점이고 각 알고리즘이 최저점을 찾아가는 과정입니다.

     

    BGD가 가장 정확하게 찾고 SGD가 가장 정확하지 않게 찾습니다. BGD가 가장 안정적인 방법이라고 합니다. 하지만 그만큼 많은 컴퓨터 파워를 요구 합니다. SGD는 안정성 면에서는 낮지만 빠른 처리가 가능 합니다.

    반응형