وبلاگ هوش مصنوعی گوگل: Rax: Composable Learning to Rank با استفاده از JAX

رتبه بندی یک مشکل اساسی در حوزه های مختلف مانند موتورهای جستجو، سیستم های توصیه یا پاسخگویی به سؤالات است. به این ترتیب، محققان اغلب از یادگیری به رتبه (LTR) استفاده می‌کنند، مجموعه‌ای از تکنیک‌های یادگیری ماشینی تحت نظارت که برای سودمندی یک کل لیست از اقلام (به جای یک مورد در یک زمان). تمرکز قابل توجه اخیر بر روی ترکیب LTR با یادگیری عمیق است. کتابخانه های موجود، به ویژه TF-Ranking، ابزارهای لازم را برای استفاده از LTR در کار خود به محققان و متخصصان ارائه می دهند. با این حال، هیچ یک از کتابخانه‌های LTR موجود به‌طور بومی با JAX کار نمی‌کند، یک چارچوب یادگیری ماشین جدید که یک سیستم توسعه‌پذیر از تبدیل‌های عملکردی را ارائه می‌دهد که شامل: تمایز خودکار، کامپایل JIT به دستگاه‌های GPU/TPU و موارد دیگر است.

امروز، ما مشتاق معرفی Rax هستیم، کتابخانه ای برای LTR در اکوسیستم JAX. Rax دهه‌ها تحقیق LTR را در اکوسیستم JAX به ارمغان می‌آورد و استفاده از JAX را برای انواع مشکلات رتبه‌بندی و ترکیب تکنیک‌های رتبه‌بندی با پیشرفت‌های اخیر در یادگیری عمیق ساخته شده بر روی JAX (مثلا T5X) ممکن می‌سازد. Rax تلفات رتبه‌بندی پیشرفته، تعدادی معیار استاندارد رتبه‌بندی و مجموعه‌ای از تبدیل‌های تابع را برای بهینه‌سازی متریک رتبه‌بندی فراهم می‌کند. تمام این قابلیت ها با یک API مستند و آسان برای استفاده ارائه شده است که برای کاربران JAX آشنا به نظر می رسد. لطفا مقاله ما را برای جزئیات فنی بیشتر بررسی کنید.

آموزش رتبه بندی با استفاده از Rax
Rax برای حل مسائل LTR طراحی شده است. برای این منظور، Rax توابع تلفات و متریک را ارائه می‌کند که بر روی دسته‌هایی از آن‌ها عمل می‌کنند لیست ها، نه دسته ای از نقاط داده فردی همانطور که در سایر مشکلات یادگیری ماشین رایج است. نمونه ای از چنین لیستی، نتایج بالقوه متعدد از یک جستار موتور جستجو است. شکل زیر نشان می دهد که چگونه می توان از ابزارهای Rax برای آموزش شبکه های عصبی در رتبه بندی وظایف استفاده کرد. در این مثال، موارد سبز (B، F) بسیار مرتبط، موارد زرد (C، E) تا حدودی مرتبط هستند و موارد قرمز (A، D) مرتبط نیستند. یک شبکه عصبی برای پیش‌بینی امتیاز مربوط به هر آیتم استفاده می‌شود، سپس این آیتم‌ها بر اساس این امتیازات مرتب می‌شوند تا رتبه‌بندی ایجاد شود. از دست دادن رتبه بندی Rax شامل کل لیست امتیازات برای بهینه سازی شبکه عصبی است که رتبه بندی کلی موارد را بهبود می بخشد. پس از چندین بار تکرار شیب نزولی تصادفی، شبکه عصبی یاد می گیرد که آیتم ها را به گونه ای امتیاز دهد که رتبه بندی بهینه باشد: موارد مرتبط در بالای لیست و موارد غیر مرتبط در پایین قرار می گیرند.

استفاده از Rax برای بهینه سازی یک شبکه عصبی برای یک کار رتبه بندی. موارد سبز (B، F) بسیار مرتبط، موارد زرد (C، E) تا حدودی مرتبط و موارد قرمز (A، D) مرتبط نیستند.

