fauxRaccord

fauxRaccord님의 아티클

fauxRaccord

fauxRaccord

함수로서의 사용자 - 프로젝트 펜타그램 제작기 (2)

이전 연재분의 마무리를 사용자의 취향을 2차원 '벡터'에 매칭시킨다는 어려운 말로 끝냈었어요. 물론 읽지 않아도 괜찮습니다. 중요한 이야기는 지금부터니까요.

2-1.png

추천 알고리즘은 복잡하지만 가장 기초적인 방법은 둘입니다. 하나는 유클리드 거리에 기반한 계산, 그리고 또 다른 하나는 코사인 유사도에 근거한 계산. 자세히 설명하면 또 너무 복잡해지니까 대충 넘어갑시다. 그런데 이 두 접근법 모두 자료를 벡터로 변환해야 한다는 점이 흥미롭지 않나요?

그러니까 우리가 구하고 싶은 것은 작품과 작품 사이의 유사성임에도 불구하고 우리는 이 작품들을 벡터로 만들어주지 않고서는 이야기가 통하지 않게 됩니다. 우리의 얄팍한 인문학적 지식을 동원해도 된다면, 문자와의 동일시(나와 나라는 기호와의 동일시, 작품과 작품의 벡터와의 동일시) 과정, 또는 상징화 과정을 우리는 발견한 것인지도 모르겠습니다. 물론 디지털 매체에 대한 학술적인 분석을 개진하려는 것은 아닙니다.

사실 조금은 실천적인 이야기이고, 또 어떤 면에서는 비지니스적인 지점도 있습니다.

결론부터 말하면 벡터화 과정에 대한 주권을 사용자에게 돌려줘야 한다고 말하려는 것입니다. 위의 방법처럼 계산된 벡터는 사용자의 행위를 식에 필요한 매개변수로 취급합니다. 일반적으로 우리가 누른 좋아요나 시청기록은 추천 항목이라는 함수에 들어가기 위한 재료에 지나지 않습니다.

다시 돌아와서 개발자로서의 우리를 생각해봅시다. 우리가 설치한 그 많은 패키지의 코드를 뜯어보고 있나요(물론 최근 거대한 exploit이 있었지만)? 물론 그런 분들도 계시겠지만... 보통은 그렇지 않죠. 우리는 그 결과를 신뢰하고 우리 프로그램의 일부로 받아들입니다. 그렇다면 우리는 사용자에게 추천이라는 알고리즘을 위임하고 그 결과를 우리 프로그램의 일부로 받아들이는 것은 어떨까요? 그러니까 사용자의 행위를 매개 변수로 취급하는 것이 아니라 그 자체로 함수로 생각하는 것입니다.

2-2.png

이제 위의 예시 자료가 단순한 작품들의 나열이 아니라 2차원 벡터에 매핑된 작품들이라는 사실이 눈에 들어올 것이라 생각합니다. 이 오각형이 의미하는 바는 무엇일까요? 이제 사용자의 시청 기록에 기반하여 유사성을 도출하는 것이 아니라 사용자가 유사하다고 생각하는 것에 기반하여 유사성을 계산할 수 있다는 말입니다. 또한 단순히 유사성이라는 계산된 결과를 보는 것이 아니라, 다른 사람의 연산 결과, 즉 다른 사람이 판단한 다른 유사성 정보를 직접적으로 탐색할 수 있게 됩니다. 적어도 내가 좋아하는 작품을 다른 사람들이 어떻게 생각하고 그것과 비슷한 작품이 무엇이라고 생각하는지 살펴보고 스스로 결정할 수 있다는 말입니다.

이 지점은 생각보다 중대한 의미를 갖는데, 이는 우리가 온라인 서점의 관련 도서를 생각해보면 금방 다가올 것이라 생각합니다. 관련 도서가 정확했던 적은 정말이지 단 한 차례도 없었습니다. 아니면 다 있는 책이거나 아는 책입니다. 다들 비슷하리라 생각합니다. 구글의 애드센스가 나름대로 제게 추천해주는 상품도 마음에 든 적이 없습니다. 우리는 알고리즘을 생각보다 의심합니다. 반면 남들이 올린 게시물은 적당히 신뢰하기 때문에 바이럴 마케팅이라는 것이 존재할 수 있는 것이겠지요. 이는 추천 결과의 인격화입니다. 우리의 신뢰는 단지 그 결과의 정확성으로 형성되는 것이 아니라 그 배후에 존재하는 (가상적) 인격에 대한 신뢰로 형성됩니다.

정보의 오염을 막을 수 있고 신뢰할 수 있는 원천을 사용자가 직접 탐색할 수 있게 한다면, 우리는 이제 시놉시스를 형태소 단위로 분석해서 계산한 유사도를 정말이지 포기할 수 있게 됩니다. 매번 틀리기만 하는 추천 컨텐츠로부터 해방되어, 능동적으로 탐색할 수 있고(팔로우하고 있는 사람들의 관점에서 평균적으로 유사한 작품), 또 다른 사람들은 그것과 어떤 작품을 나란히 놓고 또 멀리 놓는지 탐색할 수 있게 됩니다.

개인적으로 생각하는 이 방법의 최대 의미는 사실 탈정전화입니다. 그러니까 영화를 처음 보기 시작할 때 우리를 늘 괴롭히던 정전적 이름(르누아르, 트뤼포, 고다르, 히치콕, 혹스)에 기가 눌릴 필요가 없다는 것입니다. 분명 지나고 보면 그렇게 어려울 일은 아니었지만 입문자에겐 가혹한 것들이 있습니다. 이젠 반대로 자신이 재밌는 작품을 찾았을 때, 그 작품이 포함된 비선형적인 리스트들은 새로운 지도가 되어서 정해진 방식이 아닌 다른 방식으로의 작품 감상을 도와줄 수도 있을 것입니다.

물론 여전히 문제는 있습니다. 팔로우하는 사람 기준으로 특정 작품과 유사한 작품을 구하는 것은 굉장히 비싼 작업일 수밖에 없는 것이죠. 당연하지만 결과를 DB에 단순하게 저장해서 유사도를 조회할 수는 없습니다. 사용자에 따라 결과가 다르니까요. 마찬가지로 페이지네이션이 불가능하게 되죠. 가능하다고 하더라도 의미가 없고요. 왜냐면 어차피 순위를 구하기 위해서는 모든 레코드를 exhaustive한 방식으로 계산해야 하니까요.

이 문제를 해결했냐고요? 물론 하지 못했습니다. 근본적으로 불가능한 일인지도 모르겠지요. 사실 지금까지 개발하는 것도 이런 문제보다 더 많은 문제가 있었습니다. 다음 차례에는 제가 중간에 겪었던 문제들을 소개할까 합니다.

3
0
fauxRaccord

fauxRaccord

취향과 핫테이크 - 프로젝트 펜타그램 제작기 (1)

취향은 복잡합니다.

영화를 좋아하는 사람끼리 모이고 싶다고 생각해봅시다. 누구나 영화를 좋아하니까요. 하지만 당신이 지금 생각한 영화는 MCU 영화 일까요? 아니면 그 MCU를 힐난하는 스콜세지의 작품, 그도 아니라면 심지어 그리피스일까요? 조금 자비를 베풀어 '뉴 웨이브'를 좋아하는 사람이 모이자고 하더라도 우리는 여전히 스무 고개를 해야 합니다. 대만 뉴 웨이브인지 누벨바그의 영어식 표현인 프렌치 뉴 웨이브인지, 흔히 뉴 할리우드라고 칭하는 아메리칸 뉴웨이브인지 그도 아니라면 일본의 쇼치쿠 누벨바그인지 알 수가 없으니까요. 그래서 누구도 그냥 '뉴 웨이브'라고 하지 않는 것이겠지요. 단지 영화를 좋아하는 사람을 모아보고 싶었는데 벌써 알아야 할 것이 너무 많아졌습니다.

여러 방법을 통해 취향이 얼추 비슷한 사람들끼리 모은다고 하더라도 상황은 나아지지 않습니다. 누군가는 노엘 버치나 장 루이 보드리 같은 이론가 정도의 이름은 귀엽게 이야기할 수 있는 반면 외화면이나 객관적 쇼트와 같은 용어는 듣는 것만으로도 숨이 막힐 수도 있으니까요.

그러니까 '취향'의 문제는 취향이 맞는 사람의 절대적인 숫자만이 문제가 아닙니다. 그 작동 원리가 너무 복잡하다는 점에 있습니다. 세상의 모든 'X른러'와 'X왼러'가 영영 만날 수 없는 것처럼, 취향의 외연을 좁혀놓더라도 그 안에서 차이가 발생하는 것이 문제입니다.

외연이라는 말이 너무 어려우니까 예시를 들어봅시다. 같은 아일랜드 문학이라고 하더라도 누군가는 제임스 조이스를 좋아하고, 다른 누군가는 예이츠와 히니에 열광하지만 또 어떤 경우에는 이 모두를 싫어하고 폴 멀둔만을 지지할 수도 있습니다. 한편으로는 킹 크림슨을 싫어하더라도 헨리 카우를 좋아하는 경우가 있을 수도 있습니다. 만약 그렇다면 프로그레시브 락을 좋아한다고 말해도 되는 걸까요? 힙합은 싫지만 국힙 원탑인 아이유는 인정할 수 있는 것 아닌가요? 요즘 힙합은 싫고 옛날 힙합이 좋지만 대니 브라운은 좋아할 수 있기도 하겠고요. 컴퍼니 플로우나 쿨 키스 정도는 요즘 분류법으로는 아마 붐뱁으로 넉넉히 분류할 수 있을 겁니다. 브라이언 이노는 제게 심적 안정감을 줍니다. 반면 에이펙스 트윈은 고통을 줍니다. 엠비언트 일반에 대해 저는 뭐라고 말해야 좋을까요? 테리 라일리를 말할 땐 장르가 없어 매번 난감합니다. 장미여관, 검정 치마, 술탄, 쏜 애플은 절대로 안 되지만 공중도둑은 좋고 브로콜리 너마저는 그래도 괜찮다면 저는 국내 인디가 아닌 무엇을 좋아한다고 말해야 좋을까요?

요컨대 장르라는 것은 어떤 시점을 넘어가는 순간 거의 무의미해집니다. 저는 한국 문학을 좋아하지만 99%의 시인보다 키스 에이프가 위대한 시인이라고 생각합니다. 윤동주는 유사 시인이라고 생각하고 이를 당당히 말하고 다닐 수도 있습니다. 동시에 켄드릭 라마는 정말이지 멍청해서 참을 수가 없습니다. 홍상수의 영화를 좋아한다는 사람을 보면 그가 (적어도 초기 작품에서 드러나는) 비판적 거리 감각을 제대로 이해하고 있는지 사실 참 궁금합니다. 볼라뇨를 좋아하는 사람은 그가 그냥 엉망인 것을 좋아하는 것인지, 중심 서사를 좋아하는 것인지, 여담을 좋아하는 것인지, 메타적 차원에서의 서술 전략을 좋아하는 것인지, 대체 무엇을 좋아하는 것인지 늘 헷갈립니다.

길게 이야기했지만 이렇게 말할 수밖에 없습니다. 당신이 좋아하는 것들은 얼마나 같은 장르로 분류되고 있나요? 다들 정답처럼 이야기하지만 도무지 동의할 수 없는 소위 치우친 의견hot take이 있나요? '좋아함'의 원리는 대체로 비슷하게 작동하고 있나요?

만약 이 문제, 그러니까 취향(혹은 취미 판단)의 원리 문제로 발생하는 탐색 비용의 문제를 해결할 수 있다면 어떤 기회가 있을지 모릅니다. 잘 와닿지 않는다면 배달의 예시를 들어봅시다. 어느 시점까지는 고정된 배달원을 고용할 수 없거나 배달원을 추가로 늘릴 수 없는 음식점들은 배달에 제한이 있었습니다. 하지만 배달 플랫폼이 생김으로써 배달이 유연화가 된 뒤, 그러니까 계단식 비용 구조가 선형적으로 바뀌면서, 조리 역량capacity의 한도 내에서 무제한으로 배달을 할 수 있는 새로운 비지니스가 열렸습니다. 이 장르의 벽이 무언가를 막고 있다는 가정이 옳다면, 비지니스의 기회가 보일지도 모르겠습니다.

근데 이 문제를 도대체 어떻게 해결해야 좋을까요? 결론을 미리 이야기하자면 사용자가 자신의 관점을 2차원 벡터에 매칭시키도록 만드는 것이 하나의 방법이라는 생각입니다.

feature_new (1).gif

ps) 앞으로 기록할 부분에서 더 적게 될 테고, 또 1인 개발이라 미숙한 부분이 많고, 심지어는 구현되지 않은 부분도 많지만 아래 토이 프로젝트를 통해 미리 확인해볼 수 있습니다.

2
0