Back Propagation

이승준·2024년 9월 11일

딥러닝 기초

목록 보기
4/12

손실 함수 미분의 어려움

  • 우리는 손실 함수의 기울기를 0으로 만들어 나가는 경사 하강법을 공부했다.
  • 하지만, 한 변수에 대한 손실 함수의 기울기를 구하는 것은 쉽지 않다
    => 한 변수는 여러 개의 뉴런의 값에 영향을 미친다
    => 그러므로 연쇄법칙을 이용해야 하고, 식이 아주 길어진다

Back Propagation

  • 전파란 어떤 값이 신경망을 통해 이동하는 것을 뜻한다.
  • 오차 역전파는 손실 값이 입력층까지 도달해 각 유닛의 미분값을 구하는 것
    => 이를 통해 복잡한 미분 계산을 점화식으로 대체한다.
  • bottom up dp 와 같은 형식으로, 다음 node 의 미분값들을 계산하고 저장해 현재 node 의 미분값을 구한다.

곱셈 레이어 구현

  • 두 개의 입력값을 받아 곱을 출력하는 레이어를 생각해보자
  • 결과가 xy 일때, x에 대한 미분값은 y, y에 대한 미분값은 x다.
class MulLayer:
    
    # 레이어에서 사용할 변수를 생성자에서 준비 
    def __init__(self):
        self.x = None
        self.y = None

    # 곱셈 레이어에서의 순전파 : x 와 y 를 곱하고 각 값을 저장
    def forward(self, x, y):
        self.x = x
        self.y = y
    
        # 순전파에서 진행되는 연산
        out = x * y
        return out
    
    # 곱셈 레이어의 역전파 : 들어온 미분 값을 x에는 y를 곱하고, y에는 x를 곱함
    def backward(self, dout):
        # dout : 다음 층에서 흘러 들어오는 미분값
        dx = dout * self.y
        dy = dout * self.x

        return dx, dy
profile
인하대학교 컴퓨터공학과

0개의 댓글