بهینه سازی متریک تقریبی
کیفیت یک رتبه‌بندی معمولاً با استفاده از معیارهای رتبه‌بندی، به عنوان مثال، سود تجمعی تنزیل شده نرمال شده (NDCG) ارزیابی می‌شود. هدف مهم LTR بهینه سازی یک شبکه عصبی به گونه ای است که در معیارهای رتبه بندی امتیاز بالایی کسب کند. با این حال، معیارهای رتبه‌بندی مانند NDCG می‌توانند چالش‌هایی را ایجاد کنند زیرا اغلب ناپیوسته و مسطح هستند، بنابراین نزول گرادیان تصادفی نمی‌تواند مستقیماً برای این معیارها اعمال شود. Rax تکنیک‌های تقریبی پیشرفته‌ای را ارائه می‌کند که امکان تولید جایگزین‌های قابل تمایز برای معیارهای رتبه‌بندی را فراهم می‌کند که بهینه‌سازی را از طریق گرادیان نزول امکان‌پذیر می‌سازد. شکل زیر کاربرد آن را نشان می دهد rax.approx_t12nیک تبدیل تابع منحصر به فرد Rax است که به متریک NDCG اجازه می دهد تا به شکلی تقریبی و قابل تمایز تبدیل شود.

استفاده از یک تکنیک تقریبی از Rax برای تبدیل معیار رتبه‌بندی NDCG به یک ضرر رتبه‌بندی قابل تمایز و بهینه (approx_t12n و gumbel_t12n).

ابتدا، توجه کنید که چگونه متریک NDCG (به رنگ سبز) مسطح و ناپیوسته است و بهینه سازی آن را با استفاده از نزول گرادیان تصادفی دشوار می کند. با استفاده از rax.approx_t12n با تبدیل به متریک، ApproxNDCG را به دست می آوریم، یک متریک تقریبی که اکنون با گرادیان های کاملاً تعریف شده (به رنگ قرمز) قابل تمایز است. با این حال، به طور بالقوه دارای بهینه‌های محلی زیادی است – نقاطی که از دست دادن به صورت محلی بهینه است، اما در سطح جهانی بهینه نیست – که در آن فرآیند آموزش می‌تواند گیر کند. هنگامی که ضرر با چنین بهینه محلی مواجه می شود، روش های آموزشی مانند نزول گرادیان تصادفی در بهبود بیشتر شبکه عصبی با مشکل مواجه خواهند شد.

برای غلبه بر این مشکل، می‌توانیم نسخه gumbel ApproxNDCG را با استفاده از rax.gumbel_t12n دگرگونی. این نسخه گامبل نویز را در امتیازات رتبه‌بندی معرفی می‌کند که باعث می‌شود از دست دادن به نمونه‌های رتبه‌بندی‌های مختلف که ممکن است هزینه غیر صفر (به رنگ آبی) را متحمل شوند. این درمان تصادفی ممکن است به فقدان کمک کند تا از بهینه محلی فرار کند و اغلب هنگام آموزش شبکه عصبی بر روی یک متریک رتبه‌بندی، انتخاب بهتری است. Rax، بر اساس طراحی، اجازه می‌دهد که تبدیل‌های تقریبی و گامبل آزادانه با تمام معیارهایی که توسط کتابخانه ارائه می‌شوند، از جمله معیارهایی با مقدار برش top-k، مانند یادآوری یا دقت، استفاده شوند. در واقع، حتی می‌توان معیارهای خود را پیاده‌سازی کرد و آنها را تغییر داد تا نسخه‌های تقریبی gumbel به دست آورید که بدون هیچ تلاش اضافی امکان بهینه‌سازی را فراهم می‌کنند.

