경사 하강법(Gradient Desent)

  • 모델이 데이터를 잘 나타내도록 변화율을 사용해 모델을 조금씩 조정하는 최적화 알고리즘

    = 반복적인 계산을 통해 Weight값을 업데이트하면서 오차가 최소가 되는 W를 구하는 방식

    = 산의 정상에서 출발지점까지 내려가는 방향으로 조금씩 이동하면 언젠가 도달한다는 사고방식


경사하강법 작동 방식 및 기본 개념

  • 일정 배치를 랜덤으로 선택해 훈련하면서 W값을 업데이트하는 방식
  • 에포크(epoch) : 비복원 추출을 통해 훈련세트를 모두 사용한 경우 1 에포크를 진행했다고 말한다.
  • 스텝(step) : 모델의 가중치를 1번 업데이트 하는 것

ex) 데이터의 크기 = 200, 미니배치의 크기 = 10 인 경우 20스텝을 진행해야 1에포크가 진행된 것


경사하강법의 종류(Sort of Gradient Descent)

  • 확률적 경사하강법(Stochastic GD) - 전체 훈련데이터 중 1개 임의로 선택해 경사하강
  • 미니배치 경사하강법(Mini-Batch GD) - 전체 훈련데이터 중 특정 크기만큼 임의로 선택
  • 배치 경사하강법(Batch GD) - 전체 학습 데이터를 사용해 경사하강

처음에는 배치 경사하강법을 사용했지만 입력데이터의 크기가 크고 레이어가 많을 수록 많은 Computing 자원 (메모리 부족, 많은 시간)이 필요하다.

⇒ 이를 극복하기 위해 확률적, 미니배치 경사하강법이 도입됐다.

대부분의 딥러닝 Framework에서는 미니배치 경사하강법(Mini-Batch GD)이 사용된다.



손실함수의 미분

  • 손실함수(Loss function) - 예측값과 실제값의 차이를 함수로 정의한 것
  • ,

  • Loss 산출 과정
  1. Layer를 통과하며 f(x, W)를 계산해 Output을 산출한다.
  2. 예측값과 실제값을 통해 Loss를 구하고 평균을 산출한다. (이미지를 처리할 때는 픽셀 단위로 손실값을 산출하기 때문에 픽셀단위로 계산하여 전체 픽셀에 대한 손실 평균을 산출한다.)
  3. 손실함수 일반화를 위한 규제를 추가한다.
  • 딥러닝 모델의 목표는 예측값이 실제값을 가장 잘 나타낼 수 있도록 하는 것이고 두 값의 차이를 손실함수를 통해 정의한다. 이는 손실함수가 가장 작은 것이 예측값이 실제값을 가장 잘 나타낸다는 것을 의미한다.

    ⇒ 손실함수의 값이 가장 작은 부분(Global Minima)에 위치할 수 있도록 W를 업데이트 해야한다.

  • 제곱오차 함수(Square Error, SE)를 예로 들어 보자.

    ,

    (), (세로축 - SE, 가로축 - w)

  • 개형을 봤을 때 이차함수로 표현되고 함수가 갖는 가장 작은 값을 가져야 한다.
  • 인 값 중 최솟값을 찾아야 한다.

미분 → 순간변화율

손실함수의 미분 → 편미분을 통해 수행한다.

손실함수의 미분값이 (-)음수인 경우 그만큼 더 증가시켜야 하고 (+)양수인 경우 더 감소시켜야 한다.

  • (손실함수 미분값)
  • ( = 학습률, Learning Rate)
  • 학습률을 통해서 어느 정도 가중치를 조정할 것인지를 조절할 수 있다.

학습률을 통해 가중치의 변동 정도를 조절하기 때문에 학습률을 조정하는 것이 중요하다.

학습률이 너무 크다면 요동치며 최솟값을 잘 찾지 못한다.

학습률이 너무 작다면 최솟값까지 잘 이동하지를 못한다.



요약 및 정리

경사하강법과 손실함수의 편미분을 적용해 최적의 가중치를 학습한다.

  1. 배치크기 만큼 훈련데이터에서 데이터를 뽑아낸다.
  2. 예측값을 계산하고 손실값을 계산한다. ⇒ 손실함수를 정의
  3. 손실함수의 편미분을 통해서 W 가중치를 업데이트한다.
  4. 1~3을 해당 에포크만큼 반복하여 최적의 가중치를 얻어낸다.