본문 바로가기
Computer Science/Deep Learning

딥러닝과 신경망 ②

by BaekDaBang 2024. 4. 12.

5. 오차 함수

오차 함수(error function)는 비용 함수(cost function) 또는 손실 함수(loss function)라고 부름

오차 함수를 통해 오차를 측정하여, 신경망의 예측 결과를 평가함

예측 결과가 정 얼마나 가까운   수 있는 방

 

(1) 오차 함수란?

신경망의 예측 결과가 정답과 비교해서 얼마나 동떨어졌는지 측정하는 수단

손실값이 크면 모델의 정확도가 낮다

손실값이 작으면 모델의 정확도가 높다

손실이 클수록 정확도를 개선하기 위해 모델을 더 많이 학습해야 함

 

(2) 오차함수가 왜 필요한가

최적화 문제는 오차 함수를 정의하고 파라미터를 조정하면서 오차 함수의 오차를 최소가 되도록 하는 문제에 해당

최적화 문제의 목표는 오차 함수의 값이 최소가 되게 하는 최적의 파라미터를 찾는 것

오차를 최소로 만드는 과정을 오차 함수 최적화(error function optimization)라 함

 

(3) 오차의 값은 언제나 양수

예측 오차는 양수여야 평균을 계산할 떄 오차끼리 상쇄되는 일이 발생하지 않음

오차끼리 상쇄되는 예시

  • (질문) 신경망으로 예측하려는 2개의 데이터점이 있고, 첫번째점에 대한 예측 오차가 ‘10’이고, 두 번째 점에 대한 예측의 오차가 ‘-10’이라면, 평균 오차는? 
  • (정답) ‘0’ 
  • (문제) 오차가 ‘0’이면 신경망이 완벽하게 정답을 맞췄다는 의미로 이해하고 파라미터(가중치) 업데이트가 발생하지 않음 
  • (해결) 이런 문제를 방지하고자 모든 오차는 <양수>로 계산되어 평균 오차를 계산해야함 

 

(4) 오차 함수 : 평균제곱오차(MSE)

출력값이 실수인 회귀 문제에서 널리 사용되는 오차 함수

평균제곱오차는 각 데이터 점의 오차를 제곱해서 평균을 구함

오차를 제곱하기 때문에 오차가 항상 양의 값을 가지며, 오차 값이 그대로 결과에 대한 평가가 되므로 계산이 간편함

오차를 제곱하기 때문에 예외값에 민감함

문제 종류의 장점에 따라서 이런 민감함은 단점 혹은 장점으로 작용함

절대제곱오차(MAE)는 MSE의 변종으로 오차의 절대값의 평균을 계산

 

(5) 오차 함수 : 교차 엔트로피

교차 엔트로피(cross-entropy)는 두 확률 분포 간의 차이를 측정할 수 있다는 특성 덕분에 분류 문제에서 많이 사용

 

(6) 오차와 가중치의 관계

가중치는 오차를 줄이기 위해 조절하는 신경망 파라미터

신경망은 가중치를 업데이트하는 방식으로 학습을 진행

 

6. 최적화 알고리즘

신경망 학습과정은 여러 개의 표본(학습 데이터)을 신경망에 입력해 순방향 계산을 통해 예측 결과는 계산한 다음 그 표본의 정답과 비교해서 오차를 계산하고 마지막으로 오차값이 최소가 될 떄까지 신경망의 가중치를 조정(업데이트)하는 것

→ 최적의 가중치를 찾아줄 알고리즘은?

 

(1) 최적화

정의

어떤 함수 값을 최소화하거나 최대화하는 것으로 문제를 바라보는 관점

신경망 학습에 오차함수를 도입함으로써 오차를 최소화하는 최적화 문제로 해결

 

최적화 알고리즘의 필요성

가중치의 모든 가능한 값을 계산해보고 오차의 최소 지점을 찾는 방법은 이론적으로 가능하지만 경우의 수가 너무 많아 현실적으로 불가능

 

신경망에서 사용되는 최적화 알고리즘

경사 하강법 → 배치 경사 하강법, 확률적 경사 하강법, 미니배치 경사 하강법 등

 

(2) 배치 경사 하강법

경사(gradient)의 일반적인 정의는 주어진 지점에서 곡선에 대한 점선이 갖는 변화율 또는 기울기를 알려주는 함수

경사는 미분(derivative)이라고도 함

경사 하강(gradient descent)은 가중치를 반복적으로 수정하며 오차 함수의 최저점에 도달할 때까지 오차 함수의 언덕을 내려가는 과정

