본문 바로가기
딥러닝 기초

[밑바닥부터 시작하는 딥러닝] 신경망에서 학습

by 나연하야 2022. 9. 18.
  • 신경망에서 학습

- 신경망에서 데이터를 학습한다는 것은 가중치 매개변수의 값을 데이터를 보고 자동으로 결정한다는 것을 의미함.

- 그 방법으로 데이터에서 특징(features)을 추출하고, 그 특징의 패턴을 기계학습 기술로 학습할 수 있음.

ex) 데이터를 보고 사람이 직접 중요한 특징을 추출하고, SVM, KNN과 같은 기계학습 기법으로 학습시킴.

- 딥러닝에서는 기계(컴퓨터)가 데이터를 '있는 그대로' 학습하며, 이는 데이터의 중요한 특징까지 기계가 스스로 학습한다는 것을 의미함.

 

 

  • 훈련 데이터(training data)와 시험 데이터(test data)

- 기계학습 문제는 데이터를 훈련 데이터와 시험 데이터로 나눠 학습과 실험을 수행함.

- 훈련 데이터만 사용하여 학습하면서 최적의 매개변수를 찾고, 이후 시험 데이터를 사용하여 앞서 훈련한 모델의 실력을 평가함.

- 이와 같이 데이터를 나누는 이유는 '범용 능력'을 평가하기 위한 것으로, 범용 능력은 아직 보지 못한 데이터로도 문제를 올바르게 풀어내는 능력임.

- 데이터셋 하나로만 매개변수의 학습과 평가를 수행한다면 다른 데이터셋에는 맞지 않을 수 있으며, 이와 같이 한 데이터셋에만 지나치게 최적화된 상태를 '오버피팅(overfitting)'이라고 함.

 

 

  • 손실 함수(loss function)

- 신경망은 하나의 지표를 기준으로 최적의 매개변수 값을 탐색하며, 학습에 사용하는 지표는 손실 함수(loss function)임.

- 손실 함수로 임의의 함수를 사용할 수 있지만 일반적으로 오차제곱합과 교차 엔트로피 오차를 사용함.

 

 

  • 손실 함수 - 오차제곱합

[식 1]

k: 데이터의 차원 수

y: 신경망의 출력(신경망이 추정한 값)

t: 정답 레이블

 

 

  • 손실 함수 - 교차 엔트로피 오차

[식 2]

k: 데이터의 차원 수

y: 신경망의 출력(신경망이 추정한 값)

t: 정답 레이블

 

- 예를 들어, 정답 레이블에 대해 신경망 출력이 0.6이라면 교차 엔트로피 오차는 -log0.6=0.51이며, 같은 조건에서 출력이 0.1이라면 -log0.1=2.30이 됨.

- 정답이 아닌 경우는 t가 모두 0으로 교차 엔트로피 오차를 계산하는 데 영향을 주지 않음.

 

 

  • 미니배치 학습

- 빅데이터는 모든 데이터를 고려하여 손실 함수를 계산하는 것이 어려워 훈련 데이터 중 일부를 골라 학습을 수행하며, 이 일부를 '미니배치(mini-batch)'라고 함.

 

 

  • 손실 함수를 이용하여 학습하는 방법

- 신경망 학습에서 최적의 매개변수를 탐색할 때 손실 함수의 값을 가능한 작게 하는 매개변수 값을 찾음.

- 이때, 매개변수의 미분(정확히 기울기)을 계산하고, 그 미분 값을 단서로 매개변수의 값을 서서히 업데이트하는 과정을 반복함.

- 매개변수의 손실 함수에서 미분은 '가중치 매개변수의 값을 아주 조금 변화시켰을 때, 손실함수가 어떻게 변하나'를 의미함.

- 만약 이 값이 음수라면 매개변수를 양의 방향으로 변화시켜 손실 함수의 갑슬 줄일 수 있고, 0이라면 어느 쪽으로 움직여도 손실 함수의 값은 줄어들지 않기 때문에 업데이트를 멈추게 됨.

 

  • 학습의 지표로 손실 함수를 사용하는 이유

