15. 11.

Jak ve vyhledávání učíme model užitečnosti

Ve středu 13. 11. jsme aktualizovali jeden z modelů, kterými řadíme výsledky vyhledávání. Tomuto modelu říkáme “užitečnost”. Pokud jste v posledních dnech zaznamenali se svými stránkami velké změny v pozicích na vyhledávání, mohlo to být způsobeno touto aktualizací.

Ve vyhledávání pro nalezené stránky vzhledem k dotazu modelujeme hodně různých vlastností, které následně používáme pro řazení. Kromě užitečnosti jsou to třeba přesnost dotazu, navigačnost a další. Pro samotné stránky bez ohledu na dotaz modelujeme například kvalitu stránky nebo různé verze spamovitosti. Všechny tyto modely při vyhodnocování používají mnoho stovek signálů automaticky spočítaných z dat o stránkách, ale nejdříve se model musí naučit. Pro učení používáme metodou strojového učení s učitelem (supervised learning). Modelu napřed dáme mnoho ilustračních příkladů, které jsme připravili a nechali ohodnotit našimi zaučenými brigádníky. Model se potom naučí hádat hodnocení i v dalších situacích, které v trénovacích příkladech vůbec neviděl. V případě modelu užitečnosti, který jsme nyní aktualizovali, jsme z více než miliónu ručních hodnocení použili přes sto tisíc nejaktuálnějších příkladů, což na jeho naučení stačí.

Jak se bude konkrétní model chovat, vždy samozřejmě závisí na metodě, kterou byly nasbírány učící příklady. Pro stanovení užitečnosti jsme našim hodnotitelům dali relativně jednoduché pravidlo. Mají za úkol rozhodnout, pro jak velké množství uživatelů, hledajících konkrétní dotaz, bude nalezená stránka pravděpodobně užitečná. Určitou výhodu pak ve výsledcích mají stránky, které hledaná témata probírají více do šířky, protože je pravděpodobnější, že budou užitečné pro více uživatelů. Podobně při hledání výrobků je jako užitečnější vyhodnocena stránka, která výrobek podrobně popisuje, umožňuje ho objednat a třeba mu i zajišťuje servis, oproti stránce, která o výrobku jenom informuje, nemá ho skladem nebo ho jenom bez dalších informací přeprodává. Takto naučenou užitečnost používáme už od letošního července a nyní jsme aktualizovali její model.

Pro většinu strojového učení na vyhledávání Seznamu používáme už mnoho let naši vlastní komponentu RCrank. (RC zde znamená Rožník, Cícha, což jsou příjmení autorů.) RCrank je les sčítající výsledky z rozhodovacích stromů s použitím gradient boostingu a oblivious trees. (Gradient boosting zjednodušeně znamená, že se každý další strom učí na chybách předchozích stromů. Oblivious trees je druh rozhodovacího stromu, který v každé úrovni používá vždy stejný signál, což v ostrém provozu pomáhá rychlému vyhodnocování.) Při nejnovější aktualizaci jsme se nově rozhodli ve fázi učení vyzkoušet open source komponentu CatBoost, která má velmi podobné vlastnosti jako náš RCrank, ale rychleji se učí. Výstupy CatBoostu jsme zkonvertovali do formátu našeho tradičního modelu a po úspěšném otestování nasadili.

Yuhů, Dušan Janovský
Yuhů

Konzultant vyhledávání