- 신경망에서 학습
- 신경망에서 데이터를 학습한다는 것은 가중치 매개변수의 값을 데이터를 보고 자동으로 결정한다는 것을 의미함.
- 그 방법으로 데이터에서 특징(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.
'딥러닝 기초' 카테고리의 다른 글
[김기현의 딥러닝을 활용한 자연어처리] 딥러닝 환경 구축 (1) | 2023.05.11 |
---|---|
[밑바닥부터 시작하는 딥러닝] 최적화 (1) | 2022.10.08 |
[밑바닥부터 시작하는 딥러닝] 오차역전파 (0) | 2022.09.22 |
[밑바닥부터 시작하는 딥러닝] 신경망 (1) | 2022.09.04 |
[밑바닥부터 시작하는 딥러닝] 퍼셉트론 (1) | 2022.09.03 |