- 우리의 목적은 높은 '정확도'를 보이는 매개변수의 값을 찾는 것임.

- 그런데 '정확도'가 아닌 '손실 함수'를 지표로 사용하는 이유는 아래와 같음.

- 예를 들어, 한 신경망이 100장의 훈련 데이터 중 32장을 올바르게 예측한다면 정확도는 32%임. 이와 같은 상황에서 매개변수를 약간 조정하면 정확도는 개선되지 않을 가능성이 커 업데이트가 멈춤,

- 한편, 손실 함수의 경우 그 값이 0.92543과 같이 연속적으로 변화하기 때문에 매개변수의 변화에 따라 손실함수는 바뀜.

- 이는 활성화 함수로 '계단 함수'를 사용하지 이유와 같음.

 

 

  • 경사 하강법

- 경사법은 현 위치에서 매개변수의 미분값을 고려하여 함수의 최소값을 찾아가는 것으로, 기계학습을 최적화하는 데 자주 활용됨.

- 참고로, 경사법에서 최소값을 찾으면 '경사 하강법', 최대값을 찾으면 '경사 상승법'이라고 함.

- 경사법을 수식으로 나타내면 [식 3]과 같음.

[식 3]

- 여기서, 에타는 학습률(learning rate)로, 한 번의 학습으로 매개변수 값을 얼마나 갱신하느냐를 결정함.

- 학습률과 같은 사람이 직접 설정해야 하는 값을 '하이퍼파라미터(hyper parameter)'라고 함.

 

 

  • 학습 알고리즘 구현 절차

(전제)

신경망에서는 적절한 가중치와 편향을 데이터를 통해 결정해가는 과정을 ;학습'이라고 하며, 아래의 4단계로 수행함.

(1단계 - 미니배치)

훈련 데이터 중 일부를 무작위로 선별하는데 이와 같은 데이터를 미니배치라고 함.

미니배치의 손실 함수 값을 줄이는 것이 목표임.

(2단계 - 기울기 산출)

미니배치의 손실 함수 값을 줄이기 위해서는 각 가중치 매개변수의 기울기를 구함.

(3단계 - 매개변수 업데이트)

가중치 매개변수를 기울기 방향으로 아주 조금씩 업데이트함.

(4단계 - 반복)

1위의 1~3단계를 반복함.

 

- 이와 같은 방법으로 매개변수를 업데이트하는 과정을 '확률적 경사 하강법(stochastic gradient descent; SGD)라고 하며, 데이터를 미니배치로 무작위로 선정하기 때문에 '확률적'이라는 용어를 씀.

 

 

  • epoch

- 학습시키는 과정에서 에폭(epoch)라는 용어가 나오는데 이는 학습에서 훈련 데이터를 모두 사용했을 때의 횟수에 해당함.

- 예를 들어, 훈련 데이터 10.000개를 100개의 미니배치로 학습할 경우, 확률적 경사 하강법을 100회 반복하면 모든 훈련 데이터를 '소진'하게 되며, 이때 100회가 1에폭임.

 

 

  • test data로 평가하기

- 신경망 학습에서는 훈련 데이터가 아닌 test data를 이용하여 올바르게 학습이 되었는지 확인하는 가정이 필요함.

- 훈련이란 훈련 데이터에 대한 정확도를 높이는 방향으로 학습하는 것으로 정확도는 에폭을 반복할 수록 높아짐.

- 그러나 훈련 데이터에만 너무 학습될 경우 오버피팅이 되면서 test data에 대해서는 정확도가 떨어지는 순간이 생길 수 있으며, 이를 예방하기 위한 방법으로 조기 종료(early stopping)이 있음.

 

출처: 사이토 고키, 「밑바닥부터 시작하는 딥러닝」, 한빛미디어(2017), p107-p146.