رتبه در اکوسیستم JAX
Rax طوری طراحی شده است که به خوبی در اکوسیستم JAX ادغام شود و ما قابلیت همکاری با سایر کتابخانه های مبتنی بر JAX را در اولویت قرار می دهیم. به عنوان مثال، یک گردش کار رایج برای محققانی که از JAX استفاده می کنند، استفاده از TensorFlow Datasets برای بارگذاری یک مجموعه داده، Flax برای ساخت شبکه عصبی و Optax برای بهینه سازی پارامترهای شبکه است. هر یک از این کتابخانه ها به خوبی با دیگران ترکیب می شوند و ترکیب این ابزارها چیزی است که کار با JAX را انعطاف پذیر و قدرتمند می کند. برای محققان و دست اندرکاران سیستم های رتبه بندی، اکوسیستم JAX قبلاً فاقد عملکرد LTR بود و Rax این شکاف را با ارائه مجموعه ای از ضررها و معیارهای رتبه بندی پر می کند. ما Rax را به دقت ساخته‌ایم تا به صورت بومی با تبدیل‌های استاندارد JAX مانند jax.jit و jax.grad و کتابخانه های مختلف مانند Flax و Optax. این بدان معنی است که کاربران می توانند آزادانه از ابزارهای JAX و Rax مورد علاقه خود با هم استفاده کنند.

رتبه بندی با T5
در حالی که مدل‌های زبان غول‌پیکر مانند T5 عملکرد فوق‌العاده‌ای را در وظایف زبان طبیعی نشان داده‌اند، نحوه استفاده از زیان‌های رتبه‌بندی برای بهبود عملکرد آنها در کارهای رتبه‌بندی، مانند جستجو یا پاسخ‌گویی به سؤال، مورد بررسی قرار نگرفته است. با Rax می توان از این پتانسیل به طور کامل استفاده کرد. Rax به عنوان یک کتابخانه JAX-first نوشته شده است، بنابراین ادغام آن با سایر کتابخانه های JAX آسان است. از آنجایی که T5X پیاده سازی T5 در اکوسیستم JAX است، Rax می تواند به طور یکپارچه با آن کار کند.

برای این منظور، مثالی داریم که نشان می‌دهد چگونه می‌توان از Rax در T5X استفاده کرد. با ترکیب تلفات رتبه‌بندی و معیارها، اکنون می‌توان T5 را برای مشکلات رتبه‌بندی دقیق تنظیم کرد، و نتایج ما نشان می‌دهد که افزایش T5 با ضررهای رتبه‌بندی می‌تواند بهبود عملکرد قابل توجهی را ارائه دهد. به عنوان مثال، در معیار MS-MARCO QNA v2.1، ما می‌توانیم با تنظیم دقیق مدل T5-Base با استفاده از افت آنتروپی متقاطع softmax Rax listwise به‌جای نقطه‌ای، به NDCG +1.2% و MRR +1.7 درصد برسیم. از دست دادن آنتروپی متقابل سیگموئید

تنظیم دقیق مدل T5-Base در MS-MARCO QNA v2.1 با از دست دادن رتبه (softmax، به رنگ آبی) در مقابل از دست دادن غیر رتبه‌بندی (سیگموید نقطه‌ای، به رنگ قرمز).

نتیجه
به طور کلی، Rax افزوده جدیدی به اکوسیستم رو به رشد کتابخانه های JAX است. Rax کاملاً منبع باز است و در github.com/google/rax برای همه در دسترس است. جزئیات فنی بیشتر را نیز می توان در مقاله ما یافت. ما همه را تشویق می‌کنیم که نمونه‌های موجود در مخزن github را بررسی کنند: (1) بهینه‌سازی یک شبکه عصبی با Flax و Optax، (2) مقایسه تکنیک‌های مختلف بهینه‌سازی متریک تقریبی، و (3) نحوه ادغام Rax با T5X.

سپاسگزاریها
بسیاری از همکاران در گوگل این پروژه را ممکن کردند: ژوانهوی وانگ، ژن شین، لی یان، راما کومار پاسومارتی، مایکل بندرسکی، مارک ناجورک، فرناندو دیاز، رایان دوهرتی، افروز محی الدین و سامر حسن.