본문 바로가기
인공지능/딥러닝

[밑바닥부터 시작하는 딥러닝] 손실 함수

by julysein 2021. 10. 21.
728x90

 

신경망의 성능을 알아볼 때 쓰인다. 이때 얼마나 잘 처리하냐를 알아보는 것이 아니라 얼마나 처리를 하지 못하냐가 지표로 나타난다.

 

1. 오차제곱합

각 원소의 출력과 정답 레이블의 차를 제곱한 후 합을 구한다.

def sum_squares_error(y,t):
  return 0.5 * np.sum((y-t)**2)

 

2. 교차 엔트로피 오차

오차제곱합의 판단과 일치한다.

def cross_entropy_error(y, t):
  delta = 1e-7
  return -np.sum(t * np.log(y+delta))

 

* 이때 delta와 같은 작은 값을 더해주는 이유는 log에 0들어가는 경우 -무한대로 발산하기 때문에 작은 값을 더해주어 값이 설정되도록 해준다.

 

3. 미니배치 학습

훈련 데이터 중 일부만 골라 학습을 수해애하는 것

import sys, os
sys.path.append(os.pardir)
import numpy as np
from dataset.mnist import load_mnist

(x_train, t_train), (x_test, t_test) = \
  load_mnist(normalize=True, one_hot_label = True)

print(x_train.shape)
print(t_train.shape)

 

 

+ 손실 함수를 사용하는 이유

 

신경망 학습에서는 최적의 매개변수 참색을 위해 미분을 이용한다.

하지만 기존에 사용했던 정확도 값은 미분 값이 0이 되어버리는 경우가 많다.

미분값이 음수면 양의 방향으로, 양수면 음의 방향으로 움직이면서 최적의 매개변수를 탐색해야 하는데 정확도를 이용하면 이 과정이 불가능해진다.

따라서 손실 함수를 이용해서 매개변수 탐색을 할 수 있다.

 

728x90