다음은 렐루 함수와 소프트맥스 함수를 파이토치에서 구현하는 코드입니다.
class Net(torch.nn.Module): def __init__(self, n_feature, n_hidden, n_output): super(Net, self).__init__() self.hidden = torch.nn.Linear(n_feature, n_hidden) ------ 은닉층 self.relu = torch.nn.ReLu(inplace=True) self.out = torch.nn.Linear(n_hidden, n_output) ------ 출력층 self.softmax = torch.nn.Softmax(dim=n_output) def forward(self, x): x = self.hidden(x) x = self.relu(x) ------ 은닉층을 위한 렐루 활성화 함수 x = self.out(x) x = self.softmax(x) ------ 출력층을 위한 소프트맥스 활성화 함수 return x
손실 함수
경사 하강법은 학습률(, learning rate)3과 손실 함수의 순간 기울기를 이용하여 가중치를 업데이트하는 방법입니다. 즉, 미분의 기울기를 이용하여 오차를 비교하고 최소화하는 방향으로 이동시키는 방법이라고 할 수 있습니다. 이때 오차를 구하는 방법이 손실 함수입니다.
즉, 손실 함수는 학습을 통해 얻은 데이터의 추정치가 실제 데이터와 얼마나 차이가 나는지 평가하는 지표라고 할 수 있습니다. 이 값이 클수록 많이 틀렸다는 의미이고, 이 값이 ‘0’에 가까우면 완벽하게 추정할 수 있다는 의미입니다. 대표적인 손실 함수로는 평균 제곱 오차(Mean Squared Error, MSE)와 크로스 엔트로피 오차(Cross Entropy Error, CEE)가 있습니다.