[밑바닥부터 시작하는 딥러닝1] 밑딥 스터디 CH5 정리

    반응형

    Backpropagation

    • backpropagation
      • 가중치 매개변수의 기울기를 효율적으로 계산하는 방법
    • 덧셈 노드의 backpropagation
      • 값을 그대로 다음 노드로 전달함
    • 곱셈 노드의 backpropagation
      • 노드에 연결된 다른 노드값을 곱함

    activation function의 forward/backward

    • ReLU
    class Relu:
    	def __init__(self):
    		self.mask = None
    
    	def forward(self, x):
    		self.mask = (x <= 0)
    		out = x.copy()
    		out[self.mask] = 0
    		return out
    
    	def backward(self, dout):
    		dout[self.mask] = 0
    		dx = dout
    		return dx
    
    • Sigmoid
    class Sigmoid:
    	def __init__(self):
    		self.out = None
    	
    	def forward(self, x):
    		out = 1 / (1 + np.exp(-x))
    		self.out = out
    		return out
    
    	def backward(self, dout):
    		dx = dout * (1.0 - self.out) * self.out
    		return dx
    
    • Softmax
    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]
    		dx = (self.y - self.t) / batch_size
    		return dx
    
    반응형

    댓글