본문 바로가기

AI/DeepLearning

[밑바닥부터 시작하는 딥러닝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
반응형