당근마켓 AI의 데이터 활용 방법

전무익 (Ed Jeon)
당근 테크 블로그
6 min readMay 21, 2021

당근마켓 서비스에 딥러닝 기술을 처음 도입한지 어느새 5년째가 되었어요. 그동안 빠르게 성장하는 서비스에 머신러닝을 적용하면서 데이터 관점이 어떻게 발전되어 왔는지 소개해드리고 싶어 오랜만에 작성해봐요.

수작업 데이터 라벨링의 한계

머신러닝 모델을 도입하기 우선 간단하게 현재 쌓여 있는 데이터에서 수작업으로 적절한 양의 학습 데이터를 준비(라벨링)해서 정확도 높은 성능의 모델을 만들 수 있는데요. 시간이 지나면서 데이터는 더욱 늘어나 상대적으로 학습 데이터는 작아지고 자연스럽게 모델의 예측 성능도 떨어질 수 밖에 없어요.

성장하며 커지는 실세계 데이터, 상대적으로 작아지는 수작업 데이터

그래서 수작업 학습 데이터로 만든 머신러닝 모델은 새로운 데이터 변화에 맞게 끊임없이 수작업을 추가해서 생명을 불어넣어 주지 못한다면 결국 모델은 쓰일 수 없게 되어요.

실제로 당근마켓은 초기에 수작업 데이터로 중고거래 글의 예측 모델을 서비스에 도입했지만, 당근마켓이 생각보다 너무 빠르게 성장해서 매달 12% 이상 전체 글이 늘어나면서 성능이 낮아지고 수작업이 따라 갈 수 없게 되었어요.

현재는 서비스 성장과 함께 늘어나는 사용자의 신고와 운영자의 제재 데이터를 학습 데이터로 수집하고 학습하도록 변경하여 성능을 유지하며 운영 자동화를 고도화하는데 매우 중요한 역할을 하고 있어요.

이렇게 머신러닝 모델을 도입 고려할 때는 수작업은 지양하고 지속해서 쌓일 수 있는 데이터 기반을 마련하는 부분을 중요하게 생각하고 있어요.

실제 세계 데이터 모델링

서비스에서 일어나는 현상을 데이터로 수집/기록하여 실제 세계를 그대로 모델링 하는 부분이 서비스 도입에 매우 효과적이라고 생각해요.

중고거래 글 예측 모델을 예를 들어 볼게요. 이 모델은 게시글이 등록되면 수초이내로 사용자 신고와 운영자 제재를 예측하여 자동 알림 또는 선조치를 하게 되는데요. 학습에 사용된 운영자의 데이터는 정확하지만 사용자의 데이터는 부정확하여 노이즈가 있어요.

단순하게 정확한 운영자의 제재 처리만 학습해 볼 수 있지만 이렇게 되면 일반 게시글(Normal)을 잘 구분하지 못해 정확도가 매우 떨어져요. 실제 데이터가 수집되는 상황을 이해보면 운영자 제재는 모든 글을 볼 수 없고 대부분 사용자가 신고한 것을 보기 때문에 일반 게시글을 잘 모르고 예측하기 어렵게 되기 때문이에요.

경고/제재는 신고의 일부분, 신고는 전체의 일부분

한편 사용자 신고는 실제로 모든 글의 대상으로 신고가 발생하기 때문에 사용자 신고 데이터와 일반 게시글을 샘플링하여 학습이 잘 되는 것을 확인할 수 있었어요. 사용자 신고 데이터를 부정확한 노이즈 라벨로 생각하는 것이 아닌 실제 사용자의 신고할 가능성을 예측하는 것으로 생각하면 될 것 같아요.

또 다른 예로 당근마켓 첫화면 피드 목록이 사용자에게 노출이 되고 반응하는 많은 정보를 학습하기 위해 랭킹 모델을 사용했는데요. 사용자에게 실제 노출되고 영향을 끼치는 정보를 노출되는 상황과 맞게 최대한 수집하여 반응 여부를 학습하는 방법이 효과적이었어요.

