Story of CowHacker

딥러닝 4.4 오차역전파법 본문

공부/딥러닝

딥러닝 4.4 오차역전파법

Cow_Hacker 2020. 8. 19. 09:25
728x90

이번 글에서는 먼저 출력층에서 사용하는 소프트 맥스 함수에 대해 알아보겠다.

 

소프트맥스 함수는 입력값을 정규화하여 출력한다.

 

 

 

 

 

그림1

그림1은 간소화한 Softmax-with-Loss 계층의 계산 그래프다.

 

여기서 이름에 -with-Loss가 붙는 이유는 손실함수인 교차 엔트로피 오차도 포함했기 때문이다.

 

 

그림1의 계산 그래프를 해석해보면

 

 

1. 3클래스로 가정하고 3개의 입력을 받는다.

2. 입력 ( a1, a2, a3 ) 을 정규화 하여 출력 ( y1, y2, y3 ) 을 한다.

3. Cross Entropy Error 계층은 Softmax의 출력 ( y1, y2, y3 )과 정답 레이블  ( t1, t2, t3 )를 받고 이 데이터로 부터 손실      L을 출력한다.

 

이제 파이썬으로 구현해보겠다.

 

 

 

 

 

class SoftmaxWithLoss:
    def __init__(self):
        self.loss = None # 손실함수
        self.y = None    # softmax의 출력
        self.t = None    # 정답 레이블(원-핫 인코딩 형태)
        
    def forward(self, x, t):
        self.t = t
        self.y = softmax(x)
        self.loss = cross_entropy_error(self.y, self.t)
        
        return self.loss

    def backward(self, dout=1):
        batch_size = self.t.shape[0]
        if self.t.size == self.y.size: # 정답 레이블이 원-핫 인코딩 형태일 때
            dx = (self.y - self.t) / batch_size
        else:
            dx = self.y.copy()
            dx[np.arange(batch_size), self.t] -= 1
            dx = dx / batch_size
        
        return dx

 

728x90

'공부 > 딥러닝' 카테고리의 다른 글

딥러닝 5.0 학습 관련 기술들  (0) 2020.08.19
딥러닝 4.5 오차역전파법  (0) 2020.08.19
딥러닝 4.3 오차역전파법  (0) 2020.08.18
딥러닝 4.2 오차역전파법  (0) 2020.08.17
딥러닝 4.1 오차역전파법  (0) 2020.08.17
Comments