[ML] 오차 역전파

이정연·2023년 3월 29일
0

Play Data

목록 보기
15/26

오차 역전파란?

chatGPT에게 물어본 결과 아래와 같이 대답한다.

오차 역전파(Backpropagation)은 인공 신경망(ANN)에서 가중치(weight)와 편향(bias)을 학습시키기 위한 알고리즘입니다. 이 알고리즘은 출력 값과 정답 사이의 오차를 이용하여 신경망의 가중치와 편향을 업데이트합니다.

오차 역전파 알고리즘은 다음과 같은 단계로 이루어집니다.

  1. 순전파(Forward Propagation) 단계
    입력 데이터를 신경망에 입력하여 출력값을 계산합니다.
    출력값과 정답과의 오차를 계산합니다.

  2. 역전파(Backward Propagation) 단계
    오차를 출력층에서 입력층으로 거꾸로 전파하면서, 가중치와 편향을 업데이트합니다.
    각 노드에서 입력값에 대한 손실 함수의 미분 값을 계산합니다.
    계산된 미분 값을 이용하여 출력층에서부터 입력층까지 각 노드의 가중치와 편향을 업데이트합니다.

  3. 가중치와 편향 업데이트
    역전파 단계에서 구한 가중치와 편향의 변화량을 이용하여 가중치와 편향을 업데이트합니다.
    이 단계를 반복하면서, 신경망은 주어진 데이터에 대해 학습하게 됩니다. 오차 역전파 알고리즘은 복잡한 신경망에서도 효과적으로 사용될 수 있으며, 딥러닝 분야에서 가장 많이 사용되는 알고리즘 중 하나입니다.

한 마디로 요약하면 [피드백] 이다.

y = wx+b 수식에서 우리의 목표는 w와 b를 찾는 것이다.

자세한 방법을 파이썬 코드를 통해 확인해보자.

Python CODE

w,b = 1.0 , 1.0
# 오차 역전파를 통한 weight와 bias 계산
for x_i, y_i in zip(x , y ):
    y_hat = x_i * w + b
    err = y_i - y_hat
    w_rate = x_i
    w = w + w_rate * err
    b = b + 1 * err
print(w, b)
  • 최초의 w,b를 설정
  • 예측값 = wx+b
  • 오차 = 실제값 - 예측값
  • 조정 w = 기존 w + x*오차
  • 조정 b = 기존 b + 오차

예를 들어,

y_hat = x[0]*w + b # 출력: 1.06
y[0] # 출력: 151.0

0번째 x를 예측한다고 해보자.
예측값이 1.06이 나왔고 실제값은 151이다.

이 둘의 오차는 약 150으로 매우 큰 수치이다.

따라서, weight를 조정할 때 이 오차값을 곱해주면 매우 큰 변동폭으로 weight가 조정될 것이다.

반대로 실제값이 10이었다고 가정하면 작아진 오차만큼 작은 값이 weight에 곱해질 거고 그만큼 미세하게 weight값을 조정할 수 있을 것이다.

profile
0x68656C6C6F21

0개의 댓글