본문 바로가기
ML&DL

딥러닝 학습 과정에 대해

by Back2Baek 2024. 3. 7.

▶ 학습이란

딥러닝 훈련 혹은 학습이란,

  • 입력에 대한 모델이 예측한 답과 실제 정답 차이를 줄여나가기 위한 과정
  • 그리고 그를 위해, 딥러닝의 가중치를 업데이트하는 과정

 

그렇다면 학습을 위해 필요한 것과 그를 위한 과정은 다음과 같습니다.

  1. 입력에 대한 예측 값 > 순전파
  2. 정답과 예측의 차이 값 > 손실 함수 계산
  3. 가중치의 정보(기울기, 미분 값 등) > 역전파
  4. 그리고, 그 가중치를 업데이트하는 방법 > 최적화

 

▶ 순전파, Forward Propagation

 

순전파는, 단순히 입력에 대한 딥러닝 모델의 답을 구하는 과정입니다.

 

공(Ball) 이미지가 들어왔을 때,

해당 공이 어떤 스포츠 공(5종: 축구, 농구, 야구, 골프, 탁구)인지 분류하는 모델이 있다고 해보겠습니다.

 

그렇다면 이미지는 입력층 -> 히든층->출력층을 거쳐,

해당 공이 각 스포츠의 공일 확률 값(예측값) 출력할 것입니다.

 

 

▶ 손실 함수, Loss Function

순전파를 통해 예측 값을 구했다면, 이 예측에 대한 점수를 매겨야 합니다.

점수를 매기기 위해 정답지와 예측 값의 차이를 구할 방법이 별도로 필요합니다.

 

회귀 문제에서는 MSE(Mean Squared Error),

분류 문제에서 CEE(Cross-Entropy Error)라는 함수가 손실 함수로 주로 쓰입니다.

 

손실 함수를 정했다면, 해당 손실함수로 정답과 예측의 차이가 얼마인지, loss를 확인 합니다.

그 차이는, 모델이 현재 어느 정도의 성능인지, 얼만큼의 변화가 필요한지 알려주고 있습니다. 

 

 

▶ 역전파, Back Propagation

Loss를 구했다면, 해당 Loss를 최대한 줄이기 위한 과정이 필요합니다.

가중치 업데이트가 loss를 줄이는 과정이며,

이를 위해서는 각 가중치가 어떤 방향으로, 얼만큼 변해야하는지에 대한 정보가 필요합니다. 

현재 Loss에 대한 각 가중치의 미분 값 그 정보를 담고 있습니다.

 

하지만 딥러닝 구조에서 각 가중치에 대한 미분 값은 체인 룰을 이용해 구해야 합니다.

각 가중치는 편향이라는 값과 더해지기도 하고, 활성화 함수를 만나기도 합니다.

또한, 해당 과정을 여러 층을 거치며 각 가중치끼리 서로 영향을 주고받습니다.

 

때문에 가중치 각각에 대한 미분 값을 구하기 위해서는 Loss와 출력층부터 역으로 미분 값을 구해나가야 합니다.

이 과정을 역전파라고 하며, 이를 통해 예측에 대한 각 가중치의 영향력과 방향을 알 수 있습니다.

 

▶ 최적화, Optimization

다음의 그림은 최초의 Loss로 부터 점차 줄여나가는 과정에 대한 그림입니다.

 

딥러닝 모델은 몇 천, 몇 만, 몇 억개가 넘어가는 가중치, 즉 변수를 가지고 있습니다.

해당 변수에 대한 손실함수 그래프를 그리기란 사실상 불가능 합니다.

또한, 해당 그래프의 최소값(Loss가 가장 최소가 되는 지점)을 한번에 구하는 것도 불가능 합니다.

 

따라서, 그래프 상에서 현재 위치의 기울기를 구하고, 해당 기울기를 따라 loss가 감소하는 방향으로 천천히 이동하는 

경사하강법(Gradient Descent)을 이용합니다.

 

역전파를 통해 가중치에 대한 기울기를 구할 수 있었고, 경사하강법을 통해 가중치를 업데이트 해나갑니다.

 

경사하강법의 식을 풀어쓰자면 다음과 같습니다.

다음 위치 = (현재 위치) - (학습률)x(현재 위치에서 기울기)

 

다음 이동 위치는 현재 위치에서 기울기의 반대 방향으로 학습률 만큼 이동한 위치가 됩니다.

 

경사하강법은 현재 위치의 주변 값들 중 최소값만을 따라가는 방식입니다.

즉, 극소값으로 이동을 보장해주지만, 최소값은 보장해주진 않습니다.

 

따라서 경사하강법의 파생인 여러 최적화 알고리즘을 통해 최소값에 근접하고자 합니다.

하용호, 자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다

 

▶ 학습 과정 정리

 학습 과정에 대해 앞서 언급한 내용과 추가 내용을 정리하자면,

  1. 최초 가중치 초기화 (Xavier, He, ... 방법)
  2. 순전파를 통해 예측 값 구하기
  3. 정답과 예측의 Loss 계산, MSE, CEE와 같은 손실 함수를 통해
  4. 역전파를 통해 각 가중치의 기울기 구하기
  5. 해당 기울기들을 이용해 각 가중치를 적절히 업데이트
  6. 그리고 최소값 혹은 만족할만한 수치가 나올 때까지 2~5를 반복