brunch

You can make anything
by writing

C.S.Lewis

by 모두의연구소 Nov 12. 2021

추천시스템 입문하기

아이펠 세미나 후기 

안녕하세요! 저는 AIFFEL 새싹 2기로 열심히 달리고 있는 박장호입니다.


이전까진 비전공자에 문과로 살아오면서 프로그래밍은 거의 접해보지 못했지만, 인공지능에 흥미를 느끼게 되어 공부를 시작하게 됐습니다. 실제로도 아이펠의 여러 프로젝트들을 통해 그동안 지레 겁먹고 보지 못한 코드들과 수학 공식들이 차츰 이해가 되면서 공부에 재미를 붙이게 됐습니다.


그에 따라 자연스레 생긴 고민은, 인공지능 활용 분야 중 어떤 진로로 나아갈 것인지 였습니다. 현재 아이펠 새싹 후반기에는 GoingDeeper 과정으로 컴퓨터 비전(CV) / 자연어 처리(NLP)가 있는데, 두 분야 모두 각각의 재미가 있는 만큼 어느 하나를 택하기 힘들었습니다.


감사하게도 아이펠에서는 CV와 NLP에 더불어 여러 주제의 세미나를 준비해주시는데, 이번에는 추천시스템 페이스북 커뮤니티 "Recommender System KR"를 운영중이신 김현우님을 세미나 연사로 초청해주셨습니다. 김현우님은 각종 수많은 대회에서 엄청난 성적으로 입상 경험도 있으시고 블로그도 정말 깔끔하게 정리해두신 것을 보고 정말 좋은 기회라 생각했습니다.


게다가 최근에 음악 스트리밍 서비스 Spotify를 사용하면서 추천시스템의 힘이 정말 엄청난 것을 보고 이 분야에 관심이 가던 차에 저에게 딱 알맞은 세미나가 열리게 되어 후다닥 참가하게 되었습니다. 누군가에게 무엇을 좋아하는지 큐레이팅해주고 소개해주는 일은 언제나 흥미로운 일이라고 생각했거든요.


김현우님은 현재 Segmentation를 공부하고 계시지만, 예전에 카카오 코딩테스트를 통해 추천시스템에 흥미를 가지게 되셨고, 실제로도 KT Skylife에서 VOD 추천시스템 프로젝트를 진행하시고 T-acadamy에서도 추천시스템 입문 강의를 여신 적이 있다고 합니다. 풀잎스쿨도 두 번 여신 적이 있는 걸 보면 모두연에는 참 대단하신 분들이 많이 모이는 것 같습니다! ㅎㅎ


이번 세미나에서는 추천시스템에 대한 개요와 모델들의 원리를 설명해주시고, 공부와 취업에 관한 여러가지 팁도 나누어 주셨습니다.


1. Recommendation System이란?


추천시스템은 사용자(user)에게 상품(item)을 제안하는 소프트웨어 도구이자 기술입니다.

즉, 어떤 사용자에게 어떤 상품을 어떻게 추천할 지에 대해서 이해해야 합니다.


기본적으로 추천시스템의 목표는   


우리가 좋아하는 것을 찾아주거나

우리가 몰랐던 새로운 분야를 추천 (Serendipity)


하는 것이라 할 수 있습니다.


이렇게 구성된 추천시스템은 넷플릭스나, 아마존 등에서 이미 활발히 활용하고 있고 이를 통해 비용을 엄청나게 절약하고 소비를 이끌어내고 있습니다. 스포티파이의 경우에도 음악 데이터 처리와 활용을 위해 막대한 투자와 연구를 하고 있는 것을 보면, 어느 산업이나 추천시스템은 빠질 수 없는 기술이 됐습니다.

추천시스템 문제를 설정하는 방법은 크게 두 가지로 볼 수 있습니다.   


Rating Prediction


아래와 같이 User-Item Matrix Rating에서 사용자가 상품들에 평점(Ratings)을 매기고(파란 칸), 아직 평점을 매기지 않은 빈칸(흰색 0)을 채우는 문제입니다. 예를 들어 영화 '토이스토리'와 '알라딘'에 3점의 평점을 매겼다면 아직 평점을 매기지 않은 영화 '포카혼타스'에 몇 점을 매길지 예측하는 것이죠.


User-Item Matrix Rating


Top-k Recommendation Problem


Ratings를 중요하게 보는 것이 아닌, 상위 k개의 상품을 추천하는 것이 유의미한 문제입니다. 순서의 차이는 있을 수 있으나 절대적인 Ratings 값 자체는 중요하지는 않는 것이죠. 넷플릭스 영상 추천이나 유튜브 추천 영상이 이에 해당합니다.

넷플릭스 추천 콘텐츠 목록


여기서 평점 부분을 더 자세히 들여다보면   


추천 / 비추천, 평점과 같은 명시적인 피드백 - Explicit feedback

구매 / 비구매, 사이트 방문 횟수와 같은 애매하거나 내재적인 피드백 - Implicit feedback


으로 나눌 수 있습니다.


이 중 어떤 피드백을 활용하는 지에 따라 문제 접근 방식이 달라질 수 있습니다.

