일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 부채널 공격
- PRIME+ABORT
- 의존성
- 프라임 프로브
- PRIME+PROBE
- cpu
- prime abort
- transient execution attack
- min pooling
- cache side-channel
- 캐시 사이드채널
- depthwise convolution
- 로스함수
- Logical address
- down sampling
- PRMIE ABORT
- side-channel
- 사이드채널
- dilated convolution
- depth-wise separable convolution
- 프라임프로브
- depthwise separable convolution
- cache side channel
- out-of-order
- 캐시 사이드 채널
- down-sampling
- clflush
- depth-wise convolution
- 캐시사이드채널
- mean pooling
- Today
- Total
컴공과블로그
Loss function 이란? 본문
손실 함수는 비용함수(Cost Function)이라고도 불린다.
손실 함수는 '인공지능' 과목에 포함되는 Machine Learning 최적화의 기본 원리이며 기초적인 개념이다.
위의 그림은 일반적인 통계학적 모델의 형태로 Input이 들어오면 모델을 통해 Output이 산출되는 방식이다.
예측 값은 실제 값과 얼마나 유사한지 판단하는 기준이 필요한데 그게 Loss Function(손실 함수)이다.
예측 값과 실제 값의 차이를 Loss라고 하며, 이 Loss를 줄이는 방향으로 학습이 진행된다.
예를 들어보면 파란색 점이 가지고 있는 데이터라고 가정해보자.
데이터가 이렇게 분포되어있을 때, 파란색 점 전체를 잘 대변하는 직선은 어떤 것인가?
파란색 점 전체를 잘 대변하는 직선의 모습은 위의 그림에서 빨간 선(우리의 가설 직선과 실제 값의 차이)의 총합이 최소화됐을 경우일 것이다.
Loss Function의 목적은 이 빨간 선들의 총합을 최소화하여 최적의 결괏값을 도출하는 것이다.
그렇다면 이 Loss Function은 무엇을 의미하는가?
Loss Function은 데이터를 토대로 산출한 모델의 예측 값과 실제 값과의 차이를 표현하는 지표이다. 조금 더 쉽게 설명하면, 손실 함수는 모델 성능의 '나쁨'을 나타내는 지표로, "현재의 모델이 데이터를 얼마나 잘 처리하지 못하느냐"를 나타내는 지표라고 할 수 있다.
"얼마나 나쁘냐"를 어떤 방식으로 표현하느냐에 따라 여러 가지 손실 함수가 존재한다.
통계학적 모델은 일반적으로 회귀(regression)와 분류(classification) 두 가지 종류로 나눠지는데, 손실 함수도 그에 따라 두 가지 종류로 나눠진다. 회귀 타입에 쓰이는 대표적 손실 함수는 MAE, MSE, RMSE가 있으며, 분류에 쓰이는 손실 함수는 Binary corss-entropy, Categorial cross-entropy 등이 있다. 다음은 언급된 손실 함수 종류와 각각의 특징에 대해서 설명하도록 하겠다.
회귀 타입에 사용되는 손실 함수는 대표적으로 평균 오차 계산법이 있으며, 평균 오차를 계산하는 방식(공식)에 따라 MAE, MSE, RMSE로 구분된다.
- 평균 절대 오차 (Mean Absolute Error, MAE)
평균 절대 오차는 예측 값과 정답 값의 차이에 절대값을 취하여, 그 값들을 전부 더하고, 개수로 나누어 평균을 낸 값이다. 예측 결과와 정답 결과가 떨어진 정도의 절댓값을 평균 낸 것이기에, 전체 데이터의 학습된 정도를 쉽게 파악할 수 있다. 하지만, 절댓값을 취하기 때문에 해당 예측이 어떤 식으로 오차가 발생했는지, 음수인지 양수인지 판단할 수 없다는 단점이 있다. 또한 아래 그림처럼 최적 값에 가까워지더라도 이동거리가 일정하기 때문에 최적 값에 수렴하기 어렵다.
- 평균 제곱 오차 (Mean Squared Error, MSE)
평균 제곱 오차는 가장 많이 쓰이는 손실 함수 중 하나이다. 예측 값과 실제 값 사이의 평균을 제곱하여 평균을 낸 값이다. 차이가 커질수록 제곱 연산으로 인해 값이 뚜렷해지며 제곱으로 인해 오차가 양수이든 음수이든 누적 값을 증가시킨다. MSE는 실제 정답에 대한 정답률의 오차뿐만 아니라 다른 오답들에 대한 정답률 오차 또한 포함하여 계산한다는 것이 특징이다. MSE는 MAE와 달리 최적 값에 가까워질 경우 이동거리가 다르게 변화하기 때문에 최적 값에 수렴하기 용이하다. MSE의 단점으론 값을 제곱하기 때문에, "1 미만의 값은 더 작아지고, 그 이상의 값은 더 커진다". 즉 값의 왜곡이 있을 수 있다.
- 평균 제곱근 오차 (Root Mean Square Error, RMSE)
평균 제곱근 오차는 MSE에 루트를 씌운 지표로 장단점은 MSE와 유사한 형태로 이루어진다. 하지만 제곱된 값에 루트를 씌우기 때문에 값을 제곱해서 생기는 왜곡이 줄어들며, 오차를 보다 직관적으로 보여준다. 그 이유는 루트를 씌워주기 때문에 오류 값을 유산한 단위로 변환하여 해석을 할 수 있기 때문이다.
3가지 손실 함수에 대한 비교 분석
오른쪽 그래프인 MAE의 경우에, 각 examples에 대한 오차는 모두 동일하게 가중되어 고려되고 있다. 반면에, 왼쪽 그래프인 RMSE는 0과 1 사이의 오차는 더 작게, 1 보다 큰 오차는 더 크게 가중되어 고려되고 있다. 아래 그림에서 계산한 것을 참고할 때, 하나의 Outlier가 있는 경우, MAE는 다른 examples과 outlier를 동일하게 가중하여 고려하기 때문에 비교적 loss값이 낮게 나오지만, RMSE 경우에는 루트를 취했음에도 불구하고, outlier가 다른 examples 보다 가중되어 고려되기 때문에 비교적 loss값이 크게 나타난다. MSE였더라면 있었다면, 손실 값은 RMSE보다도 훨씬 더 컸을 것이다.
언제 어떤 Loss Function을 사용하는가?
하지만 MSE 경우에는 이상치에 민감하게 반응하여 학습하기 때문에, 손실 함수가 이상치에 의해 발생한 오차로부터 비교적 많은 영향을 받는다.
그러한 탓에, 이상치까지 고려하여 모델 일반화가 이루어진다. 하지만 이것이 모든 경우에 일반화를 제대로 하지 못했다고 간주될 수 없다. 어떤 경우에는 이상치를 무시하여 일반화할 필요가 있고 (MAE 쓰는 경우), 다른 경우에는 이상치도 고려하여 일반화(MSE 쓰는 경우)할 필요가 있기 때문이다.
앞에서 설명했듯이, RMSE는 MSE 보다 이상치에 대해 상대적으로 둔감하다. 하지만 이는 MAE처럼 모든 error에 동일한 가중치를 주지 않고, error가 크면 더 큰 가중치를 작으면 더 작은 가중치를 준다는 점에서, 여전히 이상치에 민감하다고 간주될 수 있다. 따라서 모델 학습 시 이상치에 가중치를 부여하고자 한다면, MSE에 루트를 씌운 RMSE를 채택하는 것은 적절하다.
다음은 분류 타입에 사용되는 Loss Function에 대해서 말해보겠다.
분류 타입에 대표적으로 사용되는 Loss Function은 cross-entropy 방식이 있다.
그렇다면, 여기서 cross-entropy란 무엇을 의미하는 것일까?
Cross-entropy는 실제 분포 q에 대하여 알지 못하는 상태에서, 모델링을 통하여 구한 분포인 p를 통하여 q를 예측하는 것이다. 이때, q와 p가 모두 식에 들어가기 때문에, cross-entropy라는 이름이 생겼다.
Cross-entropy에서 실제 값과 예측 값이 맞는 경우에는 0으로 수렴하고, 값이 틀릴 경우에는 값이 커지기 때문에, 실제 값과 예측 값의 차이를 줄이기 위한 방식이라고 이해하면 된다. 하지만 이 Cross-entropy는 label의 값이 one-hot encoding일 경우에만 사용 가능하다.
*One hot encoding: multinomial classification에서 사용하는 인코딩 방법으로 출력 값의 형태가 정답 label은 1이고 나머지label 값은 모두 0 ex) [1,0,0], [0,1,0], [0,0,1]
그럼 구체적으로 Binary cross-entropy와 Categorical entropy에 대해서 알아보자.
- Binary cross-entropy
Binary cross-entropy는 이진 분류에 사용되는 방식이다. 예를 들어, True 또는 False, 양성 또는 음성 등 2개의 class를 분류할 때 사용하는 방식으로 예측 값이 0과 1사이의 확률 값으로 나온다. 1에 가까우면 하나의 클래스(True or 양성) 일 확률이 큰 것이고, 0에 가까우면 다른 하나의 클래스(False or 음성)일 확률이 큰 것이다.
- Categorical cross-entropy
Categorical cross-entropy는 분류해야 할 클래스가 3개 이상인 경우, 즉 멀리클래스 분류에 사용된다. 라벨이 [0,0,1,0,0], [1,0,0,0,0], [0,0,0,1,0]과 같이 one-hot 형태로 제공될 때 사용된다. 일반적으로 예측 값은 [0.02 0.94 0.02 0.01 0.01]와 같은 식으로 나오기 때문에 여러 class 중 가장 적절한 하나의 class를 분류하는 문제의 손실 함수로 사용되기에 적합하다.
'Machine Learning > Basic' 카테고리의 다른 글
AI(인공지능), ML(머신러닝), DL(딥러닝) 구분/차이 (1) | 2023.10.06 |
---|---|
padding, stride, convolution(합성곱) 연산, 배치처리 란 무엇일까? 이것은 대체 뭘까? (0) | 2023.08.09 |
Epoch, Batch, Iteration 이란? 차이점은 무엇일까? 무엇이 다른걸까? (0) | 2023.08.09 |