딥러닝 핵심! AI 모델 성능 결정하는 3가지 손실 함수 완벽 가이드
AI 모델 만들 때 꼭 필요한 '손실 함수' 알아보기
이번 시간에는 AI 모델을 만들 때 정말 중요한 '손실 함수'에 대해 알아볼 거야. AI 모델을 만드는 과정은 크게 다섯 단계로 나눌 수 있는데, 지금 우리는 모델을 '훈련'시키는 단계에서 '손실 함수'를 배우고 있어.
AI 모델 만드는 5단계
- 데이터 준비: AI가 학습할 데이터와 평가할 데이터를 준비해.
- 모델 만들기: AI 모델의 뼈대를 만들어.
- 모델 훈련: 준비된 학습 데이터를 사용해서 모델의 성능을 높여. (지금 배우는 내용!)
- 모델 평가: 훈련된 모델이 얼마나 잘 작동하는지 확인해.
- 모델 개선: 성능이 만족스럽지 않으면 1~4단계를 다시 반복해서 모델을 더 좋게 만들어.
왜 손실 함수가 중요할까?
모델을 훈련시킬 때, AI는 정답을 맞추려고 노력해야 해. 그런데 AI가 얼마나 잘 맞추고 있는지, 아니면 얼마나 틀리고 있는지를 알려주는 기준이 필요하잖아? 바로 그 기준이 '손실 함수'야. 손실 함수는 AI가 틀릴 때마다 "얼마나 많이 틀렸는지"를 숫자로 알려줘. AI는 이 숫자를 줄이려고 노력하면서 점점 더 똑똑해지는 거지.
이미지 분류 문제: AI의 어려운 숙제
우리가 배울 내용을 쉽게 이해하기 위해 '이미지 분류'라는 문제를 예시로 들어볼게. 이미지 분류는 사진을 보고 이게 고양이인지, 강아지인지, 자동차인지 등을 맞추는 거야.
왜 이미지 분류가 어려울까?
- 컴퓨터는 숫자로만 봐: 사람은 사진을 보고 바로 고양이라는 걸 알지만, 컴퓨터는 수많은 숫자들의 배열로만 봐. 이 숫자들에서 '고양이'라는 의미를 뽑아내는 게 어렵지.
- 다양한 모습: 고양이도 각도에 따라, 빛에 따라, 배경에 따라 다르게 보일 수 있어. 심지어 같은 고양이끼리도 생김새가 다를 수 있지. 이런 다양한 변화에도 AI는 고양이를 고양이로 인식해야 해.
이런 어려움 때문에 예전에는 사람이 직접 규칙을 만들어서 AI를 가르치려고 했지만, 잘 되지 않았어. 그래서 요즘은 머신러닝이라는 방법을 써. 많은 이미지와 정답을 AI에게 보여주고, AI가 스스로 규칙을 배우게 하는 거지.
선형 분류기: AI의 기본 블록
이제 AI 모델을 만드는 데 사용되는 '선형 분류기'에 대해 알아볼 거야. 선형 분류기는 마치 레고 블록처럼, 나중에 더 복잡한 AI 모델을 만드는 데 사용돼.
선형 분류기는 입력된 이미지(숫자들의 배열)를 받아서 각 클래스(고양이, 강아지 등)에 대한 '점수'를 계산해. 이 점수가 높을수록 해당 클래스일 확률이 높다고 보는 거지.
선형 분류기의 작동 방식 (간단하게)
간단한 예시로, 2x2 픽셀짜리 이미지가 있고 3개의 클래스(고양이, 강아지, 양)가 있다고 해보자.
- 이미지를 4개의 숫자로 된 벡터로 만들어.
- 각 클래스마다 4개의 숫자로 된 '템플릿'(가중치 W)을 가지고 있어.
- 이미지 벡터와 각 클래스의 템플릿을 곱하고 더해서 각 클래스의 점수를 계산해.
- 가장 높은 점수를 받은 클래스가 AI의 예측 결과가 되는 거야.
이 템플릿(W)은 마치 각 클래스의 특징을 담고 있는 지도와 같아. AI는 이 템플릿을 잘 만들어서 이미지가 어떤 클래스의 템플릿과 가장 잘 맞는지 비교하는 거지.
손실 함수: AI의 '얼마나 틀렸는지' 측정기
앞에서 선형 분류기가 각 클래스에 대한 점수를 계산한다고 했잖아? 그런데 이 점수들이 얼마나 좋은지, 즉 AI가 얼마나 잘 예측했는지를 알려주는 게 바로 '손실 함수'야.
손실 함수는 AI의 '불행함'을 측정하는 거야.
- AI가 정답을 잘 맞추면 '불행함' (손실)이 낮아.
- AI가 정답을 많이 틀리면 '불행함' (손실)이 높아져.
AI는 이 '불행함'을 줄이기 위해 노력하면서 학습하는 거지.
손실 함수 계산 방법
전체 데이터셋에 대한 손실은 각 데이터마다 계산된 손실의 평균으로 구해.
$$ \text{Loss} = \frac{1}{N} \sum_{i=1}^{N} \text{Loss}_i $$
여기서 $N$은 데이터의 개수이고, $\text{Loss}_i$는 $i$번째 데이터에 대한 손실이야.
다중 클래스 SVM 손실 함수 (Multiclass SVM Loss)
이미지 분류 문제에서 많이 쓰이는 손실 함수 중 하나가 '다중 클래스 SVM 손실 함수'야. 이 손실 함수는 정답 클래스의 점수가 다른 클래스의 점수보다 얼마나 더 높은지를 측정해.
핵심 아이디어:
- 정답 클래스의 점수가 다른 클래스의 점수보다 1점 이상 더 높으면 손실이 없어.
- 만약 정답 클래스의 점수가 다른 클래스의 점수보다 1점 이상 높지 않으면 손실이 발생해.
계산 방식 (간단하게)
예를 들어, 고양이, 자동차, 개구리 세 가지 클래스가 있고, AI가 각 클래스에 대해 다음과 같은 점수를 계산했다고 해보자.
- 고양이 점수: 3.2
- 자동차 점수: 5.1
- 개구리 점수: -1.7
만약 정답이 '고양이'라면, 우리는 '고양이 점수'와 '자동차 점수', 그리고 '고양이 점수'와 '개구리 점수'를 비교해야 해.
- 고양이 vs 자동차: (자동차 점수 + 1) - 고양이 점수 = (5.1 + 1) - 3.2 = 2.9. 이 값은 0보다 크므로 손실이 발생해.
- 고양이 vs 개구리: (개구리 점수 + 1) - 고양이 점수 = (-1.7 + 1) - 3.2 = -3.9. 이 값은 0보다 작으므로 손실이 없어.
이런 식으로 모든 오답 클래스와 비교해서 발생한 손실들을 모두 더하면 해당 데이터의 SVM 손실이 되는 거야.
SVM 손실 함수의 특징:
- 최소값은 0: 정답 클래스의 점수가 다른 클래스보다 충분히 높으면 손실은 0이 돼.
- 최대값은 무한대: 오답 클래스의 점수가 정답 클래스의 점수보다 훨씬 낮으면 손실은 무한대로 커질 수 있어.
- 초기화 시 손실: 모델을 처음 만들 때는 가중치가 무작위로 설정되기 때문에 점수들이 대부분 0에 가깝게 나와. 이때 SVM 손실은 보통 $N \times (C-1)$ 정도가 돼. (N: 데이터 개수, C: 클래스 개수)
이처럼 손실 함수는 AI가 얼마나 틀렸는지를 알려주는 중요한 지표이고, SVM 손실 함수는 정답 클래스의 점수가 다른 클래스의 점수보다 얼마나 더 높은지를 기준으로 손실을 계산하는 방법 중 하나야.