회사 상품 추천 모델 만들기 (7) 작은 시너지, 큰 교훈, 과적합 안정화와 회고
단독으로 회귀했던 learning rate 변경이 정규화 강화와 결합되면 시너지를 낸 과정. 학습 곡선의 정점이 epoch 1에서 10으로 이동한 이유, 그리고 7부작 전체에서 여전히 모르는 것 위주의 회고.
단독으로 회귀했던 learning rate 변경이 정규화 강화와 결합되면 시너지를 낸 과정. 학습 곡선의 정점이 epoch 1에서 10으로 이동한 이유, 그리고 7부작 전체에서 여전히 모르는 것 위주의 회고.
계절 데이터 가설, 검색의도 피처, EMA 설정, 임베딩 평균 ensemble. 네 가지 실패의 결이 모두 달랐다. 데이터·피처·구현·수학적 가정 중 어디서 틀렸는지 분류해 정리한 실패 기록.
MPS에서 같은 코드를 두 번 돌리면 recall@20이 ±0.005 흔들린다. 이 노이즈 속에서 '정말 나아졌다'를 말하기 위한 best-of-N 프로토콜, R* baseline, 그리고 paired permutation + Holm-Bonferroni의 의미.
단독 ablation이 1위로 꼽은 피처가 최종 조합 1위가 아니었던 경험. greedy forward selection의 한계와 전수 부분집합 탐색의 가치, 그리고 4개 결합이 모든 단독보다 나빴던 과적합 사례.
Two-Tower 구조에서 Item ID 임베딩을 제거하고 콘텐츠 피처만으로 상품을 표현한 결정. 학습 동역학(sampled softmax, logQ correction)과 142K 규모에서 FAISS를 쓰지 않은 서빙 결정까지.
첫 모델이 깨진 근본 원인 중 하나는 1.1M 상품 전체를 다루려 한 것이었다. 후보풀을 142K로 줄이는 결정과, prod DB SELECT-only 추출·시간 기반 split의 누수 가드 등 운영 안전 장치를 다룬다.
B2B 패션 도매 사이트의 개인화 추천 모델을 만들면서 거쳤던 학습과 결정의 기록. 1편은 추천 패러다임 선택의 트레이드오프와, 첫 모델이 recall@20=0.0048로 깨졌던 진단.
새벽에 Redis가 죽어서 복구했는데, config:cache 한 줄 때문에 주문, 알림, 스케줄러, 큐 워커가 전부 멈췄다. 에러 로그도 없이. 6시간 뒤에야 발견한 이 장애를 추적한 기록.

1년 전 끝까지 파보지 못했던 CPU 급증 문제를 AI와 함께 다시 분석해봤습니다. 당시 남겨뒀던 의문들에 대해 더 깊은 답을 찾아가는 회고입니다.
LIKE 쿼리의 성능 한계를 극복하고 한글 닉네임 검색 속도를 개선한 FULL TEXT INDEX 적용 경험과 제로 다운타임 배포 전략을 공유합니다.