C.W.K.
Stream
Lesson 04 of 08 · published

Metric

~8 min · training

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

Metric vs loss — 다들 헷갈리는 선

loss 랑 metric 은 compile() 에서 비슷해 보이지만 역할이 정반대야. loss 는 학습이 minimize 하는 대상 — gradient 가 흘러야 하니 미분 가능해야 해. metric 은 순수 observer — step 마다 계산되고 log 에 찍히지만 gradient 엔 절대 손 안 대. accuracy 가 metric 은 되는데 loss 는 못 되는 이유가 딱 이거야: step function 이라 미분 불가능, optimizer 한텐 쓸모없지만 사람한테 model 상태 알려주는 덴 완벽.

metrics 는 list 로 넘기고 문자열이랑 인스턴스 섞어도 돼. 이름 붙이거나 (log 에 깔끔하게 나오게) 설정하려면 인스턴스 형태. Code 섹션은 classifier 에 실제로 쓸 metric 스택 — accuracy 에 precision/recall/AUC/F1 family 까지, 얼마나 자주 틀리는지뿐 아니라 *어디서* 틀리는지 알려줘.

validation 을 봐, 없으면 직접 만들어

fit() 에서 찍히는 모든 metric 은 validation data 넘기는 순간 val_ 쌍둥이가 생겨 — accuracyval_accuracy. training metric 은 model 이 fit 하는 걸, validation metric 은 일반화하는 걸 보여주고, 둘 사이 gap 이 overfitting 게이지야. callback 의 monitor 도 이 metric 이름으로 매칭해. built-in 으로 안 잡히는 게 있으면 keras.metrics.Metric 을 subclass 해서 세 메서드 구현 — update_state() 가 batch 동안 누적, result() 가 현재값 반환, reset_state() 가 epoch 경계마다 초기화.

Code

compile() 에 여러 metric 쌓기·python
model.compile(
    optimizer="adam",
    loss="sparse_categorical_crossentropy",
    metrics=[
        "accuracy",
        keras.metrics.SparseCategoricalAccuracy(name="acc"),
        keras.metrics.AUC(name="auc"),
        keras.metrics.Precision(name="precision"),
        keras.metrics.Recall(name="recall"),
        keras.metrics.F1Score(name="f1"),
    ],
)

External links

Exercise

binary classifier 를 metrics=['accuracy', keras.metrics.AUC(), keras.metrics.Precision(), keras.metrics.Recall()] 로 compile. 한 epoch 학습, log 의 4 metric 검사.

Progress

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

댓글 0

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

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