상세 컨텐츠

본문 제목

9.오차역전파법

본문

오차역전파법(Backpropagation)

1. 계산 그래프 방법(순전파)

다음의 예를 계산 그래프 방법으로 풀어보도록 하자.

  1. 계산 그래프를 구성한다.
  2. 그래프에서 계산을 왼쪽에서 오른쪽으로 진행한다. → 순전파(forward propagation)

2. 계산 그래프 방법(역전파)

  1. 계산 그래프를 구성한다.
  2. 그래프에서 계산을 오른쪽에서 왼쪽으로 진행한다. → 역전파

 

3. 역전파와 미분

4. 덧셈노드의 순전파와 역전파

왼쪽은 덧셈노드의 순전파이고 오른쪽은 덧셈 노드의 역전파이다.

L을 x의 대해서 미분하면 1

L을 y의 대해서 미분하면 1

 

class AddLayer:
   def __init__(self):
       pass
   
   def forward(self, x, y):
       out = x + y
       return out
   
   def backward(self, dout):
       dx = dout * 1
       dy = dout * 1
       return dx, dy

5. 곱셈노드의 순전파와 역전파

왼쪽은 곱셈 노드의 순전파이고 오른쪽은 곱셈 노드의 역전파이다.

L을 x의 대해서 미분하면 y

L을 y의 대해서 미분하면 x

 

아래의 코드는 곱셈노드의 역전파 파이썬 코드이다.

class MulLayer:
   def __init__(self):
       self.x = None
       self.y = None
       
   def forward(self, x, y):
       self.x = x
       self.y = y
       out = x * y
       
       return out
   
   def backward(self, dout):
       dx = dout * self.y  # x와 y를 바꾼다.
       dy = dout * self.x
       
       return dx, dy

5. 미분을 이용한 역전파

관련글 더보기