Airbnb: deep learning en búsqueda — +0.6% reservas de una nueva arquitectura y +14% reservas para nuevos anuncios
Los resultados de la segunda onda se fijan en pruebas A/B en línea. La arquitectura de dos torres: +0.6% reservas y +0.75% ingresos con −33% latencia de scoring p99; un efecto secundario curioso — el precio promedio de hogares reservados cayó 2.3%, significando que el modelo mejoró en coincidir las preferencias de precio de huéspedes. El mecanismo de inicio en frío elevó las reservas de nuevos anuncios en 14% (y su participación de impresión de primera página en 14%), sumando +0.38% a las reservas generales e hiciendo que el lado de la oferta fuera más saludable. Position dropout trajo otro +0.7% reservas e inesperados +1.8% ingresos; reservas de hoteles boutique — un segmento dañado por el sesgo — subieron 1.1%. La escala debe leerse correctamente: fracciones de porcentaje aquí no son 'resultados pequeños'. En volúmenes de Airbnb, +0.6% reservas es un número absoluto enorme, y la suma de ganancias secuenciales (+0.6%, +0.38%, +0.7% del segundo artículo solo) se compone en un efecto acumulativo de dos dígitos a lo largo de los años. El equipo en sí llama a la aplicación de redes neuronales a la búsqueda una de las mayores historias de éxito ML de la empresa. Los límites también son honestos: todas las cifras son pruebas A/B internas auto-reportadas de la empresa, pero el detalle metodológico y los fallos publicados dan a estos números más peso que un comunicado de prensa típico. En nuestra opinión, el valor principal del par de artículos no es las arquitecturas específicas (redes de dos torres y mitigación de sesgo de posición hace mucho se convirtieron en estándares de la industria) sino la cultura documentada: el único árbitro de cada cambio fue una prueba en línea sobre dinero (reservas), con métricas offline sirviendo solo como filtro de hipótesis. El caso de monotonía de precio 'suave' es revelador: una idea intuitivamente correcta, offline hermosa, perdió 0.67% de reservas en producción — sin disciplina de prueba en línea habría permanecido en el sistema. Nuestra segunda observación: Airbnb efectivamente publicó un 'mapa de obstáculos' para todos los que llevan redes neuronales al ranking de búsqueda — desde sobreajuste de ID a saturación sin normalización. Las empresas que retroceden por este camino ahorran meses no en éxitos de otros sino en callejones sin salida de otros; en ese sentido, publicar honestamente fallos es un caso raro de altruismo de ingeniería que se duplica como marca de empleador.
- 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
Contexto
El ranking de búsqueda es el mecanismo ML central de Airbnb: decide cuál de millones de anuncios ve un huésped en la primera página de resultados — y por lo tanto qué anfitriones reciben reservas. La inversión en búsqueda se convierte en dinero directamente, por lo que su evolución es documentada por el equipo con rara franqueza en la industria: en dos artículos emblemáticos de KDD — 'Aplicación de Deep Learning a la Búsqueda de Airbnb' (preimpresión de arXiv octubre 2018, KDD 2019) e 'Mejora del Deep Learning en la Búsqueda de Airbnb' (arXiv febrero 2020, KDD 2020), ambos escritos por Malay Haldar y colegas.
Estos artículos son atípicos en el género: en lugar de exhibir una 'arquitectura revolucionaria', el equipo describe un camino de años de iteraciones con porcentajes exactos de ganancia de reservas de pruebas A/B en línea — y disecciona los experimentos fallidos con igual detalle. Los autores lo afirman claramente: 'el aprendizaje profundo fue un aprendizaje difícil para nosotros', y destilan su metodología en el principio de que los usuarios lideran y el modelo sigue — primero encuentra el problema en datos reales del comportamiento del huésped, luego cambia la arquitectura, no al revés.
Para el primer artículo, Airbnb ya tenía infraestructura ML madura alrededor de la búsqueda. La personalización en tiempo real en embeddings de anuncios estaba en producción desde 2017: el equipo de Mihajlo Grbovic entrenó representaciones vectoriales de 32 dimensiones de hogares en más de 800 millones de sesiones de clics de búsqueda en 4.5 millones de anuncios activos — el carrusel Similar Listings en estos embeddings ganó 21% CTR. El ranking en sí estaba impulsado por un modelo de árbol de decisión potenciado por gradiente (GBDT) que había reemplazado una función de puntuación manual — un lanzamiento que el equipo califica como una de las mayores mejoras escalonadas en reservas en la historia de la empresa.
Los problemas comenzaron después de ese éxito.
Problema
El primer modelo de potenciación por gradiente entregó un salto poderoso, pero las ganancias se agotaron: el equipo siguió aumentando el esfuerzo mientras las pruebas A/B resultaban neutrales una y otra vez. Este es el estancamiento clásico de un sistema ML maduro — cuando el ajuste de características e hiperparámetros deja de mover la métrica comercial, planteando la cuestión de un cambio de paradigma con un resultado impredecible.
El problema de búsqueda de Airbnb también resiste las recetas estándar de la literatura de ranking. Los usuarios casi nunca repiten una consulta para el mismo 'artículo': un huésped que visitó París busca Roma después. La oferta está fuertemente restringida: un hogar para un conjunto de fechas solo puede ser reservado por un huésped, por lo que los resultados no pueden simplemente mostrar 'el más popular'. El mercado es bilateral — el ranking equilibra los intereses de huéspedes y anfitriones, y las señales de comportamiento (clics, guardados, solicitudes de reserva) son ruidosas y sesgadas.
Dos sesgos sistémicos merecían ataques dedicados. Primero, inicio en frío: nuevos anuncios sin historial de interacción se rezagaban aproximadamente 6% NDCG versus los establecidos; la ironía es que las características de participación que dan poder al modelo (eliminarlas costó 4.5% NDCG) enterraron recién llegados en el fondo de los resultados — y sin nuevos anuncios, el crecimiento de la oferta se sofoca. Segundo, sesgo de posición: los huéspedes reservan más a menudo lo que se muestra más arriba, por lo que los datos de entrenamiento inflan la calidad de los anuncios en posiciones superiores, y un modelo entrenado en tales registros auto-confirma errores de ranking antiguos.
Solución
El movimiento hacia redes neuronales fue en iteraciones, cada una validada por una prueba A/B de reserva en línea. El primer intento — una red simple con una única capa oculta de 32 unidades ReLU — resultó neutral en reservas contra GBDT. El avance vino con una Lambdarank NN: una pérdida de ranking en pares booked/not-booked ponderada por deltas NDCG. Luego un ensemble donde índices de hojas GBDT y predicciones de máquinas de factorización alimentaron la red como características. El final del primer artículo es una red profunda: 195 características (después de expandir categóricas en embeddings), dos capas ocultas de 127 y 83 ReLUs, entrenada en 1.7 mil millones de pares impresión-resultado. La DNN entregó ganancias comparables al apilamiento de todos los modelos anteriores — con un sistema mucho más simple.
Los callejones sin salida reciben igual espacio en los artículos. Embeddings de listing-ID — un truco estándar de la industria — llevaron a sobreajuste: incluso el hogar más popular se reserva como máximo 365 veces al año, no suficiente señal por ID. Multi-task learning (prediciendo tanto reservas como visitas prolongadas) aumentó significativamente las vistas — y no movió reservas. Cada variante de dropout degradó métricas offline; conexiones residuales, una arquitectura Deep & Wide, y redes de attention 'no movieron la aguja'. Lecciones separadas concernientes a datos e ingeniería: sin normalización de características, el entrenamiento se saturó a mitad de camino, mientras que convertir el pipeline de CSV a Protobuf aceleró el entrenamiento 17x e impulsó la utilización de GPU a ~90%.
El segundo artículo (KDD 2020) es el siguiente turno. Una arquitectura de dos torres divide el modelo en una 'torre de consulta' y una 'torre de anuncio', cada una comprimiendo su lado en un vector de 100 dimensiones; la relevancia es la distancia entre vectores. Eso no es solo calidad (+0.7% NDCG en línea) sino rendimiento: la complejidad de scoring cae de O(N·H·(Q+L)) a O(N·H_l·L + H_q·Q), reduciendo la latencia del percentil 99 en 33%.
Para inicio en frío construyeron un mecanismo de estimación de participación para nuevos anuncios: en lugar de historial faltante, el modelo recibe un pronóstico de interacción calculado desde anuncios vecinos. El sesgo de posición fue vencido con position dropout: la posición de display se alimenta al modelo como característica pero se pone a cero aleatoriamente durante el entrenamiento (la tasa elegida — 0.15) para que el modelo no aprenda 'parte superior de la página = bueno'. Fallos se registran de nuevo: la monotonía de precio duro canceló reservas en 1.6%; la versión 'suave' — hermosa offline — produjo −0.67% en producción, y la prueba fue revertida.
Resultado
Los resultados de la segunda onda se fijan en pruebas A/B en línea. La arquitectura de dos torres: +0.6% reservas y +0.75% ingresos con −33% latencia de scoring p99; un efecto secundario curioso — el precio promedio de hogares reservados cayó 2.3%, significando que el modelo mejoró en coincidir las preferencias de precio de huéspedes. El mecanismo de inicio en frío elevó las reservas de nuevos anuncios en 14% (y su participación de impresión de primera página en 14%), sumando +0.38% a las reservas generales e hiciendo que el lado de la oferta fuera más saludable. Position dropout trajo otro +0.7% reservas e inesperados +1.8% ingresos; reservas de hoteles boutique — un segmento dañado por el sesgo — subieron 1.1%.
La escala debe leerse correctamente: fracciones de porcentaje aquí no son 'resultados pequeños'. En volúmenes de Airbnb, +0.6% reservas es un número absoluto enorme, y la suma de ganancias secuenciales (+0.6%, +0.38%, +0.7% del segundo artículo solo) se compone en un efecto acumulativo de dos dígitos a lo largo de los años. El equipo en sí llama a la aplicación de redes neuronales a la búsqueda una de las mayores historias de éxito ML de la empresa. Los límites también son honestos: todas las cifras son pruebas A/B internas auto-reportadas de la empresa, pero el detalle metodológico y los fallos publicados dan a estos números más peso que un comunicado de prensa típico.
En nuestra opinión, el valor principal del par de artículos no es las arquitecturas específicas (redes de dos torres y mitigación de sesgo de posición hace mucho se convirtieron en estándares de la industria) sino la cultura documentada: el único árbitro de cada cambio fue una prueba en línea sobre dinero (reservas), con métricas offline sirviendo solo como filtro de hipótesis. El caso de monotonía de precio 'suave' es revelador: una idea intuitivamente correcta, offline hermosa, perdió 0.67% de reservas en producción — sin disciplina de prueba en línea habría permanecido en el sistema.
Nuestra segunda observación: Airbnb efectivamente publicó un 'mapa de obstáculos' para todos los que llevan redes neuronales al ranking de búsqueda — desde sobreajuste de ID a saturación sin normalización. Las empresas que retroceden por este camino ahorran meses no en éxitos de otros sino en callejones sin salida de otros; en ese sentido, publicar honestamente fallos es un caso raro de altruismo de ingeniería que se duplica como marca de empleador.
Lecciones aprendidas
- El estancamiento después del éxito temprano es normal: cuando GBDT dejó de entregar, la respuesta fue un cambio de paradigma (redes neuronales), no ajuste infinito de características.
- Valida cada mejora con la métrica de dinero en línea (reservas), no solo NDCG offline: la monotonía de precio 'suave' ganó offline y falló en producción a −0.67%.
- El inicio en frío merece su propio mecanismo: la estimación de participación para nuevos anuncios elevó sus reservas en 14% e hizo que el mercado fuera más saludable.
- El sesgo de posición corrompe los datos de entrenamiento: el simple truco de position dropout (tasa 0.15) se convirtió en +0.7% reservas e +1.8% ingresos.
- La arquitectura puede pagarse a sí misma en rendimiento: la red de dos torres no solo agregó reservas sino que redujo la latencia p99 en 33% reduciendo la complejidad de scoring.
- Los trucos estándar no se transfieren ciegamente: los embeddings de listing-ID se sobreajustan (un hogar se reserva como máximo 365 veces al año), y dropout degradó las métricas offline.
- Publica fallos también: los artículos de Airbnb son valiosos precisamente porque documentan callejones sin salida (residual, Deep & Wide, attention, multi-task) que ahorran meses a otros equipos.
Preguntas frecuentes
¿Cuántas reservas agregó el deep learning a la búsqueda de Airbnb?
En las pruebas A/B en línea de los artículos KDD: la arquitectura de dos torres agregó +0.6% reservas y +0.75% ingresos, el mecanismo de inicio en frío +0.38% reservas generales (+14% para nuevos anuncios), y position dropout otros +0.7% reservas e +1.8% ingresos. En la escala de Airbnb cada fracción de porcentaje es un número absoluto grande.
¿Por qué Airbnb se movió de gradient boosting a redes neuronales?
El primer modelo GBDT entregó uno de los saltos de reservas más grandes en la historia de la empresa, pero las ganancias se agotaron en largas series de pruebas A/B neutrales. Las redes neuronales entrenadas en 1.7 mil millones de pares impresión-resultado reiniciaron el crecimiento de métricas; la DNN final coincidió con las ganancias del apilamiento de todos los modelos anteriores.
¿Qué es la arquitectura de dos torres y qué entregó?
El modelo se divide en una 'torre de consulta' y una 'torre de anuncio', cada una comprimiendo su lado en un vector de 100 dimensiones; la relevancia es la distancia entre vectores. El resultado: +0.6% reservas, +0.75% ingresos, y −33% latencia de scoring p99 gracias a la complejidad computacional reducida.
¿Cómo Airbnb resolvió el problema de inicio en frío de nuevos anuncios?
Los nuevos anuncios se rezagaban por ~6% NDCG por falta de historial de interacción. El equipo construyó un mecanismo de estimación de participación: el modelo recibe un pronóstico de interacción calculado desde anuncios vecinos similares. Las reservas de nuevos anuncios subieron 14%.
¿Tuvo Airbnb experimentos ML fallidos en búsqueda?
Sí, y los artículos los documentan: los embeddings de listing-ID se sobreajustaron, el aprendizaje multitarea creció vistas sin reservas, las conexiones residuales, Deep & Wide, y attention 'no movieron la aguja', la monotonía de precio duro costó −1.6% reservas y la versión 'suave' −0.67%; ambas pruebas fueron revertidas.