경사 하강법의 원리

A는 무작위로 결정한 가중치의 초기값

A에서부터 오차 함수 그래프의 언덕을 내려가 오차 함수 값이 최소가 되는 가중치 $W_1$과 $W_2$에 도달해야 함

오차 함수 그래프의 언덕을 내려가려면 한 걸음마다 걸음의 방향(경사)보폭(학습룰) 두 가지를 알아내야함

걸음의 방향(경사)

오차 함수의 지점에서 경사(오차함수의 미분)가 가장 가파른 방향으로 이동

경사 하강법이란 언덕을 충분히 내려갈 떄까지 순방향 계산 및 오차 계산 후 가장 가파른 방향을 찾아 반복 이동하는 과정

 

보폭(학습률)

경사 하강법 수행 중 가중치를 수정할 떄 이동할 보폭에 해당됨

신경망을 학습할 때 가장 중요한 하이퍼파라미터 중 하나

학습률이 크면 신경망의 학습이 빠르게 진행되고 값이 작으면 학습 속도 느려짐

학습률이 크면 오차값이 감소하지 않고 진동하는 경우 발생함

 

방향과 보폭 합치기

방향(경사)과 보폭(학습률)을 곱하면 각 단계의 가중치 변화량을 계산할 수 있음

기호가 마이너스인 경우는 경사는 항상 올라가는 방향 (경사를 따라 내려가야 하므로 경사의 반대 방향으로 이동하기 때문)

 

배치 경사 하강법의 문제점

가중치 초기값에 따라 전역 최소점(global minima)이 아닌 지역 극소점(local minima)에 빠질 수 있음

경사를 계산하기 위해 매법 훈련 데이터 전체를 사용하는 점

  • 훈련 데이터 전체를 하나의 배치로 사용하기 때문에 배치 경사 하강법이라고 부름
  • 계산 비용이 너무 크고 속도도 너무 느림

 

(3) 확률적 경사 하강법

확률적 경사 하강법(stochastic gradient descent, SGD)은 무작위로 데이터 점을 골라 데이터 점 하나를 이용해 가중치를 수정함

확률적 경사 하강법은 가중치에 다양한 시작점을 만들 수 있고 여러 지역 극소점을 발견할 수 있어 여러 지역 극소점 중 가장 작은 값을 전역 최소점으로 삼음

확률적(stochastic)은 무작위(random)로 선택했다는 의미

확률적 경사 하강법은 머신러닝에서 가장 널리 쓰이는 최적화 알고리즘 (빠르고 높은 성능을 보임)

배치 경사 하강법전체 데이터에 대해 손실과 경사를 계산하는데 비해, 확률적 경사 하강법훈련 데이터 중 하나를 무작위로 선택하며 이 데이터에 대한 경사를 계산함

 

(4) 미니배치 경사 하강법 (MB-GD)

배치 경사 하강법(BGD)과 확률적 경사 하강법(SGD)의 절충안

경사를 계산할 때 모든 훈련 데이터(BGD)나 하나의 훈련 데이터(SGD)만 사용하는 대신 훈련 데이터를 몇 개의 미니배치(미니배치의 크기는 k=256이 흔함)로 분할한 다음 이 미니배치로부터 경사를 계산함

MB-GD는 BGD에 비해 가중치 수정 횟수가 더 많으나 더 적은 반복 횟수에서 가중치가 수렴하며, 벡터 연산을 사용할 수 있으므로 SGD에 비해서도 계산 효율이 좋음

 

(5) 경사 하강법에서 기억해야 할 점

경사하강법으로 배치, 확률적, 미니배치 경사 하강법 이렇게 3가지 변종을 다루었음

세 가지 모두 기본 원리는 같음

  • 오차 함수 그래프의 경사가 가장 가파른 방향을 찾음
  • 학습률을 설정 (시행착오를 통해 조정)
  • 학습률은 0.01부터 시작해서 0.001, 0.0001, 0.00001과 같이 점차 줄여 나감 (학습률이 적을수록 오차 함수의 최소점에 도달할 가능성이 높아지지만, 무한히 학습을 진행하기 어려우므로 0.01부터 시작해서 점차 낮춰가는 것이 좋음)

BGD는 모든 훈련 데이터를 입력해서 경사를 계산하기 때문에, 규모가 큰 훈련 데이터 사용 시 계산 비용이 커져 대규모 데이터에 적합하지 않음

