Problem

Rozważają tzw. “feed ads”, czyli reklamy, które wyświetlane są pomiędzy zajawkami artykułów w aplikacji mobilnej Google.

Zastanawiają się jak zrobić model multi-task, który będzie mógł robić predykcję na raz 3 tasków:

  1. zwykły CTR (p-stwo klika)
  2. pDismiss, czyli p-stwo zamknięcia reklamy (kliknięcia na krzyżyk)
  3. pClickQuality ~= vclick, czyli p-stwo tego, że klik doprowadzi do “dobrego doświadczenia z landing pagem pod warunkiem kliknięcia”

Uwagi

Uwaga 1

Dlaczego multi-task jest trudne? Bo:

  1. pCTR i pClickQuality muszą być trenowane na różnych zbiorach danych (jeden pod warunkiem wygrania, drugi pod warunkiem kliknięcia)
  2. niektóre labele mogą spływać po długim czasie - Jak uczyć model gdy powoli spływają odpowiedzi. Wspominają publikację Handling many conversions per click in modeling delayed feedback, ale wskazują, że tam opóźnienia mogą być dużo dłuższe.
  3. wymieszanie wielu funkcji strat dla różnych zadań jest wyzwaniem, tzn. nie wiadomo jakie dać wagi tym funkcjom strat
Uwaga 2

Na to czy dana reklama wygra aukcję wpływa nie tylko pCTR, ale również ocena jakości reklamy, tzn. piszą, że “reklama musi spełniać minimalne wymagania jakościowe, żeby być konkurencyjna”. W Towards the Better Ranking Consistency A Multi-task Learning Framework for Early Stage Ads Ranking też podkreślali rolę jakościową reklamy.

Uwaga 3

Ich stack do trenowania modeli online jest tym samym co w Ad Click Prediction a View from the Trenches. Model nigdy nie zbiega, ponieważ widzi każdy wiersz datasetu dokładnie raz. Nie ma stałego zbioru walidacyjnego i testowego.

Zaproponowana metoda

Zastrzegają, że ich metoda może być skalowana do dowolnej liczby głów/zadań.

Sposób trenowania

Główny pomysł opiera się na tym, że:

  1. Uczą model na wszystkich danych i wszystkich taskach, których wiek jest większy niż (wiek, czyli czas od aukcji). Wiek zapewnia, że odpowiedzi dla wszystkich tasków już spłynęły. Taki model zapisywany jest jako checkpoint 1.
  2. Następnie model z checkpoint 1 jest dotrenowywany dalej, na danych których wiek jest większy niż () i na taskach, których odpowiedzi spływają już po czasie . Czyli w przypadku Google uczymy model tylko na tasku pCTR. Taki model zapisywany jest jako checkpoint 2 i pchany jest na proda do servingu.
  3. To nie jest napisane wprost, ale w kolejnej iteracji brany jest model z checkpoint 1, który jest dotrenowywany jak wyżej.
Architektura modelu

MMoE

Uczenie na różnych zbiorach

pCTR jest pod warunkiem wygrania, a pClickQuality jest pod warunkiem klika - jak to pogodzić? Robią tak, że jeśli nie było klika to funkcję straty dla pClickQuality zerują.

Mieszanie wielu funkcji strat

Mają dodatkową pętlę zwrotną, która dostosowuje wagi funkcji strat za pomocą black-boxa Vizier. Ona ma tak dostosować wagi aby zminimalizować jeden score: