AI/Machine Learning
[ML] 평균 제곱 오차, 교차 엔트로피 오차, 로그우도 계산 방법
운호(Noah)
2021. 11. 30. 23:34
평균 제곱 오차 (MSE, Mean Squared Error)
추가 설명
- yi 는 예측값, ti 는 정답값입니다.
예제 코드
import numpy as np from sklearn.metrics import mean_squared_error y_pred = np.array([0.001, 0.9, 0.001, 0.098]) y_real = np.array([0, 0, 0, 1]) # 평균제곱오차 print(mean_squared_error(y_pred, y_real)) print(((0.001-0)**2 + (0.9-0)**2 + (0.001-0)**2 + (0.098-1)**2)/4)
교차 엔트로피 오차(CEE, Cross Entropy Error)
추가 설명
- yi 는 예측값, ti 는 정답값입니다.
- 해당 공식에서 ln 은 밑이 e 인 자연로그이므로, ln(x) = log(x) 입니다.
- 교차 엔트로피와 이진 교차 엔트로피의 차이점
예제 코드
import numpy as np y_pred = np.array([0.001, 0.9, 0.001, 0.098]) y_real = np.array([0, 0, 0, 1]) # 교차 엔트로피 def cross_entropy_error(y,t): # 로그 함수는 x = 0 에서 무한대로 발산하는 함수이기 때문에 x = 0 이 들어가서는 안된다. # 따라서, 매우 작은 값을 넣어 - 무한대가 나오는 것을 방지한다. delta = 1e-7 return -np.sum(np.log(y+delta) * t) print(cross_entropy_error(y_pred, y_real)) print(-(np.log(0.001+1e-7)*0 + np.log(0.9+1e-7)*0 + np.log(0.001+1e-7)*0 + np.log(0.098+1e-7)*1))
로그 우도 (Log Likelihood)
추가 설명
- 마지막 층의 활성화함수로 softmax 가 사용됐을 경우, 목적함수로 사용되기도 합니다.
- 모든 노드를 고려하는 평균 제곱 오차나 교차 엔트로피와는 달리, 정답에 해당하는 노드만 확인합ㄴ다.
- Oy 는 정답에 해당하는 노드의 예측값을 의미합니다.
예제 코드
import numpy as np y_pred = np.array([0.001, 0.9, 0.001, 0.098]) y_real = np.array([0, 0, 0, 1]) print(-np.log(0.098))
참고
- https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=wideeyed&logNo=221025759001&beginTime=0&jumpingVid=&from=search&redirect=Log&widgetTypeCall=true
- https://velog.io/@peterpictor/딥러닝-소프트맥스로그우도
- https://wordbe.tistory.com/entry/교차-엔트로피Cross-Entropy와-로그우드Log-Likelihood
- https://gooopy.tistory.com/63