Yadda muke aiki akan inganci da saurin zaɓin shawarwarin

Sunana Pavel Parkhomenko, Ni mai haɓaka ML ne. A cikin wannan labarin, Ina so in yi magana game da tsarin tsarin sabis na Yandex.Zen kuma in raba ci gaban fasaha, wanda aiwatar da shi ya ba da damar ƙara yawan shawarwari. Daga wannan post din zaku koyi yadda ake nemo wadanda suka fi dacewa ga mai amfani a cikin miliyoyin takardu a cikin 'yan milliseconds kawai; yadda ake ci gaba da bazuwar babban matrix (wanda ya ƙunshi miliyoyin ginshiƙai da dubun-dubatar layuka) ta yadda sabbin takaddun za su karɓi vector ɗin su cikin dubun mintuna; yadda za a sake amfani da bazuwar matrix na mai amfani don samun kyakkyawan wakilcin vector don bidiyo.

Yadda muke aiki akan inganci da saurin zaɓin shawarwarin

Rubutun bayanan shawarwarinmu ya ƙunshi miliyoyin takardu na tsari daban-daban: labaran rubutu da aka ƙirƙira akan dandalinmu kuma an ɗauko su daga shafukan waje, bidiyoyi, labarai da gajerun posts. Haɓaka irin wannan sabis ɗin yana da alaƙa da babban adadin ƙalubalen fasaha. Ga wasu daga cikinsu:

  • Rarraba ayyukan kwamfuta: yi duk ayyuka masu nauyi a layi, kuma a cikin ainihin lokaci kawai aiwatar da aikace-aikacen samfuri cikin sauri don ɗaukar nauyin 100-200 ms.
  • Yi la'akari da ayyukan mai amfani da sauri. Don yin wannan, dole ne a ba da duk abubuwan da suka faru nan take zuwa mai ba da shawara kuma suna tasiri sakamakon samfuran.
  • Yi abincin don sabbin masu amfani ya dace da halayensu da sauri. Mutanen da suka shiga tsarin yakamata su ji cewa ra'ayinsu yana tasiri shawarwarin.
  • Gaggauta fahimtar wanda za ku ba da shawarar sabon labari ga.
  • Amsa da sauri ga ci gaba da fitowar sabon abun ciki. Ana buga dubun dubatar labarai a kowace rana, kuma yawancinsu suna da iyakacin rayuwa (ka ce, labarai). Wannan shi ne abin da ya bambanta su da fina-finai, kiɗa da sauran abubuwan da suka daɗe da tsada don ƙirƙirar.
  • Canja wurin ilimi daga yanki ɗaya zuwa wani. Idan tsarin ba da shawara ya horar da ƙira don rubutun rubutu kuma mun ƙara bidiyo zuwa gare shi, za mu iya sake amfani da samfuran da ke akwai don sabon nau'in abun ciki ya fi kyau.

Zan gaya muku yadda muka magance waɗannan matsalolin.

Zabin 'yan takara

Yadda za a rage adadin takardun da ake la'akari da dubban sau a cikin 'yan millise seconds, tare da kusan babu tabarbarewa a cikin ingancin matsayi?

A ce mun horar da nau'ikan ML da yawa, mun ƙirƙira fasali bisa su, kuma mun horar da wani ƙirar da ke ba da matsayi ga mai amfani. Komai zai yi kyau, amma ba za ku iya ɗauka kawai da ƙididdige duk alamun duk takaddun a cikin ainihin lokaci ba, idan akwai miliyoyin waɗannan takaddun, kuma ana buƙatar gina shawarwarin a cikin 100-200 ms. Ayyukan shine zabar wani yanki daga miliyoyin, wanda za'a ba da fifiko ga mai amfani. Wannan matakin yawanci ana kiransa zaɓin ɗan takara. Akwai bukatu da yawa don shi. Da fari dai, zaɓin dole ne ya faru da sauri, ta yadda za a bar lokaci mai yawa don ƙimar kanta. Abu na biyu, da yake rage yawan takardu don matsayi, dole ne mu adana takaddun da suka dace da mai amfani gaba ɗaya gwargwadon yiwuwa.

Ƙa'idarmu ta zaɓin ɗan takara ta samo asali, kuma a halin yanzu mun isa wani tsari mai matakai masu yawa:

Yadda muke aiki akan inganci da saurin zaɓin shawarwarin

Na farko, duk takardun sun kasu kashi-kashi, kuma ana ɗaukar mafi mashahuri takardun daga kowace ƙungiya. Ƙungiyoyi na iya zama shafuka, batutuwa, gungu. Ga kowane mai amfani, bisa tarihinsa, an zaɓi ƙungiyoyin da ke kusa da shi kuma ana ɗaukar mafi kyawun takardu daga gare su. Hakanan muna amfani da fihirisar kNN don zaɓar takaddun da ke kusa da mai amfani a ainihin lokacin. Akwai hanyoyi da yawa don gina alamar kNN; namu yayi aiki mafi kyau HNSW (Hierarchical Navigable Small World jadawali). Wannan ƙirar ƙira ce wacce ke ba ku damar nemo hanyoyin N mafi kusa ga mai amfani daga bayanan miliyoyin a cikin ƴan miliyon seconds. Da farko za mu jera dukkan bayanan mu a kan layi. Tun da bincike a cikin fihirisar yana aiki da sauri, idan akwai manyan abubuwan haɗin gwiwa da yawa, zaku iya ƙirƙirar fihirisa da yawa (fihirisa ɗaya don kowane sakawa) kuma samun damar kowane ɗayan su a ainihin lokacin.

Har yanzu muna da dubun dubatar takardu ga kowane mai amfani. Wannan har yanzu yana da yawa don ƙididdige duk fasalulluka, don haka a wannan matakin muna amfani da matsayi mai haske - ƙirar ƙira mai nauyi mara nauyi tare da ƙarancin fasali. Ayyukan shine tsinkaya waɗanne takaddun samfuri mai nauyi zai kasance a saman. Za a yi amfani da takaddun da ke da mafi girman tsinkaya a cikin samfurin nauyi, wato, a mataki na ƙarshe na matsayi. Wannan tsarin yana ba ku damar rage bayanan bayanan da aka yi la'akari da mai amfani daga miliyoyin zuwa dubbai a cikin dubun millise seconds.

ALS mataki a lokacin aiki

Yadda za a yi la'akari da bayanin mai amfani nan da nan bayan dannawa?

Wani muhimmin abu a cikin shawarwari shine lokacin amsawa ga mai amfani. Wannan yana da mahimmanci musamman ga sababbin masu amfani: lokacin da kawai mutum ya fara amfani da tsarin shawarwarin, yana karɓar abinci mara kyau na takaddun batutuwa daban-daban. Da zaran ya fara dannawa na farko, kuna buƙatar yin la'akari nan da nan kuma ku dace da abubuwan da yake so. Idan kun lissafta duk abubuwan da ke layi, saurin amsawar tsarin zai zama ba zai yiwu ba saboda jinkirin. Don haka wajibi ne a aiwatar da ayyukan mai amfani a ainihin lokacin. Don waɗannan dalilai, muna amfani da matakin ALS a lokacin aiki don gina wakilcin vector na mai amfani.

Bari mu ɗauka muna da wakilcin vector ga duk takaddun. Misali, za mu iya gina abubuwan da aka saka a layi akan layi bisa rubutun labarin ta amfani da ELMo, BERT ko wasu nau'ikan koyon injin. Ta yaya za mu iya samun wakilcin vector na masu amfani a cikin sarari ɗaya dangane da hulɗar su a cikin tsarin?

Babban ka'ida na samuwar da rugujewar matrix mai amfani-takardunBari mu sami m masu amfani da n takardun. Ga wasu masu amfani, an san dangantakar su da wasu takardu. Sannan ana iya wakilta wannan bayanin azaman matrix na mxn: layuka sun dace da masu amfani, kuma ginshiƙai sun dace da takardu. Tun da mutumin bai ga yawancin takardun ba, yawancin ƙwayoyin matrix za su kasance babu komai, yayin da wasu za su cika. Ga kowane taron (kamar, ƙi, danna) ana ba da wasu ƙima a cikin matrix - amma bari mu yi la'akari da ƙayyadaddun ƙirar wanda abin so ya dace da 1, kuma ƙi ya dace da -1.

Bari mu lalata matrix zuwa biyu: P (mxd) da Q (dxn), inda d shine girman ma'auni na vector (yawanci ƙaramin lamba). Sa'an nan kowane abu zai dace da d-dimensional vector (ga mai amfani - jere a cikin matrix P, don takarda - shafi a cikin matrix Q). Wadannan vectors za su zama abubuwan da suka dace. Don hango ko hasashen ko mai amfani zai so daftarin aiki, zaku iya kawai ninka abubuwan da aka haɗa su.

Yadda muke aiki akan inganci da saurin zaɓin shawarwarin
Ɗaya daga cikin hanyoyin da za a iya bazuwar matrix shine ALS (Alternating Least Squares). Za mu inganta aikin asara mai zuwa:

Yadda muke aiki akan inganci da saurin zaɓin shawarwarin

Anan rui shine hulɗar mai amfani da u tare da daftarin aiki i, qi shine vector na takaddar i, pu shine vector na mai amfani u.

Sa'an nan mafi kyawun vector mai amfani daga mahangar ma'anar kuskuren murabba'i (na ƙayyadaddun kayan aikin daftarin aiki) ana samun su ta hanyar nazari ta hanyar warware koma bayan layin madaidaiciya.

Ana kiran wannan "matakin ALS". Kuma Algorithm na ALS kanta shine mu gyara ɗayan matrices (masu amfani da labarai) da sabunta ɗayan, gano mafi kyawun mafita.

Abin farin ciki, gano wakilcin vector na mai amfani aiki ne mai saurin gaske wanda za'a iya yi a lokacin aiki ta amfani da umarnin vector. Wannan dabarar tana ba ku damar ɗaukar ra'ayoyin mai amfani nan da nan a cikin matsayi. Ana iya amfani da irin wannan haɗawa a cikin fihirisar kNN don inganta zaɓin ɗan takara.

Tace Haɗin kai Rarraba

Yadda za a yi ƙara rarraba matrix factorization da sauri nemo vector wakilcin sababbin labarai?

Abun ciki ba shine kawai tushen siginar shawarwari ba. Wani muhimmin tushe shine bayanin haɗin gwiwa. Ana iya samun fasalulluka masu kyau a al'adance daga ruɓewar matrix mai amfani-takardun. Amma lokacin ƙoƙarin yin irin wannan bazuwar, mun fuskanci matsaloli:

1. Muna da miliyoyin takardu da dubun-dubatar masu amfani. Matrix bai dace da na'ura gaba ɗaya ba, kuma bazuwar zai ɗauki lokaci mai tsawo.
2. Yawancin abubuwan da ke cikin tsarin suna da ɗan gajeren lokaci: takardun sun kasance masu dacewa don kawai 'yan sa'o'i. Don haka, ya zama dole a gina wakilcin su cikin sauri da sauri.
3. Idan ka gina bazuwar nan da nan bayan da aka buga daftarin aiki, yawan adadin masu amfani ba zai sami lokaci don kimanta shi ba. Saboda haka, da alama wakilcin vector ba zai yi kyau sosai ba.
4. Idan mai amfani yana so ko ya ƙi, ba za mu iya yin la'akari da wannan ba nan da nan a cikin lalata.

Don magance waɗannan matsalolin, mun aiwatar da rarraba rarraba na matrix-takardun mai amfani tare da sabuntawa akai-akai. Yaya daidai yake aiki?

A ce muna da gungu na injin N (N yana cikin ɗaruruwan) kuma muna so mu yi rarraba rarraba na matrix akan su wanda bai dace da na'ura ɗaya ba. Tambayar ita ce yadda za a yi wannan bazuwar ta yadda, a gefe guda, akwai isassun bayanai akan kowace na'ura kuma, a daya, don haka lissafin ya kasance mai zaman kansa?

Yadda muke aiki akan inganci da saurin zaɓin shawarwarin

Za mu yi amfani da algorithm na lalatawar ALS da aka kwatanta a sama. Bari mu kalli yadda ake aiwatar da matakin ALS ɗaya a cikin hanyar rarraba - sauran matakan za su kasance iri ɗaya. Bari mu ce muna da ƙayyadaddun matrix na takardu kuma muna son gina matrix na masu amfani. Don yin wannan, za mu raba shi zuwa sassa N ta layi, kowane bangare zai ƙunshi kusan adadin layi ɗaya. Za mu aika zuwa kowane na'ura maras komai sel na layuka masu dacewa, da matrix na abubuwan da aka saka daftarin aiki (gaba daya). Tun da girmansa ba shi da girma sosai, kuma matrix mai amfani-takardun yawanci ba su da yawa, wannan bayanan zai dace da na'ura na yau da kullun.

