파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다.
▶ 손실함수
손실함수는 실제 값과 예측값을 입력으로 받아 실숫값 점수를 만드는 함수로 수행하고자 하는 태스크에 따라 손실함수가 달라진다. 손실함수로 나온 실숫값이 높을수록 예측값과 실제값 사이의 차이가 크다는 의미이기 때문에 모델의 성능이 나쁘다고 할 수 있다. 따라서 모델 학습은 이 실수값을 낮추기 위해 학습되어야할 것이다.
주로 회귀모형에선 평균 제곱 오차 손실 Mean Squared Error, 분류 모형에선 크로스엔트로피 Cross Entropy 손실함수를 많이 사용한다.
해당 포스팅에선 평균 제곱 오차손실, 다중 분류 문제에서 많이 사용되는 범주형 크로스 엔트로피 손실과 이진 분류 문제에서 많이 사용되는 이진 크로스 엔트로피 손실에 대해 다뤄보고자 한다.
▶ 평균 제곱 오차 손실
MSE는 타겟이 연속형 수치인 회귀문제에서 많이 사용되는 손실함수로 다음 공식을 가진다.
실제값과 예측값을 뺀 값에 제곱하여 평균 한 값으로 출력과 타깃 사이의 거리를 실수값으로 계산하여 그들의 차이를 볼 수 있다. MSE에선 실제값과 예측값의 뺀 값이 음수로 나오는 것을 방지하기 위해 제곱을 취해줬지만 평균 절대값 오차 Mean Absolute Error의 경우엔 그 차이에 절대값을 취해 손실함수 값을 구한다.
▷ 구현
파이토치 nn모듈의 MSELoss를 통해 구현할 수 있다.
▶ 범주형 크로스 엔트로피 손실
이 손실함수는 클래스 소속 확률에 대해 예측하는 다중 분류모델에서 사용되는 함수이다. 타겟은 원소 n개로 이뤄진 벡터로 출력값 역시 원소 n개로 이뤄진 벡터이다. 따라서 타겟이 2개이면 크로스 엔트로피의 출력값 역시 2개로 원핫 벡터처럼 나타낼 수 있다.
공식은 다음과 같다.
음의 부호의 실제값에 예측값에 로그를 취한 값을 곱하고 모두 더한다. 해당 손실함수의 값으로 정답 클래스의 확률이 1, 다른 클래스의 확률은 0에 가까운 상태로 만들도록 할 수 있다.
▷ 구현
인덱스를 모델 출력으로 변환하는 효율적인 계산을 수행한다.
▶ 이진 크로스 엔트로피 손실
범주형이 다중 클래스 분류 문제에 유용하다면 이 함수는 클래스 두개를 구분하는 이진 분류 문제에 적합하다. 이진 크로스 엔트로피 손실은 이진 확률 벡터와 정답 벡터를 사용해 계산할 수 있다.
▷ 구현
위와 같이 시그모이드 함수에서 산출된 0-1사이의 값을 가지는 이진확률 벡터와 정답 벡터의 차이를 공식을 활용해 구할 수 있다.
'Data > 머신러닝 & 딥러닝' 카테고리의 다른 글
CNN 추가 개념/ 풀링, 배치정규화, NiN 연결, 잔차연결 (0) | 2021.07.27 |
---|---|
신경망의 기본 구성 요소(7)/ 과대적합과 L1, L2 규제 (0) | 2021.07.20 |
신경망의 구성요소(5)/ 활성화 함수- 소프트맥스 (0) | 2021.07.20 |
신경망의 구성요소 (4)/ 활성화 함수- ReLU (0) | 2021.07.20 |
신경망의 기본 구성요소(3)/ 활성화 함수- 하이퍼볼릭 탄젠트 (0) | 2021.07.19 |