PyTorch 퍼셉트론 가중치 업데이트

IngCoding·2022년 6월 18일
1

머신러닝

목록 보기
17/34
post-thumbnail

순전파와 역전파

1.순전파 살펴보기

  • 인공신경망이 입력층 -> 은닉층 -> 출력층 (순전파) 과정을 통해 예측값과 실제값의 오차를 계산
  • 인공신경망의 목적은 오차를 최소화하는 가중치를 찾는 것인데, 순전파와 역전파를 반복으로 찾는다.
  • 순전파 과정을 그림으로 보면 아래와 같다

  • x는 입력값(.1은 0.1), w는 가중치, z는 가중합, h는 은닉층(시그모이드 함수 적용), o는 출력층을 의미한다.

  • 이 그래프에 대한 수식과 설명이다.

  • 이제 오차함수를 선택해 에측값과 실제값의 오차를 계산한다.
  • 오차함수는 평균제곱오차(MSE) 사용

2. 역전파 살펴보기

  • 순전파와 반대로 출력층 -> 입력층을 계산하며 가중치를 업데이트 (경사하강법 활용)
  • 역전파 1단계 과정을 살펴본다. (다른 단계도 원리는 동일하다, 은닉층이 많을수록 더 많은 단계 필요)

  • 여기선 은닉층이 1개이므로 총 2단계로 구성된다. 1단계에서 업데이트할 가중치는 W5, W6, W7, W8 이다.
  • 경사하강법을 수행하려면 가중치와 오차값의 미분이 필요하다.
  • 미분의 연쇄법칙(Chain rule)에 따라 아래와 같이 풀어쓸 수 있다

첫번째 항

두번째, 세번째 항

  • O1은 시그모이드 함수의 출력값이므로, 시그모이드 함수의 미분 값인 f(x)*(1-f(x))가 대입되었다.
  • 세번째 항은 h1과 동일하다

  • 이제 모든 값을 곱해주면 오차값과 W5의 미분 값이 나온다
  • 경사하강법이 적용됐고, 학습률은 0.5로 가정한다.

3. 결과 확인

  • 업데이트된 가중치로 다시 순전파를 진행하여 오차가 감소하였는지 살펴본다.

  • 기존의 전체 오차(0.02397190)에서 0.2323634로 오차가 감소한 것을 확인할 수 있다.
profile
Data & PM

0개의 댓글