본문 바로가기
Conference

2024 당근 테크 밋업 AI/ML 세션 후기

by 거북이주인장 2024. 10. 30.

10월 7일 월요일에 코엑스에서 열린 당근 테크 밋업에 다녀왔다.

https://tech-meetup.daangn.com/

 

2024 당근 테크 밋업

당근이 성장하며 얻은 경험과 통찰을 나누며, 함께 더 나은 미래를 그려가요.

tech-meetup.daangn.com

세션은 크게 front / server / AI&ML / platform 네 가지로 나누어서 진행됐고 나는 AI&ML 세션에 운 좋게 당첨되어서 컨퍼런스에 다녀왔다. 테크 밋업에 다녀온지는 3주 정도 지났지만 기억에서 사라지기 전에 전체적으로 느꼈던 점과 내가 들은 세션의 내용, 그로부터 배운 점 등을 간략하게 정리하고자 한다.

전체적인 느낌

기술을 좋아하고 그 기술이 실제 비즈니스에서 어떻게 쓰이는지에 대해 큰 흥미를 느끼는 나로서는 테크 밋업의 전체적인 분위기가 상당히 마음에 들었다. 스탠딩 책상에서 자유롭게 기술에 대해 논의하는 모습, 발표자들이 본인의 시행착오를 공유하며 지식을 전달하는 모습, 발표 후 발표자들과의 qna 시간을 통해 발표 내용을 한층 더 깊이 이해할 수 있다는 점 등에서 전체적으로 열린 소통을 하며 활기찬 분위기를 느낄 수 있었다. 나 또한 자유로운 소통 및 질문을 통해 많은 것을 얻어갈 수 있었다. 특히나 개인적으로는 발표를 듣고 발표자에게 단독으로 질문할 수 있는 시간이 유익했다. 발표에서는 들을 수 없었던 구체적인 시행착오를 들을 수 있었고 개인적인 어려움이나 궁금증에 대해서도 질문할 수 있었기 때문이다. 이날 발표자들을 괴롭히면(?) 얻는 것이 많다고 느꼈기 때문에 추후에 참여한 우아콘에서도 발표자들을 많이 괴롭히며 많은 것을 알아갈 수 있었다.

첫번째 세션: LLM과 임베딩 유사도로 빠르게 패턴을 바꾸는 어뷰저 탐지하기

문제

당근 서비스는 중고 물품을 저렴하게 판매하고 나누는 곳이다. 그런데 이 당근 서비스에서 대량의 물품을 순수하게 '판매'하기 위해서 다량의 게시글을 올리는 경우가 있다. 이를 당근에서는 '전문판매업자'라고 하는데, 이 전문판매업자들은 계정을 대량으로 생성하고 게시글과 채팅을 도배하며 심지어 이들이 판매하는 물품의 품질이 낮은 경우가 많다고 한다. 이러한 전문판매업자들에 대한 유저들의 신고도 증가하고 있는 가운데, 당근에서는 전문판매업자를 어뷰저로 정의하고 이를 탐지할 필요성을 느끼게 된 것이다.

기존 해결 방안

기존에는 전문판매업자의 어뷰징이 일어나기 전에 사전에 차단하는 방법이 있었고 그럼에도 불구하고 어뷰징이 발생해서 신고가 들어오면 당근 cs센터에서 정말로 어뷰징인지 판단하여 (positive / negative) 이를 supervised learning model의 label로 사용하는 방식을이었다. 이러한 방식은 어뷰징을 사전에 판단하지 않기 때문에 한계가 있었고 무엇보다 빠르게 패턴을 바꾸는 전문판매업자들에 맞춰서 대응하기가 쉽지 않았다.

새로운 해결 방안

당근에서는 전문판매업자가 빠르게 패턴을 바꾸는 것에 대응하기 위해 llm과 프롬프트 엔지니어링을 활용했다.

먼저 few shot classification 관점에서 전문판매업자가 올린 게시글의 제목과 정상적인 중고거래 게시글의 제목 몇개를 예시로 프롬프트에 넣고 다음에 오는 게시글의 제목에 대해서 전문판매업자가 올린 게시글인지, 아닌지에 대한 분류를 하도록 프롬프트를 작성했다. 이 방법의 한계점은, few shot인만큼 프롬프트에 넣는 예시가 중요한데 전문판매업자들의 포괄적인 특징을 포함하는 예시를 추출하는게 어려웠고 예시 이외의 케이스에 대해서 추론을 잘 못한다는 단점이 있었다.

그러면 예시를 넣지 않고 프롬프트를 작성하는 zero shot classification을 생각해볼 수 있다. 하지만 여기서는 전문판매업자의 특징을 추상적인 레벨로 프롬프트에 넣어야한다는 어려운 점이 존재한다. 그에 따라서 프롬프트 엔지니어링의 시간이 많이 소요된다.

이런 배경에서 zero shot with auto-generated prompt 방법을 사용했다. 우선 첫번째 단계에서는 일반 사용자 게시글 100건과 전문판매업자 게시글 100건을 예시로 넣어서 정상과 위반을 구별하는 특징을 요약하도록 언어모델에게 시킨다. 인간의 맥락 파악 과정을 모방하여 특징을 추출하는 것인데, 이 과정을 언어 모델에게 시키는 것이다. 흥미로운 점은, 일반 게시글의 예시도 함께 넣어서 약간 대조하면서 특징을 추출하게 한다는 것이다. 다음 단계로 추출된 특징을 사용하여 주어진 게시글이 전문판매업자의 게시글인지 아닌지 판단하게 시킨다. 이를 통해 전문판매업자가 패턴을 아무리 빠르게 바꾸더라도 결국 이 파이프라인을 자동화하면 되기 때문에 빠르게 대응이 가능할 수 있게 된다.