과거의 추천시스템 모델은 흔히 맥주와 기저귀 구매와 같은 월마트의 사례처럼 두 상품 사이의 연관성을 찾아내는 연관 분석(Association Analysis)과 여기서 경우의 수를 더 최적화한 Apriori 알고리즘이 있었으나, 이후로는 추천시스템에서 대표적으로 거론되는 모델로는 협업 필터링(Collaborative Filltering)콘텐츠 기반 필터링(Content-based filtering), 최근에는 Sequential 모델그래프 모델, 심지어 강화학습까지... 정말 다양한 인공지능 기반 지식이 필요한 분야라 공부가 많이 요구되는 것이 장점(?)이라고 하셨습니다.

제 생각에는 산업에서 추천시스템이 정말로 효과적이고 다양한 분야를 끌어와서라도 발전시키고픈 우선도 높은 기술이기에 이런 양상이 나오지 않았나 싶었습니다. 그래서 세미나를 들을 수록 추천시스템에 대한 관심이 더더욱 늘어나게 됐습니다.


2. Sequential Recommendation


아쉽게도 세미나 시간이 길고도 짧은 2시간이라 열정적으로 준비해주신 PPT의 모든 내용을 보여주시진 못했지만, 후반엔 추천시스템 모델의 최근 동향 중 하나인 Sequential Recommendation을 소개해주셨습니다.


이전 추천시스템들은 사용자가 상호작용하는 항목을 상품(item)의 집합으로 보았지만, Sequential Recommendation은 여기서 한 발 더 나아가 상품을 구매한 순서(Order of goods), 즉 시간성과 맥락까지 고려하며 추천합니다. 예를 들어, 5년 전에는 사용자가 SF를 즐겨 보는 경향과(long-term), 최근에는 스릴러 영화를 즐기는 경향(short-term) 모두를 고려하는 것입니다.


그에 따라 순환적 구조를 갖는 RNN - LSTM - GRU를 사용하는 흐름에서 자연스럽게 NLP에서 활발히 사용하는 Attention, Transformer, BERT 모델을 활용하기까지 이르게 됐습니다.

Attention과 Transformer를 활용한 SASRec 추천시스템 모델


여기까지 이야기들 들으면서, 저의 진로에 대한 어느정도 방향을 잡게 되었습니다. 추천시스템이라는 분야 자체가 다양한 기술을 접목하는 것도 좋았지만 최근 동향으로 NLP의 흐름과 많이 유사하다는 것도 흥미로웠고, 무엇보다도 추천시스템의 의미과 원리에 대해서 다시 보게 되면서 이 분야에 매력을 느끼기에 충분했던 시간이었습니다. 앞으로 아이펠 후반기 과정에 들어가게 되면 NLP 쪽으로 더 공부할 수 있도록 노력해봐야겠다는 욕심이 들 정도였으니까요.


3. Q&A


세미나 중간에 간단히 Q&A 시간을 가졌었는데요, 그 중에서도 인상깊었던 질문과 답이 몇 가지 있었습니다.


 Q1. 추천시스템을 다루는 분야에 취업하려면 어떤 방법이 좋을까요?


[빅데이터 전처리(Spark, Haddop, etc) → 학습 → 추론] 모두 가능한 인재를 원하는 경우가 많다. 추천시스템 모델링이나 기본적인 개념을 아는 것도 중요하긴 하지만, 대규모 데이터를 직접 다뤄보는 것이 굉장히 중요하다고 한다. (고객에게 serving해본 경험까지 있으면 최고!) → NLP의 경우 크롤링을 통해 대규모 데이터를 다룰 수 있지 않을까.


 Q2. 김현우님께서는 정말 다양한 분야(Recommendation system, Image detection, Segmentaion 등)의 대회에서 우수한 성적을 거두셨는데, 학습할 분량이 엄청난 인공지능 분야에서 어떻게 다방면으로 실력을 키우실 수 있었나요?


사람마다 case-by-case이긴 하지만, 일단 시간 투자가 많이 필요하긴 하다. 다만 한 분야(ex. 자신의 경우엔 segmentation)를 깊게 파고 그 기반을 토대로 유사한 분야로 차차 넓혀가며 배운다면 조금 수월하지 않을까 싶다. 대회의 경우엔 대부분 일정한 패턴의 process를 가지고 있으니 잘 수행한다면 괜찮을 것이다.


 Q3. 논문을 처음 읽어본다면 유용한 팁?


새로운 분야의 SOTA 논문을 읽을 땐 reference들을 참고하며 어떤 문제점들이 있는지 참고해보자. 그리고 그 분야의 기본이 되는 (쉬운)논문을 읽으면서 bottom-up 방법으로 시작해보자.


김현우님의 발표는 단순히 CV와 NLP 분야 뿐만이 아니라 더욱 시야를 넓혀주는 시간이었습니다. 무조건 모든 분야나 한 분야만 갖혀있을 필요 없이 유연한 방법과 함께 다방면으로 성장할 수 있다는 용기와 열정을 주었던 귀중한 세미나가 되었습니다! 정말 감사드립니다!!


김현우님 info   

페이스북 

https://www.facebook.com/groups/2611614312273351/about

블로그    

https://eda-ai-lab.tistory.com

Github   :

https://github.com/choco9966


Written by AIFFEL 새싹 2기 박장호 


아이펠 교육 지원하러 가기! 

✅아이펠 부산-대구-울산 캠퍼스 교육생 그루(Grew)모집 중! (~6/5)

모두의연구소 'AI학교 아이펠(AIFFEL)' https://aiffel.io


매거진의 이전글 비전공자의 AI공부? 아이펠로 오세요!

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari