본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

공부 시작

강의 종료

강의장

학습 인증샷

학습후기

 

ch02-02.Two tower architecture

 

유저 타워와 아이템 타워 두 개의 독립적인 신경망이 유저와 아이템 인베딩을 각각 생성.

이 임베딩 벡터들의 Dot Product 또는 Cosine Simimilarity를 통해 추천 점수 계산

 

 

 

 

유저벡터와 아이템벡터는 상호보완적으로 임베딩을 생성하지않나? 어떻게 각각 독립적인 임베딩을 생성할 수 있지?

 

tow-tower 구조에서는 유저와 아이템 임베딩을 독립저으로 만들지만

학습은 상호작용 데이터로 합꼐 한다.

 

유저 타워 : 유저 ID + side feature -> User Embedding

아이템 타워 : 아이템 ID + side feature -> User Embedding

 

모델 학습에서는

(user_123, item_456) → 클릭했다 → score 높아야 함
(user_123, item_789) → 클릭 안 함 → score 낮아야 함

양쪽 벡터가 동시에 업데이트됨

 

 

학습이 끝난 이후에는

유저 벡터만 가지고 [이 유저가 좋아할 만한 아이템]을 dot product로 계산 가능

아이템 벡터만 가지고 [이 아이템을 좋아할 유저]를 계산 가능하다.

 

학습 중에는 둘 다 함께 보는 데이터로 맞춰감

 

two-tower 구조의 진짜 장점은 학습보다 추론 단계에서 빛을 발한다.

이 구조는 아이템 벡터를 미리 계산해서 저장할 수 있다.

 

실시간으로 바뀌는 건 유저 쪽이고 매번 유저 벡터만 새로 생성해서 미리 저장된 아이템 벡터와 dot product만 계산하면 된다.

 

User와 Item을 분리해서 관리 가능하고

신규 유저가 들어와도 해당 유저의 임베딩만 업데이트하면된다.

전체를 학습할 필요 없이 빠르게 반영 가능하다.

따라서 실무에 적합하다

 

ANN 검색과도 잘 어울려 빠른 속도로 유사 아이템과 유저를 찾을 수 있기 때문에 대규모 서비스에서도 latency 걱정 없이 서빙이 가능하다.