تصور کنید که در حال توسعه یک برنامه توصیه غذایی هستید که در آن کاربران غذاهای مورد علاقه خود را وارد می کنند و برنامه غذاهای مشابهی را پیشنهاد می کند که ممکن است آنها دوست داشته باشند. میخواهید یک مدل یادگیری ماشینی (ML) ایجاد کنید که بتواند شباهت غذا را پیشبینی کند، بنابراین برنامهتان میتواند توصیههایی با کیفیت بالا ارائه دهد ("از آنجایی که پنکیک دوست دارید، ما کرپ را توصیه میکنیم").
برای آموزش مدل خود، مجموعه داده ای متشکل از 5000 غذای محبوب، از جمله گل گاوزبان ، هات داگ ، سالاد ، پیتزا و شاورما را تنظیم می کنید.
![شکل 1. مجموعه ای از تصاویر از پنج ماده غذایی. در جهت عقربه های ساعت از بالا سمت چپ: گل گاوزبان، هات داگ، سالاد، پیتزا، شاورما.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images.png?authuser=4&hl=fa)
شما یک ویژگی meal
ایجاد می کنید که حاوی یک نمایش رمزگذاری شده یکباره از هر یک از آیتم های وعده غذایی در مجموعه داده است.
![شکل 2. بالا: تجسم رمزگذاری یک داغ برای گل گاوزبان. بردار [1، 0، 0، 0، ...، 0] در بالای شش کادر نمایش داده می شود که هر کدام از چپ به راست با یکی از اعداد برداری تراز شده اند. جعبه ها از چپ به راست حاوی تصاویر زیر هستند: گل گاوزبان، هات داگ، سالاد، پیتزا، [خالی]، شاورما. وسط: تجسم رمزگذاری یک داغ برای هات داگ. بردار [0، 1، 0، 0، ...، 0] در بالای شش کادر نمایش داده می شود که هر کدام از چپ به راست با یکی از اعداد برداری تراز شده اند. جعبه ها همان تصاویر را از چپ به راست دارند که برای تجسم گل گاوزبان در بالا وجود دارد. پایین: تجسم رمزگذاری تک داغ برای شاورما. بردار [0، 0، 0، 0، ...، 1] در بالای شش کادر نمایش داده می شود که هر کدام از چپ به راست با یکی از اعداد برداری تراز شده اند. جعبه ها همان تصاویر را از چپ به راست دارند که برای تجسم گل گاوزبان و هات داگ.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images_one_hot_encodings.png?authuser=4&hl=fa)
مشکلات نمایش داده های پراکنده
با مرور این کدگذاریهای تک داغ، متوجه دو مشکل کلیدی در این نمایش دادهها میشوید.
- تعداد وزنه ها بردارهای ورودی بزرگ به معنای تعداد زیادی وزن برای یک شبکه عصبی است. با ورودیهای M در کدگذاری یکطرفه و N گره در اولین لایه شبکه پس از ورودی، مدل باید وزنهای MxN را برای آن لایه آموزش دهد. تعداد زیاد وزنه ها باعث مشکلات بیشتر می شود:
- تعداد نقاط داده هر چه وزن مدل شما بیشتر باشد، برای تمرین موثر به داده های بیشتری نیاز دارید.
- مقدار محاسبه هر چه وزن ها بیشتر باشد، محاسبات بیشتری برای آموزش و استفاده از مدل مورد نیاز است. فراتر رفتن از توانایی های سخت افزاری شما آسان است.
- مقدار حافظه هر چه وزنه های مدل شما بیشتر باشد، حافظه بیشتری در شتاب دهنده هایی که آن را آموزش می دهند و سرویس می دهند مورد نیاز است. افزایش کارآمد این امر بسیار دشوار است.
- مشکل پشتیبانی از یادگیری ماشین روی دستگاه (ODML) . اگر میخواهید مدل ML خود را روی دستگاههای محلی اجرا کنید (برخلاف ارائه آنها)، باید روی کوچکتر کردن مدل خود تمرکز کنید و میخواهید تعداد وزنها را کاهش دهید.
- عدم وجود روابط معنادار بین بردارها . مقادیر برداری در رمزگذاری های یک گرم برای غذا هیچ اطلاعات معنی داری در مورد شباهت اقلام غذایی ارائه نمی دهد. از نظر ریاضی، شاخص 1 ("هات داگ") به شاخص 2 ("سالاد") نزدیکتر است تا به شاخص 4999 ("شاورما")، حتی اگر هات داگ بیشتر شبیه شاورما (هر دو حاوی گوشت و نان) باشد تا سالاد. .
در این ماژول، یاد خواهید گرفت که چگونه جاسازیهایی ایجاد کنید، نمایشهایی با ابعاد پایینتر از دادههای پراکنده، که به هر دو این مسائل رسیدگی میکند.