Airbnb : deep learning dans la recherche — +0,6% de réservations grâce à une nouvelle architecture et +14% de réservations pour les nouveaux logements
Les résultats de la deuxième vague sont fixés dans les tests A/B en ligne. L'architecture deux tours : +0,6% de réservations et +0,75% de revenus avec −33% de latence de scoring p99 ; un effet secondaire curieux — le prix moyen des logements réservés a baissé de 2,3%, signifiant que le modèle s'améliorait dans l'ajustement des préférences de prix des clients. Le mécanisme de démarrage à froid a relevé les réservations de nouveaux logements de 14% (et leur part d'impression sur la première page de 14%), ajoutant +0,38% aux réservations globales et rendant le côté de l'offre plus sain. Le dropout de position a apporté +0,7% de réservations supplémentaires et +1,8% de revenus inattendus ; les réservations des hôtels-boutiques — un segment affecté par le biais — ont augmenté de 1,1%. L'échelle doit être lue correctement : les fractions de pour-cent ici ne sont pas « de petits résultats ». Aux volumes d'Airbnb, +0,6% de réservations est un énorme nombre absolu, et la somme des gains séquentiels (+0,6%, +0,38%, +0,7% du deuxième article seul) se compose en un effet cumulatif à deux chiffres au fil des ans. L'équipe elle-même appelle l'application des réseaux de neurones à la recherche l'une des plus grandes histoires de succès ML de l'entreprise. Les limites sont aussi honnêtes : tous les chiffres sont les tests A/B internes auto-déclarés de l'entreprise, mais le détail méthodologique et les échecs publiés donnent plus de poids à ces chiffres qu'un communiqué de presse typique. À notre avis, la valeur principale de la paire d'articles n'est pas les architectures spécifiques (les réseaux deux tours et l'atténuation des biais de position sont devenues depuis longtemps des normes industrielles) mais la culture documentée : le seul arbitre de chaque changement était un test en ligne sur l'argent (réservations), avec des métriques hors ligne servant uniquement de filtre d'hypothèse. Le cas de la « monotonie douce » des prix est révélateur : une idée intuitivement juste, belle hors ligne, a perdu 0,67% des réservations en production — sans la discipline du test en ligne, elle serait restée dans le système. Notre deuxième observation : Airbnb a effectivement publié un guide complet des erreurs courantes pour tous ceux qui prennent des réseaux de neurones dans le classement de recherche — du surapprentissage ID à la saturation sans normalisation. Les entreprises retraçant ce chemin économisent des mois non pas sur les succès des autres mais sur les impasses des autres ; en ce sens, publier honnêtement les échecs est un rare exemple d'altruisme en ingénierie qui fonctionne aussi comme stratégie de marque employeur.
- Applying Deep Learning to Airbnb Search (KDD 2019) — Airbnb / arXiv (Haldar et al.), 2018-10-22
- Improving Deep Learning for Airbnb Search (KDD 2020) — Airbnb / arXiv (Haldar et al.), 2020-02-13
- Listing Embeddings in Search Ranking (800 млн сессий, +21% CTR карусели) — Airbnb Engineering Blog (Mihajlo Grbovic), 2018-03-13
Contexte
Le classement de la recherche est le mécanisme ML fondamental d'Airbnb : il décide quels logements parmi des millions un client voit sur la première page de résultats — et donc quels propriétaires reçoivent des réservations. L'investissement dans la recherche se convertit directement en argent, c'est pourquoi son évolution est documentée par l'équipe avec une rare transparence pour l'industrie : dans deux articles KDD fondateurs — « Applying Deep Learning to Airbnb Search » (arXiv preprint octobre 2018, KDD 2019) et « Improving Deep Learning for Airbnb Search » (arXiv février 2020, KDD 2020), tous deux rédigés par Malay Haldar et collègues.
Ces articles sont atypiques pour le genre : au lieu de présenter une « architecture révolutionnaire », l'équipe décrit un chemin d'années d'itérations avec des pourcentages exacts de gains de réservation provenant de tests A/B en ligne — et disséque les expériences échouées avec un détail égal. Les auteurs le précisent clairement : « deep learning a été un apprentissage difficile pour nous », et ils distillent leur méthodologie dans le principe que les utilisateurs mènent et le modèle suit — d'abord trouver le problème dans les données réelles du comportement des clients, puis changer l'architecture, pas l'inverse.
Au moment du premier article, Airbnb avait déjà une infrastructure ML mature autour de la recherche. La personnalisation en temps réel sur les embeddings d'annonces était en production depuis 2017 : l'équipe de Mihajlo Grbovic a entraîné des représentations vectorielles de 32 dimensions des logements sur plus de 800 millions de sessions de clics de recherche sur 4,5 millions d'annonces actives — le carrousel Annonces similaires sur ces embeddings a gagné 21% de CTR. Le classement lui-même était piloté par un modèle GBDT qui avait remplacé une fonction de notation manuelle — un lancement que l'équipe appelle l'une des plus grandes améliorations par étapes des réservations dans l'histoire de l'entreprise. Les problèmes ont commencé après ce succès.
Problème
Le premier modèle de gradient boosting a livré un bond puissant, mais les gains se sont ensuite asséchés : l'équipe a continué à augmenter l'effort tandis que les tests A/B revenaient neutres encore et encore. C'est le plateau classique d'un système ML mature — quand le réglage des variables et des hyperparamètres cesse de faire bouger la métrique métier, soulevant la question d'un changement de paradigme avec un résultat imprévisible.
Le problème de recherche d'Airbnb échappe également aux solutions classiques de la littérature sur le classement. Les utilisateurs ne répètent presque jamais une requête pour le même bien : un client qui a visité Paris cherche Rome ensuite. L'offre est fortement limitée : un logement pour un ensemble de dates ne peut être réservé que par un seul client, donc les résultats ne peuvent pas simplement afficher « les plus populaires ». Le marché est biface — le classement équilibre les intérêts des clients et des propriétaires, et les signaux comportementaux (clics, sauvegardes, demandes de réservation) sont bruyants et biaisés.
Deux biais systématiques nécessitaient une attention particulière. D'abord, le démarrage à froid : les nouveaux logements sans historique d'interaction accusaient un retard d'environ 6% NDCG par rapport aux logements établis ; l'ironie est que les très signaux d'engagement donnant au modèle son pouvoir (les supprimer coûtait 4,5% NDCG) enterraient les nouveaux venus au fond des résultats — et sans nouveaux logements, la croissance de l'offre s'étouffe. Deuxièmement, le biais de position : les clients réservent plus souvent ce qui est affiché plus haut, donc les données d'entraînement gonflent la qualité des logements en haut de position, et un modèle entraîné sur de tels journaux auto-confirme les anciennes erreurs de classement.
Solution
Le passage aux réseaux de neurones s'est fait par itérations, chacune validée par un test A/B de réservation en ligne. La première tentative — un réseau simple avec une seule couche cachée de 32 unités ReLU — s'est avérée neutre en réservations contre GBDT. La percée est venue avec un NN Lambdarank : une perte de classement sur les paires réservées/non réservées pondérées par les deltas NDCG. Ensuite un ensemble où les indices de feuilles GBDT et les prédictions de la machine de factorisation alimentaient le réseau en tant que variables. La finale du premier article est un réseau profond : 195 variables (après expansion des catégories en embeddings), deux couches cachées de 127 et 83 ReLU, entraîné sur 1,7 milliard de paires impression-résultat. Le DNN a livré des gains comparables à l'empilement de tous les modèles précédents — avec un système beaucoup plus simple.
Les impasses reçoivent autant d'espace dans les articles. Les embeddings de Listing-ID — une astuce standard de l'industrie — ont conduit à un surapprentissage : même la maison la plus populaire ne peut être réservée que 365 fois par an au maximum, pas assez de signal par ID. L'apprentissage multi-tâches (prédisant à la fois les réservations et les vues longues) a fortement augmenté les vues — et n'a pas bougé les réservations. Chaque variante de dropout a dégradé les métriques hors ligne ; les connexions résiduelles, une architecture Deep & Wide, et les réseaux d'attention « n'ont pas déplacé l'aiguille ». Les leçons distinctes concernent les données et l'ingénierie : sans normalisation des variables, l'entraînement s'est saturé en cours de route, tandis que la conversion du pipeline de CSV à Protobuf a accéléré l'entraînement 17 fois et a poussé l'utilisation du GPU à ~90%.
Le deuxième article (KDD 2020) est le tour suivant. Une architecture deux tours a divisé le modèle en une « tour de requête » et une « tour d'annonce », chacune comprimant son côté en un vecteur de 100 dimensions ; la pertinence est la distance entre les vecteurs. C'est non seulement la qualité (+0,7% NDCG en ligne) mais aussi la performance : la complexité du scoring baisse de O(N·H·(Q+L)) à O(N·H_l·L + H_q·Q), réduisant la latence du 99e centile de 33%.
Pour le démarrage à froid, ils ont construit un mécanisme d'estimation de l'engagement pour les nouveaux logements : à la place de l'historique manquant, le modèle reçoit une prévision d'interaction calculée à partir des logements voisins. Le biais de position a été vaincu avec le dropout de position : la position d'affichage est alimentée au modèle en tant que variable mais mise à zéro aléatoirement pendant l'entraînement (le taux choisi — 0,15) pour que le modèle n'apprenne pas « haut de la page = bon ». Les échecs sont enregistrés à nouveau : la monotonie des prix durs a écrasé les réservations de 1,6% ; la version « souple » — belle hors ligne — a produit −0,67% en production, et le test a été annulé.
Résultat
Les résultats de la deuxième vague sont fixés dans les tests A/B en ligne. L'architecture deux tours : +0,6% de réservations et +0,75% de revenus avec −33% de latence de scoring p99 ; un effet secondaire curieux — le prix moyen des logements réservés a baissé de 2,3%, signifiant que le modèle s'améliorait dans l'ajustement des préférences de prix des clients. Le mécanisme de démarrage à froid a relevé les réservations de nouveaux logements de 14% (et leur part d'impression sur la première page de 14%), ajoutant +0,38% aux réservations globales et rendant le côté de l'offre plus sain. Le dropout de position a apporté +0,7% de réservations supplémentaires et +1,8% de revenus inattendus ; les réservations des hôtels-boutiques — un segment affecté par le biais — ont augmenté de 1,1%.
L'échelle doit être lue correctement : les fractions de pour-cent ici ne sont pas « de petits résultats ». Aux volumes d'Airbnb, +0,6% de réservations est un énorme nombre absolu, et la somme des gains séquentiels (+0,6%, +0,38%, +0,7% du deuxième article seul) se compose en un effet cumulatif à deux chiffres au fil des ans. L'équipe elle-même appelle l'application des réseaux de neurones à la recherche l'une des plus grandes histoires de succès ML de l'entreprise. Les limites sont aussi honnêtes : tous les chiffres sont les tests A/B internes auto-déclarés de l'entreprise, mais le détail méthodologique et les échecs publiés donnent plus de poids à ces chiffres qu'un communiqué de presse typique.
À notre avis, la valeur principale de la paire d'articles n'est pas les architectures spécifiques (les réseaux deux tours et l'atténuation des biais de position sont devenues depuis longtemps des normes industrielles) mais la culture documentée : le seul arbitre de chaque changement était un test en ligne sur l'argent (réservations), avec des métriques hors ligne servant uniquement de filtre d'hypothèse. Le cas de la « monotonie douce » des prix est révélateur : une idée intuitivement juste, belle hors ligne, a perdu 0,67% des réservations en production — sans la discipline du test en ligne, elle serait restée dans le système.
Notre deuxième observation : Airbnb a effectivement publié un guide complet des erreurs courantes pour tous ceux qui prennent des réseaux de neurones dans le classement de recherche — du surapprentissage ID à la saturation sans normalisation. Les entreprises retraçant ce chemin économisent des mois non pas sur les succès des autres mais sur les impasses des autres ; en ce sens, publier honnêtement les échecs est un rare exemple d'altruisme en ingénierie qui fonctionne aussi comme stratégie de marque employeur.
Leçons
- Un plateau après un succès précoce est normal : quand GBDT a cessé de livrer, la réponse était un changement de paradigme (réseaux de neurones), pas un réglage interminable des variables.
- Valider chaque amélioration avec la métrique d'argent en ligne (réservations), pas seulement NDCG hors ligne : la « monotonie douce » des prix a gagné hors ligne et a échoué en production à −0,67%.
- Le démarrage à froid mérite son propre mécanisme : l'estimation de l'engagement pour les nouveaux logements a relevé leurs réservations de 14% et a rendu le marché plus sain.
- Le biais de position corrompt les données d'entraînement : l'astuce simple du dropout de position (taux 0,15) s'est convertie en +0,7% de réservations et +1,8% de revenus.
- L'architecture peut se rentabiliser en termes de performance : le réseau deux tours non seulement a ajouté des réservations mais a réduit la latence p99 de 33% en réduisant la complexité du scoring.
- Les astuces standard ne se transfèrent pas aveuglément : les embeddings de Listing-ID s'overfittent (un logement peut être réservé au maximum 365 fois par an), et dropout a dégradé les métriques hors ligne.
- Publiez aussi les échecs : les articles d'Airbnb sont précieux précisément parce qu'ils documentent les impasses (résiduel, Deep & Wide, attention, multi-tâche) qui économisent des mois à d'autres équipes.
Questions fréquentes
Combien de réservations le deep learning a-t-il ajoutées à la recherche d'Airbnb ?
Dans les tests A/B en ligne des articles KDD : l'architecture deux tours a ajouté +0,6% de réservations et +0,75% de revenus, le mécanisme de démarrage à froid +0,38% de réservations globales (+14% pour les nouveaux logements), et le dropout de position un autre +0,7% de réservations et +1,8% de revenus. À l'échelle d'Airbnb, chaque fraction de pour-cent est un grand nombre absolu.
Pourquoi Airbnb a-t-elle changé le gradient boosting pour les réseaux de neurones ?
Le premier modèle GBDT a livré l'un des plus grands sauts de réservations de l'histoire de l'entreprise, mais les gains se sont ensuite asséchés dans de longues séries de tests A/B neutres. Les réseaux de neurones entraînés sur 1,7 milliard de paires impression-résultat ont redémarré la croissance métrique ; le DNN final a égalé les gains de l'empilement de tous les modèles précédents.
Qu'est-ce que l'architecture deux tours et qu'a-t-elle livré ?
Le modèle se divise en une « tour de requête » et une « tour d'annonce », chacune comprimant son côté en un vecteur de 100 dimensions ; la pertinence est la distance entre les vecteurs. Le résultat : +0,6% de réservations, +0,75% de revenus, et −33% de latence de scoring p99 grâce à la réduction de la complexité de calcul.
Comment Airbnb a-t-elle résolu le problème de démarrage à froid des nouveaux logements ?
Les nouveaux logements accusaient un retard de ~6% NDCG pour manque d'historique d'interaction. L'équipe a construit un mécanisme d'estimation de l'engagement : le modèle reçoit une prévision d'interaction calculée à partir de logements voisins similaires. Les réservations de nouveaux logements ont augmenté de 14%.
Airbnb a-t-elle eu des expériences ML échouées dans la recherche ?
Oui, et les articles les documentent : les embeddings de Listing-ID s'overfittent, l'apprentissage multi-tâches a augmenté les vues sans réservations, les connexions résiduelles, Deep & Wide, et l'attention « n'ont pas déplacé l'aiguille », la monotonie des prix durs a coûté −1,6% de réservations et la version « douce » −0,67% ; les deux tests ont été annulés.