اکسپلور اینستاگراماینستاگراماینستاگرام مارکتینگ

بررسی عملکرد سیستم توصیه‌کننده کاوش اینستاگرام پشتیبانی شده توسط هوش مصنوعی

بیش از نیمی از جامعه اینستاگرام هر ماه از اینستاگرام کاوش می‌کنند تا عکس‌ها، ویدیوها و استوری‌های مرتبط با علایق خود را کشف کنند. توصیه مرتبط‌ترین محتوا از بین میلیاردها گزینه در زمان واقعی در مقیاس، چالش‌های متعدد یادگیری ماشین (ML) را معرفی می‌کند که به راه‌حل‌های مهندسی جدید نیاز دارد.

ما با ایجاد یک سری از زبان‌های پرس و جو سفارشی، تکنیک‌های مدل‌سازی سبک، و ابزارهایی که امکان آزمایش با سرعت بالا را فراهم می‌کنند، با این چالش‌ها مقابله کردیم.

 این سیستم ها از مقیاس Explore پشتیبانی می کنند و در عین حال کارایی توسعه دهندگان را افزایش می دهند. در مجموع، این راه‌حل‌ها نشان‌دهنده یک سیستم هوش مصنوعی مبتنی بر یک قیف رتبه‌بندی ۳ قسمتی بسیار کارآمد است که ۶۵ میلیارد ویژگی را استخراج می‌کند و در هر ثانیه ۹۰ میلیون مدل پیش‌بینی می‌کند.

در این پست وبلاگ، ما اولین نمای کلی دقیق از عناصر کلیدی که باعث کارکرد کاوش می شوند و نحوه ارائه محتوای شخصی شده برای افراد در اینستاگرام را به اشتراک می گذاریم.

توسعه بلوک‌های ساختمانی بنیادی Explore

قبل از اینکه بتوانیم یک موتور توصیه بسازیم که با حجم عظیم عکس‌ها و ویدیوهای آپلود شده روزانه در اینستاگرام مقابله کند، ابزارهای اساسی برای رفع سه نیاز مهم ایجاد کردیم. 

ما به توانایی انجام آزمایش‌های سریع در مقیاس نیاز داشتیم، به سیگنال قوی‌تری در مورد وسعت علایق مردم نیاز داشتیم، و به یک روش محاسباتی کارآمد نیاز داشتیم تا اطمینان حاصل کنیم که توصیه‌های ما هم باکیفیت و هم تازه هستند. این تکنیک های سفارشی کلیدی برای دستیابی به اهداف ما بودند:

ایجاد الگوریتم‌ها و تکنیک‌های توصیه بهینه یک حوزه تحقیقاتی مداوم در جامعه ML است و فرآیند انتخاب سیستم مناسب بسته به کار می‌تواند بسیار متفاوت باشد.

 برای مثال، در حالی که یک الگوریتم ممکن است به طور موثر علایق بلندمدت را شناسایی کند، الگوریتم دیگری ممکن است در شناسایی توصیه‌های مبتنی بر محتوای اخیر بهتر عمل کند. 

تیم مهندسی ما الگوریتم‌های مختلف را تکرار می‌کند، و ما به راهی نیاز داشتیم که بتوانیم ایده‌های جدید را به طور موثر امتحان کنیم و ایده‌های امیدوارکننده را به راحتی در سیستم‌های مقیاس بزرگ به کار ببریم، بدون اینکه نگران پیامدهای منابع محاسباتی مانند CPU و استفاده از حافظه باشیم. ما به یک فرازبان خاص دامنه سفارشی نیاز داشتیم که سطح مناسبی از انتزاع را فراهم کند و همه الگوریتم‌ها را در یک مکان جمع کند.

برای حل این مشکل، IGQL را ایجاد و ارسال کردیم، یک زبان خاص دامنه که برای بازیابی نامزدها در سیستم‌های توصیه‌گر بهینه شده است. اجرای آن در C++ بهینه شده است که به به حداقل رساندن تأخیر و منابع محاسباتی کمک می کند. 

