موری‌لنز چطوری تو فشن جست‌وجو می‌کنه؟

سلام، در این پست می‌خواهیم به شکل مختصر در مورد پیاده‌سازی و طراحی محصول موری‌لنز صحبت کنیم. موری‌لنز، سرچ تصویری موری -با تمرکز بر روی فضای فشن- است که هفته‌ی اول دی‌ماه لانچ شد. این پست رو می‌تونیم یک تکنیکال‌ریلیز [1] در نظر بگیریم.

ساختار کلی

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


ما نیز از همین ساختار ساده و کاربردی استفاده می‌کنیم. در ادامه به تشریح دقیق هر یک از این 2 ماژول و نحوه استفاده از آن‌ها به شکل فنی‌تر می‌پردازیم.

انکودر

انکودر در تعاریف بیسیک به «مدلی که اطلاعات رو از ابعاد بالا به ابعاد بسیار پایین‌تر نگاشت می‌کنه» گفته می‌شه. بعد از معرفی مکانیزم توجه، اکثر مدل‌های انکودر (مثل bert و ادامه‌ی داستان) بر همین پایه تولید شدند. انتخاب نوع انکودر در سیستم شما بستگی به جنس محتوا و نوع مساله دارد. ما در سیستم خود از یک ورژن فاین‌تیون شده در حوزه‌ی مد و فشن از مدل‌های مالتی‌مدالی که با استفاده از contrastive learning ترین می‌شوند، استفاده می‌کنیم. این انتخاب به دلیل توانایی این مدل در لیبل‌گذاری متناسب محصولات در فضای متنی و همچنین به دلیل دیتاست‌های موجود که متناسب با حوزه‌ی فشن هستند است.


یادگیری contrastive - مدل clip
یادگیری contrastive - مدل clip


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

برای خواندن بیشتر درباره‌ی تئوری مدل و کاربردهای آن، می‌توانید درباره‌ی multi-modal models with contrastive learning بخوانید.

فاین‌تیون مدل - یاد بگیر و توجه کن

یکی از دلایل اصلی انتخاب این مدل، بر مدل‌هایی نظیر ViT، تفاوت ذاتی و روش ترین کردن آنها است. ViT به روش supervised روی دیتاست‌های عکس ترین می‌شود، در حالی که مدل مالتی‌مدال عکس-متن به شیوه‌ی contrastive ترین می‌شود.[2]

برای ما مهم این است که مدل سرچ‌انجین ما بتواند با توجه به ویژگی‌های دقیق فشن، جستجوی متناسبی انجام دهد. این پیش‌فرض را داریم که کاربران در جستجوی عکس‌های فشن، محصولات با ویژگی‌های مشابه را جستجو می‌کنند. برای مثال، جستجو برای «تیشرت آستین‌کوتاه مشکی برند آدیداس» مد نظر آن‌ها است. در نتیجه، مدل و فرآیند آماده‌سازی آن باید با این نیاز کاربران هماهنگ باشد.[3]

دیتاستی که برای فاین‌تیون استفاده کرده‌ایم، شامل 800 هزار محصول فشنی است که از هرکدام عکس و اطلاعات کامل (دسته‌بندی محصولات، ویژگی‌هایی مانند آستین‌کوتاه یا طرح راه‌راه، برند محصولات، جنس محصولات) جمع‌آوری شده‌است. ترکیب این دیتاست و فرآیند یادگیری contrastive در مدل مالتی‌مدال عکس-متن، روش ایده‌آل ما برای این کار است.

نتایج ارزیابی ما در نهایت نشان داد که دقت hit@5 مدل فاین‌تیون شده نسبت به مدل پایه‌ای از 0.22 به 0.61 افزایش یافته‌است.

نمونه‌ای از یک سرچ عکس در موری‌لنز:

دیتابیس برداری

برای سرچ کردن در بین بردارهای عکس‌ها 2 راه وجود دارد.

  • اولی استفاده از کتابخانه‌هایی مانند hnswlib یا faiss
  • دومی استفاده از پایگاه داده‌های برداری مانند milvus و qdrant

پایه هر دو راه الگوریتم hnswlib است که اردر جست‌جوی آن O(log n) است. تریدآفی که میان این دو راه وجود دارد این است که راه اول عملا راه‌اندازی خاصی ندارد و به راحتی می‌توان از آن‌ها استفاده کرد(به شرط داشتن رم به حد کافی)، اما در راه دوم باید دیپلوی کردن و یاد گرفتن یک سرویس جدید را قبول کنید و بعد از آن شما قابلیت انجام کویری‌های پیچیده‌تر (مانند اعمال فیلترهای مختلف) و کانفیگ‌های خاص دیتابیسی برای برای داده‌های حجیم رو دارید. این که کدام از این 2 راه انتخاب می‌شود بستگی به کاربردها دارد و ما در حال حاضر با توجه به حجم زیاد محصولاتی که در سایت داریم از راه دوم استفاده می‌کنیم.

در آخر

موری‌لنز یک محصول بر پایه یک مدل هوش مصنوعی است که بر روی حدود 1 میلیون محصول کار می‌کنه. هدف ما در این پست به اشتراک گذاشتن نحوه کار کردن موری‌لنز بود. به نظرمون این که کارهای جالبی که هر تیمی انجام میده رو با هم اشتراک بذاریم کار باحالیه! امیدواریم مفید بوده‌باشه و اگر سوالی داشتید خوش‌حال میشیم بیاید با هم گپ بزنیم.


1- تکنیکال ریلیز به اصطلاح چیزی‌ه که نه اون‌قدر عمیق و مفصل‌ه که آدم کامل اون مساله رو یاد بگیره، نه اون‌قدر کلی که در حد یک خبر باشه، یه حال میانه‌ای داره. :)) شاید جواب «اون پشت چه‌خبره.» باشه.

2- اگر در مورد نحوه یادگیری contrastive نمی‌دانید شاید ادامه‌ی متن کمی مبهم باشد.

3- این مساله شاید مهم‌ترین/سخت‌ترین مساله‌ی دیزاین هر سیستم یادگیری ماشینی باشد. :))

سایت موری