Como usamos o item2vec para recomendar produtos semelhantes

Olå, meu nome é Vasya Rubtsov, estou desenvolvendo sistemas de recomendação no Avito.


O principal objetivo do espaço de anĂșncio Ă© ajudar os vendedores a encontrar compradores e compradores que procuram produtos. Diferentemente das lojas on-line, o fato da venda ocorre fora da nossa plataforma e nĂŁo podemos rastrear isso. Portanto, a principal mĂ©trica para nĂłs Ă© "contato" - este Ă© o evento de pressionar o botĂŁo "mostrar telefone" no cartĂŁo do produto ou o inĂ­cio de um diĂĄlogo no messenger com o vendedor. A partir dessa mĂ©trica, obtemos "compradores" - o nĂșmero de usuĂĄrios Ășnicos por dia que fizeram pelo menos um contato.


Os dois principais produtos com os quais o departamento de recomendaçÔes da Avito lida sĂŁo recomendaçÔes para o usuĂĄrio na pĂĄgina principal ou no user2item e um bloco de anĂșncios semelhantes no cartĂŁo do produto ou no item2item. Um terço de todas as visualizaçÔes de anĂșncios e um quarto de todos os contatos sĂŁo provenientes de recomendaçÔes; portanto, os mecanismos de referĂȘncia desempenham um papel importante no Avito.


No artigo, mostrarei como melhoramos nossas recomendaçÔes item2item devido ao item2vec e como isso afetou as recomendaçÔes user2item.



Como era antes


Anteriormente, para pesquisar anĂșncios semelhantes, usamos um modelo linear nos recursos obtidos para um par de anĂșncios: o nĂșmero de palavras correspondentes no tĂ­tulo e a descrição do anĂșncio, locais correspondentes, parĂąmetros, proximidade por regiĂŁo geogrĂĄfica. Os coeficientes neste modelo foram selecionados por bandidos multarmados. Dissemos isso em um artigo separado .


   , , . ,    Â« wifi » «SQ11» ,  , , . — «  Â», «   », «-» « ». ,   , . «»       ,  .


, ,   .   finn.no "Deep neural network marketplace recommenders in online experiments".


item2vec


item2vec  ,     ,   .


 ,   .   .



    ,  ,  . ,   — .   , ,   ,   ,   .  ?   ,  :



  , 0.6 ± 0.1.       .



 .  , ,   .   ?


, ,   — , ,   . , ,   .   . , . ,      ,  ,   -.


 


  . , , 8 .     3 .



, ,   . ,  desktop   . ,  app — .


  540  180  .



  — 14 . ,   ,   . ,   «» «»  . .   — .


    :



— 128- .


— ,   embedding : , , (  , ) (  ).  title embedding ,   — lstm. — one-hot .   — .


title , ,  .   , .   . , — lstm GRU .    , .


. ,  . —   . , . — , .


  — .  ,  -1  1. ,  128,    int8   .


  . ,  int8.


GPU, 20 . CPU GPU .


,   id  .  , .



, 128- .
   ,   .   :


1. .



2. 4000  ( — ,   GPU)   .   ,     ,  .



3. , .
— . 100    , 100    .



4. — cross entropy loss — .



  , forward  4001 , backward —  101,  ,  .


    500 000 000 () × 4 000 ( ) × 5 () = 10 ^ 13 . 2  4 x Tesla P40.


  :




  : 7    , 6    ,    . ,   , .   prec@8.




  item2vec   « ».    AvitoNet. AvitoNet — ,   .    .     -.


  3    6 .     — 62 .  , — 2048,   GPU,  CPU . :  ,   — , 3 , . , .   ,   , . Prec@8  0,4%, , .




  « »:



  « / /122—128 (6—8 )».   :



  , ,   «» «».


 item2vec :



« ». -, -   «» «».  , ,   «». , — !



    top-n .   Sphinx.    , .  200ms (p99) 200K rpm.



    .     -.    , , - — , .   .


  .



  ,  .   :


sim(i, j) = <v_i, v_j> * (log(t_j + 1) ^ a_c)


i j — , j (t_j = now - start_time_j).


, , ,  , .       . , c â€” a_c. ,   0,   . ,   — .   .  , ,   - . , .



, .
— ,    , , .


 item2vec  30%  ,  20%    .


All Articles