همچنین هنگام آزمایش ایده های تحقیقاتی جدید، قابل توسعه و استفاده آسان است. IGQL هم از نظر استاتیک تایید شده و هم سطح بالایی دارد. مهندسان می توانند الگوریتم های توصیه را به روشی شبیه پایتون بنویسند و در C++ سریع و کارآمد اجرا کنند.

IGQL انجام وظایفی را که در سیستم‌های توصیه پیچیده رایج هستند، مانند ساخت درخت‌های تودرتو از قوانین ترکیب‌کننده، ساده می‌کند. IGQL به مهندسان این امکان را می‌دهد که بر روی ML و منطق تجاری در پشت توصیه‌ها به جای تدارکات تمرکز کنند، مانند واکشی تعداد مناسب از نامزدها برای هر پرس و جو. همچنین درجه بالایی از قابلیت استفاده مجدد کد را فراهم می کند. ب

رای مثال، اعمال یک رتبه‌بندی به سادگی اضافه کردن یک قانون یک خطی به پرس‌وجوی IGQL ما است. اضافه کردن آن در مکان‌های مختلف، مانند رتبه‌بندی حساب‌ها و رتبه‌بندی رسانه‌های ارسال شده توسط آن حساب‌ها، بی‌اهمیت است.

مردم میلیاردها قطعه رسانه با کیفیت بالا را در اینستاگرام به اشتراک می گذارند که موجودی واجد شرایط برای کاوش هستند. حفظ یک طبقه بندی به سبک کاتالوگ روشن و همیشه در حال تکامل برای طیف گسترده ای از جوامع علاقه مند در Explore چالش برانگیز است – با موضوعات متفاوت از خوشنویسی عربی گرفته تا مدل قطار تا اسلایم. در نتیجه، مدل‌های مبتنی بر محتوا در درک چنین تنوعی از جوامع مبتنی بر علاقه مشکل دارند.

از آنجایی که اینستاگرام تعداد زیادی اکانت متمرکز بر علاقه بر اساس موضوعات خاص دارد – مانند گربه‌های دوون رکس یا تراکتورهای قدیمی – ما یک خط لوله بازیابی ایجاد کردیم که به جای اینکه در سطح رسانه، بر اطلاعات سطح حساب متمرکز شود. با ایجاد تعبیه‌های حساب، می‌توانیم به طور مؤثرتری شناسایی کنیم که کدام حساب‌ها از نظر موضعی مشابه یکدیگر هستند. ما تعبیه‌های حساب را با استفاده از ig2vec، یک چارچوب جاسازی مانند word2vec استنباط می‌کنیم . به طور معمول، چارچوب تعبیه word2vec نمایش یک کلمه را بر اساس متن آن در بین جملات در مجموعه آموزشی می آموزد. Ig2vec شناسه‌های حسابی را که کاربر با آنها تعامل دارد – به عنوان مثال، شخصی رسانه‌های یک حساب را دوست دارد – به عنوان دنباله‌ای از کلمات در یک جمله در نظر می‌گیرد.Ig2vec شناسه‌های حسابی را که کاربر با آنها تعامل دارد – به عنوان مثال، شخصی رسانه‌های یک حساب را دوست دارد – به عنوان دنباله‌ای از کلمات در یک جمله در نظر می‌گیرد.

با استفاده از تکنیک‌های مشابه word2vec، می‌توانیم حساب‌هایی را پیش‌بینی کنیم که یک فرد احتمالاً در یک جلسه معین در برنامه اینستاگرام با آنها تعامل دارد. اگر فردی در همان جلسه با یک دنباله از حساب‌ها تعامل داشته باشد، در مقایسه با توالی تصادفی حساب‌ها از طیف متنوع اکانت‌های اینستاگرام، به احتمال زیاد به صورت موضعی منسجم است. این به ما کمک می کند تا حساب های مشابه موضعی را شناسایی کنیم.

ما یک متریک فاصله بین دو حساب تعریف می کنیم – همان چیزی که در آموزش جاسازی استفاده می شود – که معمولاً فاصله کسینوس یا محصول نقطه ای است. بر این اساس، ما یک جستجوی KNN انجام می دهیم تا حساب های مشابه موضعی را برای هر حسابی در تعبیه پیدا کنیم. نسخه جاسازی شده ما میلیون‌ها حساب را پوشش می‌دهد، و ما از پیشرفته‌ترین موتور بازیابی نزدیک‌ترین همسایه فیس‌بوک، FAISS ، به عنوان زیرساخت بازیابی پشتیبانی استفاده می‌کنیم.

برای هر نسخه از جاسازی، ما یک طبقه‌بندی را آموزش می‌دهیم تا مجموعه‌ای از موضوعات حساب‌ها را تنها بر اساس جاسازی پیش‌بینی کند. با مقایسه موضوعات پیش‌بینی‌شده با موضوعات برچسب‌گذاری شده توسط انسان برای حساب‌ها در یک مجموعه نگه‌دارنده، می‌توانیم ارزیابی کنیم که جاسازی‌ها چقدر شباهت موضوعی را به تصویر می‌کشند.

بازیابی حساب‌هایی که مشابه آن‌هایی هستند که یک شخص خاص قبلاً به آنها علاقه نشان داده است، به ما کمک می‌کند تا به یک موجودی رتبه‌بندی شخصی‌شده و کوچک‌تر برای هر فرد به روشی ساده و در عین حال مؤثر، محدود کنیم. در نتیجه، ما می‌توانیم از پیشرفته‌ترین و محاسباتی‌ترین مدل‌های ML برای خدمت به هر عضو انجمن اینستاگرام استفاده کنیم.

بعد از اینکه از ig2vec برای شناسایی مرتبط‌ترین حساب‌ها بر اساس علایق فردی استفاده کردیم، به راهی برای رتبه‌بندی این حساب‌ها به روشی جدید و جالب برای همه نیاز داریم. این امر مستلزم پیش‌بینی مرتبط‌ترین رسانه برای هر فرد در هر بار پیمایش صفحه کاوش است.

به عنوان مثال، ارزیابی حتی فقط 500 قطعه رسانه از طریق یک شبکه عصبی عمیق برای هر حرکت پیمایشی به مقدار زیادی منابع نیاز دارد. و با این حال، هرچه پست‌های بیشتری را برای هر کاربر ارزیابی کنیم، احتمال بیشتری برای یافتن بهترین و شخصی‌شده‌ترین رسانه از فهرست موجودی آن‌ها داریم.

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

تنظیم رفتار تقلید مدل تقطیر نیاز به تنظیم پارامترهای متعدد و حفظ مدل های متعدد در مراحل مختلف رتبه بندی را به حداقل می رساند. با استفاده از این تکنیک، می‌توانیم مجموعه بزرگ‌تری از رسانه‌ها را برای یافتن مرتبط‌ترین رسانه‌ها در هر درخواست رتبه‌بندی و در عین حال تحت کنترل نگه داشتن منابع محاسباتی ارزیابی کنیم.

چگونه کاوش را ساختیم

پس از ایجاد بلوک‌های ساختمانی کلیدی لازم برای آزمایش آسان، شناسایی مؤثر علایق افراد و تولید پیش‌بینی‌های کارآمد و مرتبط، مجبور شدیم این سیستم‌ها را با هم در تولید ترکیب کنیم. با استفاده از IGQL، تعبیه‌های حساب، و تکنیک تقطیر خود، سیستم‌های پیشنهادی Explore را به دو مرحله اصلی تقسیم کردیم: مرحله تولید نامزد (که به عنوان مرحله منبع‌یابی نیز شناخته می‌شود) و مرحله رتبه‌بندی.

 
نمای کلی از سیستم کاوش

نسل نامزد

اول، ما از حساب‌هایی استفاده می‌کنیم که افراد قبلاً با آن‌ها تعامل داشته‌اند (مثلاً، رسانه‌هایی را لایک کرده یا از یک حساب ذخیره کرده‌اند) در اینستاگرام تا تشخیص دهیم که افراد ممکن است به کدام حساب‌های دیگر علاقه داشته باشند. ما آنها را اکانت‌های اولیه می‌نامیم. اکانت‌های اولیه معمولاً تنها بخشی از حساب‌های اینستاگرام هستند که در مورد علایق مشابه یا مشابه هستند. سپس، از تکنیک‌های جاسازی حساب برای شناسایی حساب‌های مشابه با حساب‌های اولیه استفاده می‌کنیم. در نهایت، بر اساس این حساب‌ها، می‌توانیم رسانه‌هایی را که این حساب‌ها پست کرده‌اند یا با آن‌ها درگیر هستند، پیدا کنیم.

این گرافیک یک منبع معمولی برای توصیه های کاوش اینستاگرام را نشان می دهد.

راه‌های مختلفی وجود دارد که افراد می‌توانند با حساب‌ها و رسانه‌ها در اینستاگرام تعامل داشته باشند (مثلاً فالو کردن، لایک کردن، نظر دادن، ذخیره و اشتراک‌گذاری). همچنین انواع مختلفی از رسانه وجود دارد (به عنوان مثال، عکس، ویدیو، داستان، و زنده)، که به این معنی است که منابع مختلفی وجود دارد که می‌توانیم با استفاده از یک طرح مشابه بسازیم. با استفاده از IGQL، این فرآیند بسیار آسان می شود – منابع نامزد مختلف فقط به عنوان زیرپرسش های مختلف IGQL نشان داده می شوند.

با انواع مختلف منابع، می‌توانیم ده‌ها هزار نامزد واجد شرایط را برای افراد متوسط ​​پیدا کنیم. ما می‌خواهیم مطمئن شویم محتوایی که توصیه می‌کنیم ایمن و مناسب برای یک جامعه جهانی با سنین مختلف در Explore باشد. با استفاده از سیگنال‌های مختلف، قبل از ایجاد موجودی واجد شرایط برای هر فرد، محتوایی را فیلتر می‌کنیم که می‌توانیم تشخیص دهیم که واجد شرایط توصیه شدن نیست. ما علاوه بر مسدود کردن محتوای ناقض خط‌مشی و اطلاعات نادرست، از سیستم‌های ML استفاده می‌کنیم که به شناسایی و فیلتر کردن محتوایی مانند هرزنامه کمک می‌کنند.

سپس به ازای هر درخواست رتبه‌بندی، هزاران رسانه واجد شرایط را برای یک فرد متوسط ​​شناسایی می‌کنیم، ۵۰۰ داوطلب را از فهرست موجودی واجد شرایط نمونه‌گیری می‌کنیم و سپس داوطلبان پایین دستی را به مرحله رتبه‌بندی می‌فرستیم.

رتبه بندی نامزدها

با 500 نامزد در دسترس برای رتبه‌بندی، ما از یک زیرساخت رتبه‌بندی سه مرحله‌ای برای کمک به تعادل بین ارتباط رتبه‌بندی و کارایی محاسبات استفاده می‌کنیم. سه مرحله رتبه بندی که داریم به شرح زیر است:

  1. پاس دوم: یک مدل شبکه عصبی سبک وزن با مجموعه کاملی از ویژگی های متراکم. 50 با کیفیت ترین و مرتبط ترین نامزد را انتخاب می کند.
  2. عبور نهایی: یک مدل شبکه عصبی عمیق با مجموعه کاملی از ویژگی‌های متراکم و پراکنده. 25 کاندیدا با بالاترین کیفیت و مرتبط ترین را انتخاب می کند (برای صفحه اول شبکه کاوش).
این انیمیشن زیرساخت رتبه‌بندی سه بخشی را که برای ایجاد تعادل بین ارتباط رتبه‌بندی و کارایی محاسبات استفاده می‌کنیم، توصیف می‌کند.

اگر مدل تقطیر پاس اول از دو مرحله دیگر به ترتیب رتبه بندی تقلید کند، چگونه می توانیم مرتبط ترین محتوا را در دو مرحله بعدی تعیین کنیم؟ ما اقدامات فردی را پیش‌بینی می‌کنیم که افراد در هر بخش از رسانه انجام می‌دهند، چه اقدامات مثبتی مانند لایک کردن و ذخیره کردن، یا اقدامات منفی مانند «مشاهده پست‌های کمتری مانند این» (SFPLT). ما از یک شبکه عصبی چند وظیفه ای چند برچسبی (MTML) برای پیش بینی این رویدادها استفاده می کنیم. پرسپترون چند لایه مشترک (MLP) به ما امکان می دهد سیگنال های مشترک را از اقدامات مختلف دریافت کنیم.

تصویری از معماری مدل آخرین گذر فعلی ما در کاوش اینستاگرام 

ما پیش‌بینی‌های رویدادهای مختلف را با استفاده از یک فرمول حسابی، به نام مدل ارزش، ترکیب می‌کنیم تا اهمیت سیگنال‌های مختلف را از نظر تصمیم‌گیری درباره مرتبط بودن محتوا به تصویر بکشیم. ما از یک مجموع وزنی از پیش بینی ها مانند [w_like * P(Like) + w_save * P(Save) — w_negative_action * P(Ngative Action)] استفاده می کنیم. به عنوان مثال، اگر فکر می کنیم اهمیت ذخیره یک پست در کاوش توسط شخصی بیشتر از دوست داشتن یک پست است، پس وزن عمل ذخیره باید بیشتر باشد.

ما همچنین می‌خواهیم  کاوش اینستاگرام  مکانی باشد که مردم بتوانند تعادلی غنی از هر دو علایق جدید در کنار علایق موجود پیدا کنند. ما یک قانون اکتشافی ساده را به مدل ارزش اضافه می کنیم تا تنوع محتوا را افزایش دهیم. ما با افزودن یک عامل جریمه، پست‌های مربوط به یک نویسنده یا یک حساب seed را کاهش می‌دهیم، بنابراین چندین پست از یک شخص یا یک حساب اولیه را در کاوش مشاهده نکنید. این جریمه با پایین آمدن دسته رتبه بندی شده و مواجهه با پست های بیشتر از همان نویسنده افزایش می یابد.

ما مرتبط ترین محتوا را بر اساس امتیاز مدل ارزش نهایی هر نامزد رتبه بندی به روشی نزولی در کاوش اینستاگرام  رتبه بندی می کنیم. ابزار پخش آفلاین ما – همراه با ابزارهای بهینه‌سازی بیزی – به ما کمک می‌کند تا با تکامل سیستم‌هایمان، مدل ارزش را به طور مؤثر و مکرر تنظیم کنیم.

یک چالش مداوم ML

یکی از هیجان‌انگیزترین بخش‌های ساختمان کاوش، چالش مداوم یافتن راه‌های جدید و جالب برای کمک به جامعه ما برای کشف جالب‌ترین و مرتبط‌ترین محتوای اینستاگرام است. ما به طور مداوم در حال توسعه Instagram Explore هستیم، چه با افزودن فرمت های رسانه ای مانند استوری و نقاط ورودی به انواع جدید محتوا، مانند پست های خرید و ویدیوهای IGTV.

مقیاس جامعه و موجودی اینستاگرام مستلزم ایجاد فرهنگ آزمایش با سرعت بالا و کارایی توسعه دهندگان است تا به طور قابل اعتماد بهترین های اینستاگرام را برای علایق فردی هر فرد توصیه کند. ابزارها و سیستم‌های سفارشی ما به ما پایه‌ای قوی برای یادگیری و تکرار مداوم داده‌اند که برای ایجاد و مقیاس‌بندی کاوش اینستاگرام ضروری است.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

دکمه بازگشت به بالا

Adblock رو غیر فعال کنید

بخشی از درآمد سایت با تبلیغات تامین می شود لطفا با غیر فعال کردن ad blocker از ما حمایت کنید