본문 바로가기
C.W.K.
Stream
Lesson 03 of 08 · published

손실 함수

~8 min · training

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

손실 함수는 모델이 풀 문제를 숫자로 정의해

손실 함수는 예측이 얼마나 틀렸는지를 옵티마이저가 줄일 수 있는 스칼라 값으로 바꿔. 잘못 고르면 모델은 오류를 내지 않고도 다른 목표를 성실하게 최적화할 수 있어. 따라서 손실 함수 선택은 실제 문제와 레이블 형식을 선언하는 일이야.

손실 함수과제레이블 형식
CategoricalCrossentropy다중 클래스 분류원-핫: [0,0,1,0]
SparseCategoricalCrossentropy다중 클래스 분류정수: 2
BinaryCrossentropy이진·다중 레이블 분류0 또는 1
MeanSquaredError회귀연속값
Huber이상치에 강한 회귀연속값

SparseCategoricalCrossentropy2 같은 정수 레이블을 받고 CategoricalCrossentropy[0,0,1,0] 같은 원-핫 벡터를 받아. 회귀 데이터에 이상치가 있다면 MSE 대신 Huber를 고려해. 작은 오차에서는 MSE처럼, 큰 오차에서는 MAE처럼 동작해 일부 이상치가 기울기를 지배하지 못하게 해.

from_logits=True로 수치 안정성을 얻어

마지막 레이어가 softmax나 sigmoid 없이 원시 점수를 낸다면 from_logits=True를 사용해. 활성화 함수와 손실을 따로 계산하는 것과 수학적으로 같지만 Keras가 하나의 안정적인 연산으로 합쳐 중간 확률의 underflow를 막아줘.

Code

Softmax 손실과 from_logits=True 비교·python
# Option A: softmax output + standard loss
model.compile(loss="sparse_categorical_crossentropy")

# Option B (preferred): no output activation + from_logits
model.compile(
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True)
)

External links

Exercise

MNIST를 (a) softmax + sparse_categorical_crossentropy와 (b) softmax 없는 출력 + crossentropy(from_logits=True)로 학습해 손실과 최종 정확도를 비교해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.