SGD는 훈련 데이터를 하나 입력해서 경사를 계산하므로 BGD보다 속도가 빠르고 전역 최소점에 가까이 다다를 수 있음

 

MB-GD는 BGD와 SGD의 절충안이며, 훈련 데이터를 몇 개의 미니배치로 나누고 하나의 미니배치를 입력해서 경사를 계산하며 모든 훈련 데이터가 입력될 때까지 반복함. 대부분의 경우 MB-GD를 사용함

 

배치 크기는 추후 조정이 필요한 하이퍼파라미터(32,64,128,256 정도로 설정)

에포크는 학습과정에서 전체 훈련 데이터가 한번씩 입력되는 동안을 의미함

(예를 들어 학습데이터의 수가 1000이고 배치크기가 256이면, 한 epoch의크기가256인배치 3개와 232인 배치 1개로 구성됨)

 

경사하강법은 변종이 매우 많으며, 잘 알려진 변종은 다음과 같음

  • NAG(NesterovAcceleratedGradient) / 네스테로프 가속 경사
  • RMSprop
  • Adam
  • Adagrad

 

7. 역전파 알고리즘

신경망 학습의 3단계

- 순방향 계산

선형 결합(가중합)을 계산하고, 선형 결합을 활성화 함수에 입력해서 출력값을 계산

- 오차 함수 또는 손실 함수 계산

 

- 경사 하강법을 사용해서 가중치를 수정(업데이트) ← 역전파 알고리즘 사용

 

(1) 역전파

역전파(back propagation) 또는 역방향(backward pass)은 가중치 갱신을 위해 가중치에 대한 오차의 미분(녹색박스)을 출력층으로부터 첫번째 층까지 전달하는 것을 말함

다층 퍼셉트론처럼 가중치 수가 늘어나면 상황이 복잡해짐

$\frac{dE}{dW_{13}}$의 의미는 파라미터 $W_{13}$을 수정했을 때 총 오차가 얼마나 변화하는가

오차 함수에 바로 연결되지 않은 가중치 $(W_{13})^{(1)}$ 총 오차(E)의 변화를 계산하는 방법은 연쇄법칙(chain rule)이라는 미분의 규칙을 사용하여 가능

 

미분의 연쇄법칙을 적용해서 첫 번째 입력의 세 번째 가중치 $w_{1,3}^{(1)}$에 대한 오차의 경사를 계산한 예시

 

(2) 역전파 알고리즘에서 기억해야 할 점

역전파는 뉴런의 학습이 일어나는 과정

역전파 과정 중 신경망에 포함된 뉴런 간의 연결(가중치)이 손실 함수가 최소가 되도록 조정

출력된 값(예측 값)과 원하는 값(정답)의 차이를 오차 함수라고 함

역방향 계산은 신경망의 끝부분에서 시작해서 오차의 역방향으로 전달하고, 연쇄법칙을 이용해서 지나는 길에 있는 모든 경사를 계산해 각 가중치를 수정

신경망 문제의 목표는 데이터와 가장 부합하는 모델을 발견하는 것이며, 이는 손실 함수 값이 최소가 되게 하는 가중치를 선택하는 것과 같음

 

8. 마치며

퍼셉트론은 직선(선형 연산)으로 분리 가능한 데이터셋에는 잘 동작

직선으로 모델링할 수 없는 비선형 데이터셋에는 뉴런이 더 많이 포함된 신경망이 필요

뉴런으로 구성된 층을 모아 다층 퍼셉트론을 만들 수 있음

신경망은 순방향 계산, 오차 계산, 가중치 최적화의 과정을 반복하며 학습

파라미터는 가중치나 편이 등 학습과정에서 신경망에 의해 수정되는 변수를 말함

파라미터에 대한 수정은 학습을 통해 자동으로 이루어짐

하이퍼파라미터는 신경망의 층수, 활성화 함수, 손실 함수, 최적화 알고리즘, 조기 종료 여부, 학습률 등 사람이 조정해야 하는 변수로, 이들은 학습을 시작하기 전에 조정을 마쳐야함

'Computer Science > Deep Learning' 카테고리의 다른 글

CNN(합성곱 신경망) ③ [CIFAR-10]  (0) 2024.04.14
CNN(합성곱 신경망) ② [MNIST]  (0) 2024.04.14
CNN(합성곱 신경망) ①  (1) 2024.04.13
딥러닝과 신경망 ①  (0) 2024.04.11
컴퓨터 비전 입문  (0) 2024.04.10