[NN] NN으로 XOR 문제 풀기

nbh·2024년 11월 22일

모델 구조


입력층은 x1, x2, b로 이루어져 있다.
은닉층은 2~5개의 유닛과 b로 이루어져 있다.
출력층은 한 개의 유닛으로 이루어져 있다.

활성 함수는 시그모이드 함수,
손실 함수는 MSE를 사용한다.

class Network

은닉층의 유닛 개수와 학습률을 조정하여 모델을 만드는 클래스
------------------------------------------
def activate(x, d=False)
x에 대한 시그모이드 함수 계산 (d가 True인 경우 역전파의 값을 계산함)
def forward_pass(x)
입력값에 대해 순전파를 한 번 하고 입력층, 은닉층, 출력층의 값을 반환함
def fit(X, T, iter=5000)
입력값 X와 타겟 값T에 대해 iter 횟수만큼 순전파와 역전파를 반복하여 학습을 진행함
def test(X, T)
X와 T에 대한 모델의 예측값을 출력함

반복 횟수에 따른 학습 비교

은닉층 유닛 2개, 학습률 0.1 고정.


반복 횟수가 많아질 수록 충분한 학습이 이루어짐을 알 수 있었다.

학습률에 따른 학습 비교

  • 은닉층 유닛 2개, 반복 10000회 고정


    각 모델의 예측값과 loss값을 바탕으로 학습률이 적절히 설정되어야 학습이 제대로 이루어짐을 알 수 있었다. 특히 학습률 50의 경우 값이 수렴하지 못했다.

  • 은닉층 유닛 5개, 반복 10000회 고정


    은닉층 유닛이 5개인 모델의 경우 학습률이 0.5인 경우 0.2일 때보다 빠르게 수렴했으나 학습률이 너무 큰 경우 발산하였다.

은닉층 유닛 수에 따른 학습 비교

*학습률 0.2, 반복 10000회 고정


유닛 개수가 많아질 수록 loss값이 줄어드는 반복 횟수의 임계값이 적어짐을 알 수 있었다. 따라서 유닛 개수가 많다면 학습이 더욱 빠르게 이루어진다고 추측할 수 있다.


결론

신경망 모델에서 적절한 하이퍼파라미터를 설정하는 것은 중요하다.

  • 반복 횟수가 충분하지 못한 경우, 학습이 제대로 이루어지지 않을 수 있다.
  • 학습률이 너무 높은 경우, 모델이 수렴하지 못하고 발산할 수 있다.
  • 은닉층의 유닛의 개수를 늘리면 모델의 성능 향상(더 빠른 수렴)을 기대할 수 있다.

0개의 댓글