본문 바로가기

Model/인공신경망

경사 하강법을 이용한 신경망 학습

반응형

1. 기존 머신러닝과 딥러닝의 특징

  • 사람이 생각한 알고리즘을 이용한 분류
  • 사람이 생각한 특징(SIFT, HOG 등)을 추출하고, 기계학습(SVM, KNN 등)으로 분류
  • 신경망을 통해 분류. 데이터만 주어지면 특징 추출, 분류 모두 자동으로 진행된다.

2. 손실 함수

신경망 성능의 나쁨을 나타내는 지표로, 평균 제곱 오차나 교차 엔트로피 오차 등을 사용합니다. 신경망은 미분을 이용해서 이 함수의 값을 줄이는 것을 목표로 학습합니다.

  • 평균 제곱 오차(Mean Squared Error, MSE)

  • y_k는 신경망의 출력, t_k는 One-Hot Encoding된 정답 레이블, k는 데이터의 차원 수.
    • 교차 엔트로피 오차(Cross Entropy Error, CEE)

  • t_k 값은 정답 레이블에선 1, 나머지는 0이므로 정답 레이블의 y_k의 자연로그값을 의미한다.

모든 훈련 데이터에 대하여 손실 함수를 구한 뒤 합친 값을 최소화하는 방향으로 학습을 진행합니다. 그러나 데이터가 많아지면 손실 함수의 값을 구하는 데 시간이 매우 오래 걸립니다. 대신 임의로 데이터를 선택하여 학습을 수행하는 미니배치 학습(Mini-batch)을 통해 소요 시간을 줄입니다.

모델의 성능은 정확도(accuracy)로 나타낼 수 있습니다. 하지만 모델의 파라미터값이 변한다고 해서 정확도가 무조건 변하지는 않습니다. 즉, 미분값이 0이 되기 때문에 학습이 되지 않습니다. 이 문제를 피하기 위해, 인공신경망은 미분값을 항상 가지고 있는 손실 함수를 최소화하는 방법으로 학습합니다.

 

3. 수치 미분

수치 미분이란, 위와 같이 작은 차분을 이용해 미분하는 것입니다. 도함수를 이용해 해석적으로 미분하는 대신, 수치 미분을 통해 근사치를 구합니다. 위 수식은, 중앙 차분에 기반한 수치 미분입니다.

 

4. 경사 하강법

벡터를 각 변수마다 편미분을 하면 현재 위치에서의 기울기를 구할 수 있습니다. 기울기에 전부 -1을 곱하면 극솟값 방향을 알 수 있습니다. 모든 변수를 극솟값 방향으로 조금씩 이동하는 방식으로 학습하는 것이 경사 하강법입니다. 각각의 변수별로 편미분값을 구하는데, 이 값이 클수록 그 파라미터가 학습에 기여하는 정도가 크다고 볼 수 있습니다. 경사 하강법을 수식으로 나타내면 아래와 같습니다.

η 값은 학습률(learning rate)인데, 한 번의 학습으로 얼마만큼 학습해야 하는지, 즉 매개변수 값을 얼마나 갱신해야 하는지 나타내는 값입니다. 이 값이 크면 학습 속도는 빠르지만, 극솟값에 수렴하지 못하는 문제가 발생할 수 있습니다. 이 값이 너무 작으면, 학습 속도가 너무 느려서 수렴하지 못하는 문제가 발생할 수 있습니다.

 

5. 확률적 경사 하강법 (SGD)

  1. 미니배치: 훈련 데이터를 일부 무작위로 가져옵니다.
  2. 기울기 산출: 각 가중치 매개변수의 기울기를 구합니다.
  3. 매개변수 갱신: 가중치를 구한 기울기 방향으로 learning rate만큼 갱신합니다.
  4. 1번으로 돌아가 반복.

Reference

  • 밑바닥부터 시작하는 딥러닝 (4장 신경망 학습)

 

 

 

 

반응형