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.
![](https://habrastorage.org/webt/wo/rd/ex/wordexhsnoxxfshif6xlye2bwsq.png)
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 , , .
, . .
![](https://habrastorage.org/webt/r7/jd/_m/r7jd_miv0k-k4yqkwsz9csepqvg.png)
, , . , â . , , , , . ? , :
![](https://habrastorage.org/webt/gp/p6/ev/gpp6evultrh5hbj91apa_y-xuhm.png)
, 0.6 ± 0.1. .
![](https://habrastorage.org/webt/ei/kt/ep/eiktepkl9c5zdpncrdy8wjxccry.png)
. , , . ?
, , â , , . , , . . , . , , , -.
. , , 8 . 3 .
![](https://habrastorage.org/webt/dg/h8/xw/dgh8xwbezqp2il2nw9e4zurrqqy.jpeg)
, , . , desktop . , app â .
540 180 .
â 14 . , , . , «» «» . . â .
:
![](https://habrastorage.org/webt/xm/9m/ic/xm9micpgmddgrfp3ppcehsymwpu.png)
â 128- .
â , embedding : , , ( , ) ( ). title embedding , â lstm. â one-hot . â .
title , , . , . . , â lstm GRU . , .
. , . â . , . â , .
â . , -1 1. , 128, int8 .
. , int8.
GPU, 20 . CPU GPU .
, id . , .
, 128- .
, . :
1. .
![](https://habrastorage.org/webt/sa/bz/ea/sabzeapgogwap7wbcqrwaavjsea.png)
2. 4000 ( â , GPU) . , , .
![](https://habrastorage.org/webt/wf/-w/8w/wf-w8wowu5wmpyefv4xir17-b9e.png)
3. , .
â . 100 , 100 .
![](https://habrastorage.org/webt/dw/sf/uh/dwsfuhp6m2gtauk_mczg83np1h8.png)
4. â cross entropy loss â .
![](https://habrastorage.org/webt/pd/kk/nn/pdkknn9qrpvhfixeiueix7xg4wq.png)
, forward 4001 , backward â 101, , .
500 000 000 () Ă 4 000 ( ) Ă 5 () = 10 ^ 13 . 2 4 x Tesla P40.
:
![](https://habrastorage.org/webt/cf/2n/os/cf2noszqewcpkcw7v-rxtcla_u0.jpeg)
: 7 , 6 , . , , . prec@8.
![](https://habrastorage.org/webt/2m/8_/sa/2m8_sa5vvvqo55rjejrqyvp-u28.png)
item2vec « ». AvitoNet. AvitoNet â , . . -.
3 6 . â 62 . , â 2048, GPU, CPU . : , â , 3 , . , . , , . Prec@8 0,4%, , .
![](https://habrastorage.org/webt/kd/cq/bv/kdcqbvqqobypnkj0blsxzh12_7a.png)
« »:
![](https://habrastorage.org/webt/1-/bv/cf/1-bvcfax9n7b0bartdcolnakfka.png)
« / /122â128 (6â8 )». :
![](https://habrastorage.org/webt/ec/l-/qh/ecl-qhudd7-pyjkfvtru2_kr2iu.png)
, , «» «».
item2vec :
![](https://habrastorage.org/webt/s1/4s/il/s14silneox-qsdl-lizs33wjjqe.png)
« ». -, - «» «». , , «». , â !
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% .