컴퓨터 사이언스/신경망 기초

파이썬을 이용한 뉴럴 네트워크 실전 - 오차역전파법 (역전파)

KanzesT 2022. 1. 6. 18:46

앞서 설명한 수치미분법은 단순하며, 구현에 용이하지만 계산시간이 오래 걸리게 된다.

따라서 가중치의 매개변수 기울기를 효과적으로 계산할 수 있는 오차역전파법을 많이 사용한다.

 

▶오차역전파법

 

모든 계층의 계산은 forward() 그리고 backward() 라는 메서드를 가지도록 구현하는 것이 편하다.

forward로 표현된 순전파 메서드는 쉽게 계산이 가능하나,

backward로 표현된 역전파 메서드는 노드를 이용한 유도과정이 필요하다. 

 

실제 구동을 위한 목적이므로 이러한 상세한 유도과정은 생략한다.

● 곱셈 계층

 

--------------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------------