شبکه‌های عصبی خود را کوچک‌تر کنید: هرس کردن (Pruning)

منتشر‌شده در towardsdatascience به تاریخ ۲۹ آگوست ۲۰۱
لینک منبع Make Your Neural Networks Smaller: Pruning

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

هرس کردن (Pruning) یک الگوریتم ساده و شهودی است. انواع مختلفی وجود دارد، اما ایده اصلی بر روی هر شبکه عصبی کار می‌کند. ایده این است. درون یک شبکه عصبی بزرگ آموزش‌دیده، مقداری وزن با اندازه بزرگ و مقداری با اندازه کوچک وجود خواهد داشت. به طور طبیعی، وزن‌های با اندازه بزرگ بیشتر به خروجی شبکه کمک می‌کنند. بنابراین، برای کاهش اندازه شبکه، ما از وزن‌های کوچک (هرس) خلاص می‌شویم. تعداد دقیق وزن‌های کوچک برای هرس توسط کاربر تعیین می‌شود-چیزی مانند ۱۰٪ منطقی است. مشکل این است که وقتی این اتفاق بیفتد، شبکه دیگر به درستی آموزش ندیده است. بنابراین پس از هرس وزن‌های کوچک، ما باید دوباره شبکه را آموزش دهیم. ما می‌توانیم این چرخه (هرس-> آموزش) را با تعداد دفعات دل‌خواه بسته به این که چقدر می‌خواهیم شبکه را کوچک کنیم، انجام دهیم.

شکل ۲: دو تکرار از یک الگوریتم هرس نمونه. خطوط قرمز نشان‌دهنده وزنه‌های هرس شده هستند.
شکل ۲: دو تکرار از یک الگوریتم هرس نمونه. خطوط قرمز نشان‌دهنده وزنه‌های هرس شده هستند.

یک مزیت هرس این است که واقعا خوب عمل می‌کند. شواهد تجربی قابل‌توجهی برای حمایت از آن وجود دارد. به طور خاص‌تر، هرس برای حفظ دقت و در عین حال کاهش اندازه شبکه (حافظه) نشان‌داده شده‌است. آیا هیچ جنبه منفی وجود دارد؟ بله-ممکن است زمان زیادی طول بکشد تا فرآیند هرس کامل شود. هر تکرار از حلقه هرس-> آموزش زمان زیادی می‌برد، به خصوص اگر شبکه بزرگ باشد. می‌توانیم با افزایش تعداد وزنه‌هایی که در طول هر تکرار هرس شده‌اند، تعداد حلقه‌ها را کاهش دهیم. (برای مثال از ۱۰٪ تا ۲۰٪) ، اما هر تکرار از حلقه بیشتر طول می‌کشد. به طور خلاصه، هرس موثر است اما می‌تواند کمی طول بکشد تا کامل شود.

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

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

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

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

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

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

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