본문 바로가기
C.W.K.
Stream
Lesson 07 of 10 · published

딥러닝이 지나친 선택인 곳

~16 min · anti-patterns, tradeoffs

Level 0호기심
0 XP0/73 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

4개의 적신호

특징이 뚜렷한 소규모 표 형식 데이터. 행은 수천 개, 이름이 잘 붙은 열은 수십 개이고 목표도 명확하다면, 기울기 부스팅이 Transformer를 가볍게 이길 수 있어. VRAM을 놓고 씨름할 필요도 없고.

단순한 규칙만으로 이미 해결됨. if user.age < 18 then block으로 비즈니스 문제가 풀린다면 모델을 제안하지 마. 규칙은 감사가 가능하고, 즉시 실행되며, 비용도 들지 않고, 과적합될 수도 없어.

엄격한 해석 가능성이 필요함. 일부 분야(credit scoring, medical triage, regulated industry)에서는 사람이 결정을 정당화할 수 있어야 해. Monotonic constraint를 적용한 선형 모델은 솔직해. 블랙박스 Transformer는 소송을 부를 수 있고.

GPU 없이 millisecond 단위의 지연 시간 예산. CPU에서 p99 지연 시간을 100ms로 맞춰야 한다면 Transformer의 순전파를 끼워 넣을 여유가 없어. 양자화와 증류가 도움이 되기는 하지만, 잘 튜닝한 트리 모델은 그런 작업 없이도 사양을 맞추는 경우가 많아.

주의: 가장 비싼 딥러닝 프로젝트는 배포까지 마쳤고 거의 작동하지만, 원래 잘 작동하던 솔직한 기준선을 대체한 프로젝트야. 그러고 나면 팀은 작동 원리를 전혀 설명할 수 없는 시스템의 장애 대응을 책임져야 해.

진지한 어른이라면 먼저 물어야 할 것

신경망을 건드리기 전에 답부터 적어 봐. 가능한 가장 단순한 방법은 무엇이고, 점수는 몇이지? 단순한 방법이 0.78이고 요구 성능이 0.84라면 딥러닝이 개선할 여지는 6점이야. 단순한 방법이 0.95라면 그 여지는 이미 사라졌어.

원칙: 딥러닝을 쓰지 않기로 하는 건 senior 엔지니어링 결정이야. Hype cycle은 반대 선택에 보상을 주지만, 그래서 일부러 지루한 일을 택하는 태도가 경력 전체를 지탱할 신뢰를 쌓아.

Code

희망 섞인 신경망보다 정직한 기준선·python
import time
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score

t0 = time.time()
lr = LogisticRegression(max_iter=2000, C=1.0).fit(X_train, y_train)
t_train = time.time() - t0

t0 = time.time()
preds = lr.predict_proba(X_val)[:, 1]
t_infer = time.time() - t0

print(f"AUROC: {roc_auc_score(y_val, preds):.3f}")
print(f"Train time: {t_train:.2f}s   Inference time: {t_infer*1000:.1f}ms")
print(f"Inference latency / row: {t_infer / len(X_val) * 1e6:.1f} microseconds")

External links

Exercise

팀에 보낼 1페이지짜리 메모를 써. 딥러닝을 거부해야 할 때와 어떤 조건에서 생각을 바꿀지 설명해. 저장해 두고, 다음에 누군가 모델을 제안할 때 다시 읽어.

Progress

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

댓글 0

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

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