안녕하세요
오늘은 지난 주요 개념에 이어 머신러닝의 주요 개념 중 하나인 '손실함수'에 대해 알아보겠습니다.
손실함수(Loss Function)으로, 말그대로 모델이 데이터를 잘 표현했는지 얼마나 예측을 정확하게 했는지 수학적으로 떨어져 있는지 계산하는 함수입니다. 경제학에서 먼저 사용된 용어로 Cost Function 이라고도 합니다. 손실이 적을 수록 데이터 예측을 정확하게 했다고 볼 수 있습니다.
손실함수를 사용할 때 중점을 어느 부분에 두느냐에 따라 값이 달라질 수 있습니다. 그때는 각각의 손실함수를 덧붙여 활용할 수 있습니다.
손실함수는 대개 데이터 전체를 대상으로 계산하는 함수지만, 각 데이터별 손실함수를 계산하여 그 값을 더해 손실함수를 계산하기도 합니다. 확률적 독립이고 같은 분포를 가진다는 가정이 있는데, 대표적으로 i.i.d(독립항등분포)입니다.
손실함수 종류는 여러가지가 있지만 그 중 '산술 손실함수', '확률 손실함수', '랭킹 손실함수', '모델 복잡도와 관련된 손실함수'에 대해 설명드리겠습니다.
'산술 손실함수'는 산술값을 예측할 때 예측값과 실제 데이터값의 차이를 산술적으로 계산하는 함수입니다. 일반적으로 회귀 모델에 많이 사용됩니다. 그리고 그 방법에는 차이의 제곱을 사용하는 제곱 손실함수, 차이의 절대값을 사용하는 절대값 손실함수가 있습니다. 제곱 손실함수는 가장 많이 사용되는 방법 하나이며, 그 이유는 최적화가 쉽고 손실값에 대한 이해를 쉽게 도와주기 때문입니다. 데이터 각 손실값을 구하는 경우 전체 데이터에 대한 각각의 손실값을 합산하거나 평균을 낸 값을 사용합니다. - 평균 제곱 오차 함수(MSE)
'절대값 손실함수'는 정답과 멀리 떨어져 있는 데이터가 많아서 손실값을 제곱하면 손실함수의 값이 크게 달라져 학습을 방해하는 경우 사용합니다.
'확률 손실함수'는 특정 데이터를 선택하는 분류 모델에 더 적합합니다. 확률 손실함수는 모델이 데이터를 제대로 예측할 확률을 최대화하여 계산하는 함수입니다. 확률을 최대화로 올리는 방식에는 MLE(최대 가능도 방법), KL-발산(쿨백-라이블러 발산) 등 여러가지가 있습니다. 그 중 자주 사용되는 교차 엔트로피 함수에 대해 알아보겠습니다.
'교차 엔트로피 함수(CEE)'는 딥러닝에서 특히 많이 사용하며, 위에 설명드린 MLE 방식에 따라 구성됩니다. 여기 가능도란 모델에 데이터가 얼마나 적합한지에 조건부 확률을 나타냅니다. 즉 가능도가 높을 수록 적합한 데이터를 잘 표현하였다고 볼 수 있습니다. 구하는 방식은 최소값을 구하는 최적화 방식을 많이 사용하므로, '음의 로그 가능도 손실함수'를 사용하여 계산의 편의를 돕습니다.
'랭킹 손실함수'는 말그대로 각 개별 데이터에 대한 손실을 계산하는 것이 아니라 모델이 예측한 값들의 순위만 계산을 합니다. 이 함수는 리스트 추천 시스템이나 랭킹학습 분야 사용됩니다.
대표적으로 '페어와이즈 제로-원 손실함수'가 있는데, 모델의 각 데이터의 쌍을 비교하여 맞았는지 틀렸는지를 판별하여 그 결과값으로 손실함수를 계산합니다.
'편집 거리'라는 랭킹 손실함수는 모델이 예측한 순서에서 몇 번을 바꾸어야 원래 순서로 돌아가는지 측정하여 손실함수를 계산합니다.
'모델 복잡도와 관련된 손실함수'는 별도의 손실함수를 활용하지 않고, 산술 손실함수와 확률 손실함수를 결합하여 사용합니다. 앞어 정규화 과정을 통해 모델이 너무 복잡해지지 않도록 설정하는 방법을 손실함수로 대체할 수 있습니다.
그러나 손실함수는 모델의 오류 즉 예측 오류도 고려해야 하기 때문에 예측 오류와 복잡도에 대한 가중치를 두기 위한 파라미터를 추가합니다. 인자값이 '0'으로부터 많이 멀어지지 않도록 가정을 세워 결과값이 커지지 않게 하여 손실을 줄이는 것이 목적입니다. 그러나 모델이 예측을 제대로 하지 못하고 복잡도만 낮춘다면 의미가 없기 때문에, 모델 복잡도와 관련된 손실함수는 예측 손실함수와 복잡도 손실함수 등을 복합적으로 활용하여 예측도와 복잡도의 균형을 맞춥니다.
모델은 지속적으로 학습하여 데이터의 예측 정확도를 높이는 것이 중요합니다. 그 과정에서 지표로 삼을 수 있는 것이 바로 손실함수입니다. 매개변수에 따라 변화하는 손실함수를 최소화하여 모델에 최적화 된 값을 도출하는 것이 손실함수의 목적이자 머신러닝의 정확도와 활용도를 높이는 일이 되겠습니다. 위에서 설명드린 것과 같이 회귀, 분류, 랭킹, 추천 등 머신러닝의 여러가지 모델에 따라 다른 손실함수가 사용됩니다. 동시에 2~3개의 손실함수가 결합되어 사용될 수도 있습니다. 각각 손실함수에 대한 이해도 중요하지만 각 모델에 적합하고 가장 효율적으로 모델의 예측 정확도를 높일 수 있는 방법을 찾는 것이 가장 중요하겠습니다.
다음에는 손실함수를 통한 계산 후 이루어지는 '최적화'에 대해 설명드리겠습니다.
감사합니다.
'머신러닝' 카테고리의 다른 글
[머신러닝 입문]머신러닝 주요 개념-모델 평가 (0) | 2020.03.29 |
---|---|
[머신러닝 입문]머신러닝의 주요 개념 - 최적화 (0) | 2020.03.28 |
[머신러닝 입문]머신러닝의 주요 개념-모델 (0) | 2020.03.26 |
[머신러닝 입문]머신러닝의 관점과 기법 (0) | 2020.03.24 |
[머신러닝 입문]처음 배우는 머신러닝 입문자를 위한 정보 (0) | 2020.03.22 |