بردارهای پراکنده اغلب دارای ابعاد زیادی هستند. ایجاد یک متقاطع ویژگی منجر به ابعاد حتی بیشتر می شود. با توجه به چنین بردارهای ویژگی با ابعاد بالا، اندازه مدل ممکن است بزرگ شود و به مقادیر زیادی RAM نیاز داشته باشد.
در یک بردار پراکنده با ابعاد بالا، خوب است که وزنها را تشویق کنیم که دقیقاً تا 0
در صورت امکان کاهش یابند. وزن دقیقاً 0 اساساً ویژگی مربوطه را از مدل حذف می کند. صفر کردن ویژگی ها باعث صرفه جویی در RAM و کاهش نویز در مدل می شود.
به عنوان مثال، مجموعه ای از داده های مسکن را در نظر بگیرید که نه تنها کالیفرنیا بلکه کل جهان را پوشش می دهد. سطل بندی عرض جغرافیایی جهانی در سطح دقیقه (60 دقیقه در هر درجه) حدود 10000 بعد را در یک رمزگذاری پراکنده می دهد. طول جغرافیایی جهانی در سطح دقیقه حدود 20000 بعد می دهد. تلاقی ویژگی این دو ویژگی تقریباً 200,000,000 ابعاد را به همراه خواهد داشت. بسیاری از آن 200,000,000 ابعاد، مناطقی با چنین سکونت محدودی را نشان می دهند (مثلاً وسط اقیانوس) که استفاده از آن داده ها برای تعمیم مؤثر دشوار است. احمقانه است که هزینه RAM ذخیره سازی این ابعاد غیر ضروری را بپردازید. بنابراین، خوب است که وزنهای ابعاد بیمعنا را به 0 کاهش دهیم، که به ما امکان میدهد از پرداخت هزینه ذخیرهسازی این ضرایب مدل در زمان استنتاج اجتناب کنیم.
ما ممکن است بتوانیم این ایده را در مسئله بهینهسازی انجام شده در زمان آموزش، با افزودن یک عبارت منظمسازی انتخابی مناسب، رمزگذاری کنیم.
آیا تنظیم L 2 این کار را انجام می دهد؟ متاسفانه خیر. تنظیم L 2 وزن ها را به کوچک بودن تشویق می کند، اما آنها را دقیقاً 0.0 نمی کند.
یک ایده جایگزین این است که سعی کنید یک اصطلاح تنظیمی ایجاد کنید که تعداد مقادیر ضریب غیر صفر را در یک مدل جریمه کند. افزایش این تعداد تنها در صورتی توجیه میشود که توانایی مدل برای برازش دادهها افزایش کافی داشته باشد. متأسفانه، در حالی که این رویکرد مبتنی بر شمارش به طور شهودی جذاب است، مشکل بهینهسازی محدب ما را به یک مسئله بهینهسازی غیرمحدب تبدیل میکند. بنابراین این ایده، که به عنوان منظم سازی L 0 شناخته می شود، چیزی نیست که بتوانیم به طور موثر در عمل از آن استفاده کنیم.
با این حال، یک اصطلاح منظم سازی به نام منظم سازی L 1 وجود دارد که به عنوان تقریبی برای L 0 عمل می کند، اما این مزیت را دارد که محدب است و بنابراین برای محاسبه کارآمد است. بنابراین میتوانیم از منظمسازی L 1 استفاده کنیم تا بسیاری از ضرایب غیر اطلاعاتی در مدل خود را تشویق کنیم که دقیقاً 0 باشند و بنابراین در زمان استنتاج از RAM صرفهجویی کنیم.
تنظیم L 1 در مقابل L 2 .
L 2 و L 1 وزن ها را به طور متفاوت جریمه می کنند:
- L 2 وزن 2 را جریمه می کند.
- L 1 جریمه می کند | وزن |.
در نتیجه، L 2 و L 1 مشتقات متفاوتی دارند:
- مشتق L 2 2 * وزن است.
- مشتق L 1 k است (ثابتی که مقدار آن مستقل از وزن است).
شما می توانید مشتق L 2 را به عنوان نیرویی در نظر بگیرید که هر بار x٪ از وزن را حذف می کند. همانطور که زنو میدانست، حتی اگر x درصد از یک عدد را میلیاردها بار حذف کنید، باز هم عدد کاهشیافته هرگز به صفر نمیرسد. (Zeno کمتر با محدودیتهای دقت ممیز شناور آشنا بود، که احتمالاً میتواند دقیقاً صفر تولید کند.) به هر حال، L 2 معمولاً وزنها را به صفر نمیرساند.
می توانید مشتق L 1 را نیرویی در نظر بگیرید که هر بار مقداری ثابت از وزن کم می کند. با این حال، به لطف مقادیر مطلق، L 1 دارای ناپیوستگی در 0 است، که باعث می شود نتایج تفریق که از 0 عبور می کنند به صفر تبدیل شوند. برای مثال، اگر تفریق یک وزنه را از 0.1+ به 0.2- مجبور کند، L 1 وزن را دقیقاً روی 0 تنظیم می کند. Eureka، L 1 وزن را به صفر رساند.
تنظیم L 1 - جریمه کردن قدر مطلق همه وزن ها - برای مدل های گسترده کاملاً کارآمد است.
توجه داشته باشید که این توضیحات برای یک مدل تک بعدی صادق است.
روی دکمه Play ( play_arrow ) در زیر کلیک کنید تا تأثیر تنظیم L 1 و L 2 را بر روی شبکه ای از وزن ها مقایسه کنید.