고려대학교 일반대학원에서 딥러닝 수업 중 하용호 특별 연사님께서 현업에서 겪어오셨던 경험을 공유해주셨습니다. 광고 엔지니어링이라는 분야에서 마주하였던 문제점과 그에 대한 솔루션, 그리고 여러가지 견해에 대해 정리한 글입니다.
모두가 달려드는 생성 AI
최근 생성형 AI(Generative AI)와 대규모 언어 모델(LLM)에 대한 열기가 뜨겁다. 이제는 이러한 기술을 채택하지 않으면 뒤처질 것 같은 분위기다. 하지만 진짜 중요한 질문은 ‘어디서 돈을 벌 것인가?’이다. 대부분의 빅테크 기업들은 광고 수익에 의존한다. 그러나 광고와 관련된 문제들은 단순하지 않다.
추천 엔진과 광고 엔진의 차이
추천 엔진
추천 엔진의 주요 역할은 사용자가 선호할 만한 콘텐츠를 추천하는 것이다. 이는 사용자 경험을 크게 해치지 않으며, ‘Top N’의 추천이 일치하기만 해도 만족스러운 결과를 제공한다.
광고 엔진
반면, 광고 엔진은 사용자에게 광고를 추천한다. 그러나 광고는 사용자에게 대체로 호감보다는 불쾌감을 줄 가능성이 크다. 이 때문에 ‘Top 1’이 정확히 맞아야만 효과를 거둘 수 있다. 잘못된 광고 노출은 기회비용의 손실로 이어질 수 있다.
사전 계산의 딜레마
광고와 추천 데이터를 사전에 계산해두는 방식은 서버비용 문제를 일으킨다. 사용자 리텐션율이 낮아, 계산된 데이터를 유지하는 것이 비효율적이기 때문이다. 또한 사용자 경로와 접속 시간에 따라 상황이 천차만별이라, 수많은 후보군을 미리 계산하는 것은 현실적으로 불가능하다.
실시간 상황에서의 최적화 알고리즘
일반적으로 광고 데이터는 2만 개 이상의 대규모 데이터를 포함한다. 이처럼 방대한 데이터에서 실시간으로 최적의 결과를 찾는 것은 쉽지 않다. 특히 순차적으로 데이터를 탐색하면 속도가 너무 느리다. 이 문제를 해결하기 위해 최근에는 ‘Two-Tower Embedding’ 방식이 주목받고 있다.
Two-Tower Embedding
Two-Tower Embedding은 사용자와 아이템 간의 코사인 유사도를 학습하여 동일한 공간에 임베딩(Embedding)한다. 이를 통해 추천 정확도를 높인다.
벡터 DB를 활용한 탐색
모든 아이템과 도트 프로덕트를 계산하는 대신, 벡터 데이터베이스(Vector DB)를 이용해 HNSW(Hierarchical Navigable Small World) 알고리즘 등을 활용하여 근사 최근접 탐색(ANN)을 수행한다. 단 한 번의 ANN 룩업으로 원하는 결과를 빠르게 찾을 수 있다.
CTR 예측 모델의 개선 과정
CTR(Click-Through Rate) 예측을 위해선 양질의 데이터가 필요하다. 하지만 실제 대부분의 데이터는 클릭 비율이 1%, 비클릭 비율이 99%로 극단적이다. 이렇게 데이터가 극단적으로 왜곡(Skew)이 되어있어 모델 성능에 심각한 문제를 유발한다. 이를 위한 몇가지 솔루션은 아래와 같다.
Negative Sampling 기법
- 랜덤 언더 샘플링: 비클릭 데이터를 무작위로 제거한다. 그러나 중요한 정보까지 손실될 위험이 있다.
- 중요도 샘플링: 결정 경계에 가까운 데이터를 우선 선택한다. 클릭과 유사한 특성을 가진 비클릭 데이터를 샘플링하여 학습의 질을 높인다.
- 동적 Negative Sampling: AdaBoost나 Gradient Boosting Machine과 유사한 방식을 사용한다. 그러나 구현 복잡도가 높다.
메트릭으로 AUC 사용
현업에서는 F1 스코어 대신 AUC를 선호한다. 단, 데이터 왜곡을 보정한 변형된 AUC를 사용하는 경우도 있다.
전통적인 CTR 예측 모델: DeepFM
DeepFM은 사용자 속성, 콘텐츠 속성, 광고 속성과 같은 다양한 입력 필드를 활용하여 CTR을 예측하는 전통적인 모델이다. 이러한 모델은 CTR 예측의 기초를 제공하지만, CVR(Conversion Rate) 예측에서는 한계를 가진다.
CVR 예측의 어려움
CVR 데이터는 CTR 데이터보다 훨씬 작고, 특정 도메인에만 적용 가능한 경우가 많다. 이를 보완하기 위해 ESCM(Enhanced Sequential Click Model) 등을 활용하지만 효과는 제한적이다. 중요한 것은 개선 가능성이 있다는 점이다.
보정 기법: Isotonic Regression
현실 데이터를 기준으로 예측 결과를 보정하기 위해 Isotonic Regression 같은 기법이 활용된다.
효율적인 서빙 전략
- 비용 문제: AWS는 높은 비용이 문제다. GPU 스팟 인스턴스조차 비싸다.
- 정적 그래프 활용: ONNX를 통해 동적 그래프를 정적 그래프로 변환하여 효율성을 높인다.
- CPU 활용: 얕고 넓은 그래프 구조는 CPU에서도 충분히 동작 가능하다.
Intel 수치 가속 기술
Intel의 MAX, AVX와 같은 수치 가속 명령어를 사용하는 런타임 라이브러리(OneDNN, OpenVino)를 통해 성능을 최적화한다.
데이터 처리와 저장
데이터는 초당 수억 건에 달하며, 전통적인 데이터베이스로는 이를 처리하기 어렵다. 이 때문에 메모리 기반 피처 스토어(Feature Store)를 구축하여 데이터를 관리한다.
주요 기술 스택
- 데이터 저장: Redis와 같은 메모리 기반 스토리지.
- 병렬 처리: Spark와 Trino를 조합하여 대규모 데이터를 병렬 처리.
A/B 테스트와 숨은 의존성
A/B 테스트는 실험의 기본이지만, 숨은 의존성을 처리하지 않으면 결과의 신뢰도가 떨어질 수 있다. 이를 위해 철저한 데이터 검증과 의존성 관리가 필요하다.
결론
생성형 AI 시대에서 돈을 벌기 위한 핵심은 데이터 처리, 모델 최적화, 효율적인 서빙 시스템을 갖추는 것이다. CTR과 CVR 예측의 정교함을 높이고, 비용 효율적인 시스템 설계와 데이터 관리 전략을 통해 경쟁력을 확보할 수 있다. 앞으로도 기술 발전과 함께 이 분야는 지속적으로 진화할 것이다.