특정 도메인 모델에 맞게 데이터를 변형하기 보다 가능하면 실제 현상을 데이터 수집하여 그대로 학습하고 그 현상을 예측하는 방법이라면 모델도 충분히 잘 학습하게 되고 예측 결과도 서비스에 도입하기 좋다고 생각해요!

대규모 이해 학습

당근마켓 AI가 궁극적으로 해야하는 일은 이해 학습(Representation learning)이라고 생각해요. 게시글을 잘 이해 학습할 수 있다면 자연스럽게 게시글을 다양하게 예측하기 쉽게 되니까요. 앞서 소개한 사용자에게 신고 받을 확률과 운영자에게 제재 받을 확률부터 가격 분포, 10분 이내 판매 가능성, 적합한 사진 선택 여부 등 수많은 예측을 할 수 있어요. 이런 예측 결과는 더욱 서비스 개선과 고도화에 사용될 수 있어요.

첫 시도로 당근마켓의 1억개가 넘는 중고거래 글을 이해 학습하기로 했어요. 간단하게 많이 알려진 Masking 방식으로 다음과 같이 게시글을 이해 학습해요.

수작업 라벨링 없이 글을 이해하기 위해 빈칸(Mask)을 맞추는 학습

실제 모델 구현은 Transformer 모델 기반으로 팀원 Milli가 맡아주었고 기회가 된다면 향후 자세히 공유하고 지금은 간단히 소개할게요.

이렇게 학습한 후 사용자 신고와 운영자 제재 예측을 이어서 학습(fine-tuning)한 결과 기존 게시글 모델의 성능을 매우 높은 수치로 개선할 수 있게 되었어요. 올해 초 서비스 도입하여 현재 운영 중으로 당근마켓 운영팀 업무에 많은 도움을 주어 운영팀은 더욱 시급하고 중요한 일에 집중할 수 있게 되었습니다.

이해 학습은 대규모 GPU 인프라가 준비되어있는 대기업에서만 할 수 있을까요? 저희는 클라우드 인프라(Cloud TPU)를 사용하여 전혀 문제가 되지 않았어요.

이해 학습을 위해 인프라보다 중요한 것은 데이터인 것 같아요. 당근마켓의 수많은 데이터와 그리고 지금도 매일 엄청 쌓이는 데이터는 이해 학습을 하기 정말 좋은 환경이라고 생각해요. 게시글 외에 앞으로 채팅, 사용자 모델 등 다양한 이해 학습할 예정이에요.

마치며

최근에 Andrew Ng 교수님의 데이터 중심 AI 발표를 매우 인상적으로 봤는데요. 머신러닝 기술이 매우 효과를 내고 영향을 줄 수 있는 곳은 많은 데이터가 생성되는 사용자 서비스라는 생각이 많이 들었어요. 머신러닝에서 데이터가 생명이라면 데이터가 머신러닝을 더욱 강력하게 만들지 않을까요?

당근마켓은 한달간 1400만명 이상의 사용자가 방문하며 많은 데이터가 생성되고 있는 서비스예요. 그리고 우리나라에 흔치 않는 첫화면 피드를 소비하는 서비스/플랫폼이라는 것을 알려드리고 싶어요. 유튜브, 페이스북 등의 플랫폼/피드 서비스처럼 당근마켓도 안전한 플랫폼과 개인화 추천을 제공하며 AI가 서비스에 핵심이 될 수 밖에 없다고 생각해요. (참고로 영국, 미국 등 국가의 일부 지역에서 서비스 중이며 글로벌 서비스로 도약할 예정이에요!)

머신러닝 기술로 많은 영향을 주고 싶으신 머신러닝 개발자 분들과 함께 하면 더욱 빠르고 멋지게 이룰 수 있을 것 같아요.🙂

당근마켓과 함께 할 개발자를 찾고 있어요!

--

--