ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [n412] 역전파, 경사하강법, 옵티마이저
    AI 부트캠프 2021. 12. 20. 10:22

    신경망 학습

    1. 입력층에 데이터가 입력되면 신경망의 각 레이어 (층)에서 연산을 수행한다. 여기서 연산은 가중치, 활성화 함수 연산을 의미한다. 
    2. 위의 과정을 모든 레이어에서 한 뒤 출력층에 결과를 출력한다.
    3. 출력층의 결과(예측값)와 실제값 의 차이를 손실 함수를 이용해서 계산한다.
    4. 그 차이(예측값과 실제값)를 줄이기 위해 가중치를 갱신한다. => 경사하강법과 역전파
    5. 이를 여러차례 반복한다.

     

     

    순전파 (Forward Propagation)

     

    순전파는 입력층에서 출력층까지 계산을 해서 값을 출력하는 과정을 뜻한다. 

    1. 입력층에서 데이터를 입력 받는다. 신호는 다음 은닉층으로 넘어 간다. 
    2. 입력된 데이터에 가중치-편향 연산을 수행한다.
    3. 다음 층으로 가중합을 통해 구해진 값이 활성화 함수를 통한 뒤 전달된다.

     

     

    손실 함수 (Loss Function)

    신경망이 가중치를 갱신하는 것은 손실 함수를 최소화 하기 위함이다.

    예를 들어 회귀의 경우 손실 함수로는 MSE(Mean-Squared Error), MAE,

    이진 분류의 손실 함수로는 Binary_crossentropy,

    다중 분류의 손실 함수로는 categorical_crossentropy, sparse_categorical_crossentrpy를 사용한다.

     

    역전파 (Backward Progpagation)

    순전파의 역 방향으로 손실 정보를 전달하는 과정이다. 순전파는 입력층에서 출력층 방향으로 값을 전달하고 예상값을 출력 하는 알고리즘이라면 역전파는 그 예상값과 실제값의 차이를 줄이기 위해 손실함수를 이용해서 가중치를  업데이트 하는 알고리즘이다. 경사 하강법은 이 가중치를 어떤 식으로 업데이트할지 결정 한다. 

     

     

    경사 하강법 (Gradient Descent)

    손실 함수 J의 기울기(Gradient)가 작아지는 방향으로 업데이트하면 손실 함수의 값을 줄일 수 있다. 가중치를 변경할 때, 손실 함수의 미분값을 매번 계산하여 경사가 작아질 수 있도록 update한다. 

     

     

    옵티마이저 (Optimizer)

    간단하게 설명하면 옵티마이저는 경사를 내려가는 방법을 결정한다.

    출처: https://velog.io/@yookyungkho//딥러닝-옵티마이저-정복기부제-CS231n-Lecture7-Review

     

    경사하강법은 데이터가 수만개 있을 경우 하나하나 연산하기에 굉장히 오랜 시간 걸린다. 이를 보완하기 위해 등장한 것이 확률적 경사하강법 (Stochastic Gradient Descent, SGD)와 미니 배치 (Mini-batch) 경사 하강법이다.

     

    확률적 경사하강법 (Stochastic Gradient Descent, SGD)

    전체 데이터에서 하나의 데이터를 랜덤하게 선택하여 신경망에 입력한 후 손실을 계산한다. 그 손실 정보를 역전파하여 신경망의 가중치를 업데이트한다. 가중치를 빠르게 업데이트 할 수 있지만, 1개의 데이터만 사용하기 때문에 학습 과정에서 불안정하다. 

     

    미니 배치 경사 하강법 (Mini-batch Gradient Descent)

    Batch size가 n개 일 때, n개의 데이터로 미니 배치를 구성한다. 이를 신경망에 입력한 후손실함수 결과를 이용해 가중치를 업데이트한다. 일반적으로 GD, SGD의 장점을 섞은 미니 배치 경사하강법을 많이 사용한다. 

    배치 사이즈 (Batch Size)

    미니 배치의 크기를 배치 사이즈라 한다. 보통 2의 배수로 설정하며 큰 배치 사이즈를 쓰는 것이 안정적이다. 

     

    배치 사이즈 (Batch Size)와 # of Data, Epoch, Iteration의 관계

    • Epochs(에포크): 데이터셋 전체를 몇 번이나 반복하여 학습할 지를 결정하는 것.
    • Iteration: 순전파, 역전파 1회. 가중치를 한 번 수정하는 단위. 
    • # of Data = Batch size * Iteration
    • 데이터셋에 있는 전체 데이터의 수가 1000개 이고 batch_size=8, epochs=5 로 설정하였다면 학습이 종료될 때까지 Iteration 은 몇 회 일어나는가? 625회.
      • 1000 = 8 * 125 (1 epoch의 경우 125 iterations을 해야한다.)
      • 125 * 5 = 625 iterations. 

     

     

    'AI 부트캠프' 카테고리의 다른 글

    [n414] 하이퍼 파라미터 튜닝  (0) 2021.12.22
    [n413] Learning rate, 가중치 초기화, 과적합 방지  (0) 2021.12.21
    [n411] Neural Networks  (0) 2021.12.17
    [n341] Project - Troubleshooting  (0) 2021.12.08
    [Section3] Summary  (0) 2021.12.04

    댓글