1 개요편집
딥러닝을 통해 어떤 현상을 예측하고 나면 그 예측의 정확도에 따라 다시 학습을 해주어야 한다. 손실함수는 그 오차를 이전의 가중치들에 전달하며 가중치를 조절하는 데 쓰인다. 딥러닝의 목표는 이 손실함수를 작게 만드는 것이 목표라 보아도 무방하다.
2 오차제곱합편집
Sum of Squares for Error. SSE. 신경망의 출력값과 실제 값의 오차를 제곱한 후 이들을 합한 것이다.
2.1 구현편집
def sum_squares_error(y, t): # 참 값을 t에 넣고, 추정값을 y에 넣어 구하자.
return 0.5 * np.sum((y-t)**2)
3 평균제곱오차편집
Mean Squared Error. MSE. 출력값과 실제 값의 차를 제곱한 후 더하고 관측값으로 나눈 것.
RMSE는 위 오차에 루트를 씌워준 것.
4 교차 엔트로피 오차편집
cross entropy error. CEE. 오차제곱합에선 정답에 대한 정보 외에 정답이 아닌 것에 대한 오차도 들어간다. 이런 정보는 사실상 쓸데 없다고 할 수 있지 않을까. 때문에 답이 아닌 다른 추측에 대한 정보를 제거하기 위해 연산값에 를 곱하는 형태를 취하고, 정답에서 벗어난 답을 낼수록 더 큰 값을 갖게 하기 위해 로그를 사용한다.(얼추 맞으면 그닥 교육이 이루어지지 않게끔 하기 위해.)
밑이 e인 자연로그를 사용한 방식이다. 해당 답에 1이라는 결과를 내면 오차는 없고, 0에 가까울수록 무한대로 큰 값을 갖는다.
def cross_entropy_error(y, t): # 참 값을 t에 넣고, 추정값을 y에 넣어 구하자.
delta = 1e-7 # 작아질 수 있는 최소값을 지정하기 위해 아주 작은 수를 더한다.
return -np.sum(t * np.log(y+delta) ) # y=0이 되더라도 delta에 의해 무한대의 값을 갖진 않는다.
y가 0에 가까워질수록 급격하게 무한대에 가까워지는데, 곧잘 컴퓨터에서 다룰 수 있는 수치를 넘어선다. 때문에 실질적으로 그닥 영향을 미치지 않을 delta를 더해준다.