Za'a iya maimaita wannan dabarar a cikin lokuta da yawa har sai samfurin ya haɗu, yana musanya madaidaiciyar matrix ɗaya bayan ɗaya. Amma ko da a lokacin, lalatawar matrix na iya ɗaukar sa'o'i da yawa. Kuma wannan ba ya warware matsalar cewa kana bukatar da sauri samun embendings na sabon takardu da kuma sabunta da embedding na wadanda game da abin da akwai kadan bayanai a lokacin gina model.

Gabatar da sabuntawar ƙirar haɓaka cikin sauri ya taimaka mana. Bari mu ce muna da samfurin horarwa a halin yanzu. Tun lokacin da aka horar da ita, an sami sabbin kasidu da masu amfani da mu suka yi hulɗa da su, da kuma labaran da ba su da ɗan ƙaramin hulɗa yayin horo. Don samun saurin shigar da irin waɗannan labaran, muna amfani da abubuwan haɗin mai amfani da aka samu yayin babban horo na farko na ƙirar kuma muna yin matakin ALS ɗaya don ƙididdige matrix ɗin takaddun da aka ba madaidaicin matrix mai amfani. Wannan yana ba ku damar karɓar abubuwan sakawa cikin sauri - a cikin 'yan mintuna kaɗan bayan an buga takaddar - kuma galibi ana sabunta abubuwan da aka saka na kwanan nan.

Don ba da shawarwari nan da nan yi la'akari da ayyukan ɗan adam, a cikin lokacin aiki ba ma amfani da abubuwan haɗin mai amfani da aka samu ta layi. Madadin haka, muna yin matakin ALS kuma muna samun ainihin vector mai amfani.

Canja wurin zuwa wani yanki na yanki

Yadda ake amfani da ra'ayin mai amfani akan labaran rubutu don gina hoton vector na bidiyo?

Da farko, mun ba da shawarar labaran rubutu kawai, don haka yawancin algorithms ɗin mu an keɓance su da irin wannan nau'in abun ciki. Amma lokacin ƙara wasu nau'ikan abun ciki, mun fuskanci buƙatar daidaita samfuran. Ta yaya muka magance wannan matsalar ta amfani da misalin bidiyo? Ɗayan zaɓi shine sake horar da duk samfura daga karce. Amma wannan yana ɗaukar lokaci mai tsawo, kuma wasu daga cikin algorithms suna buƙatar akan girman samfurin horo, wanda ba a samuwa a cikin adadin da ake buƙata don sabon nau'in abun ciki a farkon lokacin rayuwarsa akan sabis ɗin.

Mun tafi wata hanya kuma muka sake amfani da samfurin rubutu don bidiyo. Dabarar ALS iri ɗaya ta taimaka mana ƙirƙirar sifofin vector na bidiyo. Mun ɗauki wakilcin vector na masu amfani dangane da labaran rubutu kuma mun yi matakin ALS ta amfani da bayanan duba bidiyo. Don haka a sauƙaƙe mun sami wakilcin vector na bidiyo. Kuma a lokacin aiki kawai muna lissafin kusanci tsakanin vector mai amfani da aka samu daga labaran rubutu da vector na bidiyo.

ƙarshe

Haɓaka ainihin tsarin ba da shawara na ainihin lokaci ya ƙunshi ƙalubale da yawa. Kuna buƙatar aiwatar da bayanai da sauri kuma kuyi amfani da hanyoyin ML don amfani da wannan bayanan yadda ya kamata; gina hadaddun tsarin rarrabawa masu iya sarrafa siginar mai amfani da sabbin raka'a na abun ciki a cikin ƙaramin lokaci; da sauran ayyuka masu yawa.

A cikin tsarin na yanzu, ƙirar da na bayyana, ingancin shawarwari ga mai amfani yana girma tare da aikinsa da tsayin daka a kan sabis. Amma ba shakka, a nan ya ta'allaka ne babban wahala: yana da wuya ga tsarin nan da nan ya fahimci bukatun mutumin da ba shi da ƙananan hulɗa tare da abun ciki. Inganta shawarwari ga sabbin masu amfani shine babban burin mu. Za mu ci gaba da inganta algorithms ta yadda abun ciki da ke dacewa da mutum ya shiga cikin abincinsa da sauri, kuma ba a nuna abubuwan da ba su da mahimmanci.

source: www.habr.com

Add a comment