Loss function(손실함수)
딥러닝의 목표는? 학습할 수 있는 최적의 가중치(weights)를 찾는 것이다.
신경망은 데이터를 그대로 학습한다. 즉, 신경망은 이미지에 포함된 중요한 특징까지도 기계가 합습한다. 이를 종간간 기계학습(End-To-End)라고 할 수 있다. 처음부터 끝까지 입력 데이터에서 목표한 축력 데이터를 사람의 개입 없이 얻을 수 있다.
신경망 학습에서 사용하는 지표는 손실함수(Loss Function)이다. 손실함수는 신경망 성능이 안 좋은 정도를 나타내며, 수치가 낮을수록 훈력 데이터를 잘 처리하는 것이다.
1. MSE
MSE는 각 데이터의 차원에서의 원소의 출력 값과 정답 레이블의 차를 제곱한 후에 그 총합을 구하는 것이다.
2. RMSE
MSE에 루트(√)를 씌운 것으로 MSE와 기본적으로 동일하다. MSE 값은 오류의 제곱을 구하기 때문에 실제 오류 평균보다 더 커지는 특성이 있어 MSE에 루트를 씌운 RMSE 은 값의 왜곡을 줄여준다.
#MSE와 RMSE이는 실제값과 예측값의 편차를 이용해 weights를 평가해 수치형 데이터에 알맞는다.
@@실제 오류 평균보다 더 커지면 학습에 오버피팅이 되나?
3. 교차 엔트로피 오차(Cross Entropy Error, CEE)
손실 함수로 MSE 외에도 CEE도 자주 사용한다.
직관적으로 이해가 안됐는데 Hands on ML 책에서 설명한 Cross Entopy 예시를 참고하니 이해가 잘됐다.
-크로스 엔트로피는 원래 정보이론에서 유래했따. 매일 날씨 정보를 효율적으로 전달하려 한다고 가정하자. 8가지 정보(맑음,비,눈,태풍 등등..)이 있다면 2의3제곱=8이므로 이 선택사항을 3비트로 인코딩 할 수가 있따. 그러나 거의 대부분의 날이 맑음이라면 '맑음'을 하나의 비트(0)으로 인코딩하고 다른 7개의 선택 사항을 (1로 시작하는) 4비트로 표현하는 것이 효율적일 것이다. 크로스 엔트로피는 선택 사항마다 전송한 평균 비트 수를 측정한다. 날씨에 대한 가정이 완벽하면 크롴스 엔트로피는 날씨 자체의 엔트로피와 동일할 것이다. 그러나 이런 가정이 틀렸따면 크로스 엔트로피는 커질것이다.
#즉 전체의 평균에서 이 y^이 어느정도의 가치를 지니고 있는지?, 이산형 데이터임을 가정한다. 기준에 대한 확률값?
3.2 Categorical Cross-Entropy Loss
Softmax activation 뒤에 Cross-Entropy loss를 붙인 형태로 주로 사용하기 때문에 Softmax loss 라고도 불린다.
→ Multi-class classification에 사용됩니다.
우리가 분류문제에서 주로 사용하는 활성화함수와 로스.분류 문제에서 하나의 클래스를 구분할 때 softmax와 CE loss의 조합을 많이 사용합니다.
3.3 sparse categorical crossentropy
sparse categorical crossentropy 역시 멀티클래스 분류에 사용되는 손실함수입니다. 이름에 sparse 하나가 추가된 것이다.
그러면 sparse categorical crossentropy가 사용되는 경우는 언제일까요?
바로 라벨이 0, 1, 2, 3, 4와 같이 정수의 형태로 제공될 때입니다.
#참고) 아주 수학적으로 잘 설명해 주셨다. 읽어보면 너무 좋을듯함
https://theeluwin.postype.com/post/6080524
4. 손실함수(Loss Function)을 쓰는이유
출처 : https://needjarvis.tistory.com/567 [자비스가 필요해]
너무나도 내가 궁금했던 점을 잘 짚어주셨기 때문에 첨부한다
나는 처음으로 손실함수를 접했을 때, 왜 정확도를 안 구하고, loss값을 구할까?라는 질문을 했다. 이러한 의문은 '미분'이라는 역할을 생각해 보면 해결 할 수 있다. 신경망 학습에서는 최적의 매개변수 (가중치와 편향) 값을 탐색할 떄 손실 함수의 값을 가능한 작게 하는 매개변수 값을 찾는다. 이 때 매개변수의 미분을 계산하고, 그 미분 값을 단서로 매개변수의 값을 서서히 갱신하는과정을 반복하게 된다.
가령 여기에 가상의 신경망이 있고 그 신경망의 어느 한 가중치 매개변수에 주목한다고 할 때 그 가중치 매개변수의 손실함수의 미분이란 가중치 매개변수의 값을 아주 조금 변화 시켰을 때 손실 함수가 어떻게 변하냐의 의미이다.
만약 이 미분 값이 음수라면 그 가중치 매개변수를 양의 방향으로 변화시켜 손실 함수의 값을 줄일 수 있다. 반대로, 이 미분 값이 양수라면 그 가중치 매개변수를 음의 방향으로 변화시켜 손실 함수의 값을 줄일 수 있다.그러나 미분 값이 0 이라면 가중치 매개변수를 어느 쪽으로 움직여도 손실 함수의 값은 달라지지 않는다. 그래서 그가중치 매개변수의 갱신은 거기서 멈춘다. + 이부분도 신경망 부분에서 자세히 다뤘다.
@@무슨말임.
정리하면, 손실함수는 매개변수의 변화에 연속적으로 변화하지만, 정확도는 매개변수의 변화에 둔감하고, 변화가 있더라도 불연속적으로 변화하기 때문에 미분이 불가능하다. 미분이 안되면 최적화를 할 수 없어서 정확도가 아닌 손실 함수를 지표를 삼아 학습을 하는 것이다.
'머신러닝-딥러닝 > study' 카테고리의 다른 글
0120_DL study (Finetuning,pretrained,Pseudo labeling,tta) (0) | 2022.01.20 |
---|---|
1. Pytorch 첫 걸음 (torch함수, backprop,dim...) (0) | 2022.01.19 |
[pytorch] 파이토치로 시작하는 Image Segmentation (1) (0) | 2021.12.16 |
1. 머신러닝,딥러닝 개요 (0) | 2021.04.29 |
(ch.1) Image Classification - GoogLENet (0) | 2020.12.30 |