세번째 세션: 중고거래 시멘틱서치 도입기

당근 서비스에서 유저의 검색 결과 품질을 개선하기 위해 어떤 것을 시도했는지에 대한 내용이다.

문제: 기존 키워드 검색의 한계

키워드 검색은 유저가 입력한 키워드(검색어)와 db에 저장된 텍스트 간의 일치성을 기반으로 정보를 검색한다. 예를 들어서 유저가 아이폰16이라고 검색하면 iphone16이나 갤럭시 s24 관련 게시글은 검색되지 않는다. 그렇기 때문에 동의어 사전을 활용해야하지만, 유사한 단어가 계속 나올 수 있기 때문에 한계가 있다.

검색 품질을 높이기 위한 시멘틱서치 도입

시멘틱 서치는 유저의 검색어와 의미적으로 유사한 물품을 검색할 수 있다. 유저가 아이폰16이라고 검색하면 의미적으로 유사한 물품인 iphone16, 아이폰15 등의 게시글이 같이 검색되는 것이다. 유저 입장에서는 이렇게 연관된 게시글이 같이 나오는게 경험적으로 더 좋을 것이다.

 

여기서부터 two-tower 모델의 개념이 들어간다. 검색어의 임베딩과 게시글의 임베딩, 두 가지를 학습하기 때문에 two-tower 모델이라고 하는 것이다. 임베딩이란, 주어진 정보를 의미 공간 상의 임베딩 벡터로 변환하는 작업이다. 당근에서는 검색어와 게시글의 특징이 다르기 때문에 서로 다른 임베딩 모델을 사용해야 한다.

 

발표 자료에 있었던 그림을 대략 옮겨놓았다. 검색어 임베딩 모델과 게시글 임베딩 모델은 서로 다르기 때문에 의미적으로 유사한 것들이라도 임베딩 공간 상에 가까이 위치하지 않을 수 있다. 따라서 아이폰16이라는 검색어와 아이폰16팔아요 라는 게시글이 서로 '유사'하다고 학습을 해야한다. 결과적으로 올바르게 학습된다면 아래와 같이 매핑될 것이다.

 

학습을 하려면 데이터가 있어야 한다. 이때, 데이터는 (아이폰16, 아이폰16팔아요)의 키워드와 게시글 쌍의 라벨이 유사하다고 구성된다. 당근에서는 유저가 중고물품을 탐색하다가 클릭해서 들어올 수 있고 정말로 구매할 의사가 있으면 채팅 단계까지 진행된다. 세션을 듣다보니, 이 세션뿐만 아니라 다른 세션에서도 클릭보다는 채팅을 훨씬 더 유의미한 데이터로 보는 것 같았다. 클릭은 단순하게 유저가 실수로 들어왔을 수도 있지만 채팅은 정말로 그 물품에 관심이 있을 때, 주로 시도하기 때문이다. 

 

그렇기 때문에 검색어, 게시글 임베딩을 위해서도 채팅이 발생한 (검색어, 물품) 쌍 데이터 셋을 사용했다. 이렇게 positive 샘플링을 구성했으나, 채팅 데이터는 생각보다 많지 않았기 때문에 롱테일 문제가 발생했다. 채팅 데이터가 적은 중고 물품의 임베딩은 제대로 학습되지 않은 것이다. 더욱 문제는 이러한 중고 물품을 사전 학습 임베딩 모델이 잘 모른다는 점도 있었다.

 

우선 사전 학습 임베딩 모델이 잘 모르는 단어를 알아내기 위해서, 검색어에 대해서 얼마나 관련 없는 물품이 등장하는지 파악했다. 그 이후에 전체 검색어에 대해서는 채팅 데이터를 사용하고, 앞서 알아낸 추가 학습이 필요한 검색어에 대해서는 클릭 데이터로 보강을 했다. 이를 통해 롱테일 문제를 해결했다.

발표를 듣고 배운점

우선 첫번째 발표에서는 프롬프트 엔지니어링으로 어뷰저의 빠르게 변화하는 패턴을 잡아내는 방식이 인상 깊었다. 또한, 프롬프트를 두 단계에 걸쳐서 실행하고 첫번째 단계에서 어뷰저의 특징을 뽑아낼 때, 전문판매업자의 예시 뿐만 아니라 일반 게시글의 예시도 함께 넣어주는 점이 흥미로웠다. 이는 다른 태스크에 대해서도 써먹을 수 있는 방법이 아닐까 싶다.

세번째 발표는 팀 내부적으로도 써먹을 부분이 굉장히 많다고 생각한다. 시멘틱 서치를 위해 임베딩 모델을 fine tuning한 이유는, 당근의 자연어가 굉장히 도메인 특화되기 때문이다. bert 같은 일반 임베딩이 당근에서 등장하는 중고 물품 명사를 잘 이해할리가 없고 기대해서도 안된다. 그렇기 때문에 당근의 중고 물품의 의미를 학습하기 위해서 클릭 및 채팅 데이터를 구성하고 (positive, negative) 라벨을 통해 아이폰16이라는 검색어와 아이폰16 팔아요 라는 게시글이 서로 유사하다는 것을 학습한 것이다. 바로 이 부분이 도메인 특화된 문제를 풀기 위한 시도이므로, 다른 영역에서도 비슷한 고민이 분명히 발생할 것 같은데 이때 이 아이디어를 한번 떠올리면 괜찮지 않을까 라는 생각이 들었다.

'Conference' 카테고리의 다른 글

2024 우아콘 AI/ML 세션 후기  (3) 2024.10.31

댓글