Filter by دسته‌ها
chatGTP
ابزارهای هوش مصنوعی
اخبار
گزارش
تیتر یک
چندرسانه ای
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
دانش روز
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
رویدادها
جیتکس
کاربردهای هوش مصنوعی
کتابخانه
اشخاص
شرکت‌های هوش مصنوعی
محصولات و مدل‌های هوش مصنوعی
مفاهیم
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
مقاله
 تأثیر اندازه بسته شبکه بر آموزش شبکه عصبی

تأثیر اندازه بسته شبکه بر آموزش شبکه عصبی

زمان مطالعه: 11 دقیقه

در این مقاله می­‌خواهیم تأثیر اندازه بسته شبکه را بر آموزش شبکه­‌های عصبی بیشتر بشناسیم. فهرست مطالب بدین صورت است:

  • اندازه بسته شبکه چیست؟
  • دلیل اهمیت اندازه بسته شبکه چیست؟
  • بسته­‌های کوچک و بزرگ از نظر تجربی چگونه عمل می­‌کنند؟
  • چرا بسته­‌های بزرگ­تر عملکرد ضعیف‌­تری دارند و چطور می‌­توانیم آن را جبران کنیم؟

اندازه بسته شبکه چیست؟

شبکه­‌های عصبی به نحوی آموزش دیده‌­اند که توابع زیان به شکل زیر را کمینه کنند:

بسته شبکه
شکل 1 تابع زیان منبع (1): Keskar et al.

در فرمول بالا:

  • پارامترهای مدل را نشان می­‌دهد.
  • m تعداد نمونه داده­‌های آموزشی است.
  • هر مقدار i معرف یک نمونه داده آموزشی واحد است.
  • نشان­‌دهنده تابع زیانی است که برای یک نمونه آموزشیِ واحد اجرا شده است.

به حداقل رساندن تابع زیان معمولاً با کاهش گرادیان Gradient descent، یعنی محاسبه­ گردایان تابع زیان با توجه به پارامترها، انجام می‌­شود.  کاهش تدریجی گرادیان، گرادیان یک زیرمجموعه از داده­‌های آموزشی (B_{k}) را به جای همه­ داده‌­های دیتاست محاسبه می‌­کند.

معادله‌ جدید کاهش تدریجی گرادیان منبع
شکل 2 معادله‌ جدید کاهش تدریجی گرادیان منبع (1)

B_{k} بسته‌­ای است که به‌عنوان نمونه از داده‌­های دیتاست آموزشی گرفته شده و اندازه آن از 1 تا m (شمار کلی نقاط داده‌­ای آموزشی) متغیر است (1). به این مرحله اصطلاحاً «آموزش خرده‌­بسته Mini-batch» با اندازه B_{k} گفته می‌­شود. می‌­توان این گرادیان‌های در سطح بسته‌­ای Batch-level gradients را برآورد گرادیان «واقعی» در نظر گرفت (گرادیان واقعی یعنی گرادیان کل تابع زیان با توجه به θ). به این خاطر از خرده‌­بسته‌­ها استفاده می‌­کنیم که تمایل به همگرایی در آن‌­ها زیاد است، زیرا نیازی به اینکه برای به‌روزرسانی وزن­‌های خود به‌طور کامل از داده­‌های آموزشی بگذرند، ندارند.

[irp posts=”5325″]

دلیل اهمیت اندازه بسته شبکه چیست؟

کسکارKeskar و همکارانش در کار خود متوجه شدند که فرآیند گرادیان کاهشی تصادفی متوالی بوده و از خرده­‌بسته‌­ها استفاده می‌کند، بنابراین نمی‌­توان به‌راحتی آن‌­ها را موازی‌­سازی کرد (1). استفاده از بسته­‌هایی با اندازه‌­های بزرگ­تر تا حد زیادی به ما امکان موازی‌­سازی محاسبات را می‌­دهد، زیرا می‌­توانیم نمونه‌­های آموزشی را بین گره­‌های مختلف کارگر Worker nodes تقسیم کنیم. در نتیجه­ این قابلیت می‌­توان به آموزش مدل سرعت بخشید.

در حالی­که میزان خطای آموزشی در بسته­‌های بزرگ­تر به اندازه­ بسته‌­های کوچک­تر است، این بسته‌­ها قابلیت تعمیم­پذیری ضعیف‌تری به داده‌­های آزمون دارند (1). به فاصله­ بین خطای آموزش و خطای آزمون، «فاصله­ تعمیم­‌پذیری Generalization gap» گفته می‌­شود.

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

آزمایش‌ها چطور طراحی می‌­شوند؟

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

  • دیتاست: از دیتاست­‌های گربه و سگ که شامل 23262 تصویر از گربه­ و سگ­ است استفاده می­‌کنیم و این تصاویر را به صورت نصف نصف در دو دسته تقسیم می‌­کنیم. از آن­جایی که اندازه­ تصاویر با هم متفاوت است، همه­ آن‌­ها را هم‌اندازه می‌­کنیم. از 20% داده‌­های دیتاست به‌عنوان داده­‌های اعتباریابی Validation data  (dev set) و از بقیه به‌عنوان داده‌­های آموزشی استفاده می‌­کنیم.
  • معیار ارزیابیEvaluation metric: معیار اصلی ما، تابع زیان آنتروپی متقاطع دوسویهBinary cross-entropy است که به‌منظور اعتباریابی داده‌­ها استفاده می­‌شود.
نمونه‌هایی از تصاویر گربه‌ها و سگ‌ها در داده‌ها
شکل 3 نمونه‌هایی از تصاویر گربه‌ها و سگ‌ها در داده‌ها
  • مدل پایهBase model : یک مدل پایه تعریف می­‌کنیم که وام گرفته از معماری VGG16 است و در آن، با استفاده از تابع فعال‌سازی ReLU عملیات­‌ها را مکرراً انجام می­‌دهیم (convolution ->max-pool). سپس حجم خروجی­ را صاف کرده و آن­ را وارد دو لایه­ کاملاً متصل و درنهایت وارد یک لایه­ تک-نورونی One-neuron layer با فعال‌­سازی سیگموئید Sigmoid activation می­‌کنیم که خروجی‌­هایی بین 0 تا 1 به دست می‌­دهد. این خروجی‌­ها به ما می­‌گویند که مدل گربه (0) پیش‌­بینی می‌­کند یا سگ (1).
معماری مدل پایه
شکل 4 معماری مدل پایه
  • آموزش: از گرادیان کاهشی تصادفی (SGD) با نرخ یادگیری 0/01 استفاده می­‌کنیم. سپس مدل را تا 100 مرحله و تا زمانی که تابع زیان اعتباریابی Validation loss دیگر قادر به تولید مقادیر بهتری نباشد، آموزش می‌دهیم.

اندازه بسته شبکه چه تأثیری بر آموزش دارد؟

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

منحنی‌های زیان اعتباریابی و آموزش
شکل 5 منحنی‌های زیان اعتباریابی و آموزش برای اندازه بسته‌های گوناگون
بهترین توابع زیان
شکل 6 بهترین توابع زیان به دست آمده برای هر اندازه بسته
میانگین زمان بر حسب دوره وسط
شکل 7 چپ: میانگین زمان بر حسب دوره وسط: تعداد دوره تا زمان همگرایی تابع زیان اعتباریابی راست: زمان کلی آموزش تا زمان همگرایی تابع زیان اعتباریابی

 

از توابع بالا می‌­توان نتیجه گرفت که هرچه اندازه بسته شبکه بزرگ­تر باشد:

  • سرعت کاهش تابع زیان آموزش Training loss کمتر خواهد بود.
  • تابع زیان اعتباریابی بالاتر خواهد بود.
  • برای آموزش هر دورهepoch  زمان کمتری نیاز است.
  • تعداد دوره‌­های بیشتری برای ایجاد تابع زیان حداقلی اعتبار لازم است.

اکنون به هرکدام از این موارد به صورت جداگانه می‌­پردازیم؛ از آموزش بسته شبکه شروع می­‌کنیم: تابع زیان آموزش به آهستگی کاهش می‌یابد (در تصویر هم از تفاوت کاهش شیب خط قرمز در اندازه‌­نمونه­ 256 و خط آبی در اندازه‌­نمونه­ 32 متوجه این موضوع می‌­شوید).

دوماً گفتیم که تابع زیان حداقلی آموزش در بسته‌­های بزرگ­تر در مقایسه با بسته‌­های کوچک­تر ضعیف‌تر است. برای مثال اندازه بسته شبکه­ 256 زیان اعتباری حداقلی 0/395 به دست می‌­آورد در حالی‌­که برای اندازه بسته شبکه­ 32 این مقدار برابر است با 0/34.

[irp posts=”22559″]

مورد سوم به زمان لازم برای آموزش هر دوره اشاره داشت که برای بسته‌­های بزرگ­تر تا حدی کمتر است. مثلاً برای اندازه بسته شبکه­  256 برابر است با 7/7 ثانیه، در حالی‌­که برای اندازه بسته شبکه­ 32،  12/4 ثانیه است. این موضوع به ما نشان می‌دهد اگر تعداد کمی بسته شبکه بزرگ را بارگذاری کنیم، در مقایسه با زمانی‌که تعداد زیادی بسته کوچک را به صورت متوالی بارگذاری کنیم، مشکلات کمتری رخ می‌دهد. درصورتی‌که آموزش را با استفاده از چند GPU موازی‌­سازی کنیم این تفاوت زمانی محسوس‌­تر هم خواهد شد.

با این حال آموزش بسته­‌های بزرگ­تر به تعداد دوره‌­های بیشتری نیاز دارد که به سمت کمینه هم­گرا شوند (958 دوره برای اندازه بسته شبکه 256 و 158 برای اندازه ­بسته­ 32). به همین خاطر آموزش بسته­‌های بزرگ­تر در کل بیشتر طول کشید (انداره ­بسته­ 256 تقریباً 4 برابر بیشتر از اندازه بسته شبکه­ 32 زمان برد). توجه داشته باشید که ما آموزش را در این­جا موازی­‌سازی نکردیم. اگر این کار را انجام داده بودیم، احتمالاً زمان آموزش بسته­‌های بزرگ هم به اندازه­ بسته‌­های کوچک کوتاه می‌­شد.

اگر اجرای آموزش‌­ها را موازی کنیم چه اتفاقی می‌­افتد؟ برای یافتن پاسخ این سؤال، با استفاده از روش انعکاسیMirrored method  در نرم­‌افزار تنسورفلو آموزش را بر روی 4 GPU موازی کردیم:

with tf.distribute.MirroredStrategy().scope():
   # Create, compile, and fit model
   # ...

روش انعکاسی همه­ متغیرهای مدل را روی هر GPU کپی کرده و محاسبه­ گذر به جلو و عقب Forward/backward pass computation  در یک بسته شبکه را در همه­ GPUها توزیع می‌­کند. سپس از طریق عملیات all-reduce از هر GPU گرادیان‌­ها را جمع‌­آوری کرده و  نتایج را در کپی هر GPU از مدل پیاده می­‌کند. به بیان ساده می‌­توان گفت که این روش بسته شبکه را تکه تکه می‌­کند و هر قطعه را به یک GPU می­‌دهد.

متوجه شدیم که موازی‌­سازی باعث می­‌شود سرعت آموزش بر حسب دوره در خرده‌­بسته‌­ها کاهش یابد، در حالی‌­که سرعت آموزش بسته‌های بزرگ را بالا می‌برد؛ به نحوی که برای اندازه بسته شبکه­ 256 زمان آموزش هر دوره از 7/70 ثانیه به 3/97 ثانیه رسید. حتی با وجود افزایش سرعت بر حسب دوره، این روش نمی‌­تواند زمان آموزش کل را به سرعت اندازه ­بسته شبکه­ 32 برساند. یعنی اگر در تعداد کل دوره‌­ها (958) را ضرب کنیم به مقدار تقریبی 3700 ثانیه می‌­رسیم که باز هم بسیار بیشتر از زمان اندازه بسته شبکه 32 (یعنی 1915 ثانیه) است.

میانگین زمان بر حسب دوره
شکل 8 میانگین زمان بر حسب دوره در حالی‌که موازی‌سازی در 4 GPU انجام می‌گیرد.

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

چرا عملکرد بسته‌های کوچک­تر بهتر است؟

کسکار و همکارانش در مقاله خود برای این تفاوت عملکرد که بین بسته­‌های کوچک و بزرگ وجود دارد یک توجیه پیدا کرده‌­اند: آموزش بسته‌­های کوچک تمایل دارند به هم نزدیک شده و کمینه­‌های مسطح Flat minimizers  را به وجود آورند که تنها در همان نزدیکی کمینه تغییرات محدودی دارند، اما بسته‌­های بزرگ به هم نزدیک شده و کمینه‌­های تیزSharp minimizers  را ایجاد می­‌کنند که می‌­توانند تغییرات گسترده‌­ای داشته باشند (1). کمینه‌­های مسطح قابلیت تعمیم‌­پذیری بهتری دارند زیرا در تغییرات بین آموزش و مجموعه آزمون‌­ها قوی­تر عمل می‌­کنند (1).

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

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

اکنون به اعتباریابی این فرضیه­‌ها می‌­پردازیم.

فرضیه اول: کمینه بسته­ کوچک نسبت به کمینه بسته­ بزرگ، از وزن‌­های تعریف شده فاصله بیشتری دارد

ابتدا فاصله­ اقلیدسیEuclidean  بین وزن‌­های تعریف شده و کمینه‌­های هر مدل را اندازه می‌­گیریم.

فاصله از وزن‌های تعریف شده
شکل 10 فاصله از وزن‌های تعریف شده
فاصله از وزن‌های تعریف شده
شکل 11 فاصله از وزن‌های تعریف شده برای هرلایه (مقایسه‌ اندازه بسته‌های 32 و 256)

به‌طور کلی می‌توان گفت هرچه اندازه‌ بسته شبکه بزگ‌تر باشد، کمینه به وزن‌های تعریف‌شده نزدیک‌تر است (به استثناء اندازه بسته‌ شبکه 128 که کمینه‌ آن نسبت به اندازه بسته شبکه‌ 64، دورتر از وزن‌های تعریف‌شده قرار دارد). همان‌طور که در شکل 11 مشاهده می‌کنید، این نکته در مورد لایه‌های مختلف مدل نیز صدق می‌کند.

[irp posts=”15659″]

اما سؤال اینجاست که چرا آموزش بسته‌های بزرگ به وزن‌های تعریف‌شده نزدیک‌تر می‌شود. آیا به این خاطر است که گام‌های به‌روزرسانی آن کوچک‌تر هستند؟ برای یافتن پاسخ این سؤال فاصله‌ دور (فاصله‌ بین وزن‌های نهایی در هر دور i و وزن‌های ابتدایی در هر دور i) را در اندازه بسته‌های 32 و 256 اندازه می‌گیریم.

فواصل دوره‌ای برحسب اندازه راست
شکل 12 چپ: فواصل دوره‌ای برحسب اندازه راست: نسبت فواصل دوره‌ای

اولین نمودار نشان می‌­دهد اندازه ­بسته‌­های بزرگ­تر فواصل کمتری را در هر دوره می‌­پیمایند. فاصله­/دوره آموزش در اندازه بسته شبکه 32 بین 0/15 تا 0/4 است، در حالی‌­که این مقدار برای بسته شبکه 256 بین 0/2 تا 0/4 است و نمودار دوم هم نشان می‌دهد که نسبت فواصل دوره­ای به مرور زمان افزایش می‌­یابد.

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

برای یافتن جواب این سؤال باید اندازه به‌روزرسانی هر بسته شبکه را بسنجیم.

توزیع اندازه‌های به‌روزرسانی بسته‌ها
شکل 13 توزیع اندازه‌های به‌روزرسانی بسته‌ها

(میانه­ به‌روزرسانی بسته برای اندازه بسته 32= 3.3e-3

میانه­ به‌روزرسانی برای اندازه بسته­ 256=  1.5e-3)

همان‌طور که مشاهده می‌­کنید به‌روزرسانی هر بسته شبکه با اندازه­ آن نسبت عکس دارد (یعنی برای بسته‌­های بزرگ­تر، کوچک­تر است). دلیل آن چیست؟

برای درک بهتر این رفتار یک سناریوی ساختگی را مثال می‌­زنیم: دو بُردار گرادیانGradient vector  به نام‌­های a و b داریم که هرکدام معرف گرادیان یک نمونه آموزشی هستند. حال توضیح می‌­دهیم چطور میانگین اندازه به‌روزرسانی بسته برای اندازه بسته شبکه 1 با همین مقدار برای اندازه بسته شبکه 2 مقایسه می‌­شود.

مقایسه بین مراحل به‌روزرسانی بین اندازه بسته‌
شکل 14 مقایسه بین مراحل به‌روزرسانی بین اندازه بسته‌ 1 (a+b) و اندازه بسته 2 ((a+b)/2).

اگر بسته‌­ای با اندازه­ یک انتخاب کنیم، در جهت a و سپس b پیش رفته­‌ایم و در نهایت به نقطه‌­ای می‌­رسیم که با a+b نشان داده شده است (از نظر فنی می‌­توان گفت که گرادیان برای بردار b بعد از اجرای a مجدداً محاسبه خواهد شد؛ اما فعلاً به سراغ این نکته نمی‌­رویم). این جریان منجر به این می‌­شود که میانگین اندازه­ به‌روزرسانی بسته­،(( +)/2) شود (که جمع اندازه‌­های به‌روزرسانی بسته­‌هاست تقسیم بر تعداد به‌روزرسانی بسته­‌ها).

از سوی دیگر اگر از اندازه بسته 2 استفاده کنیم، به‌روزرسانی بسته توسط بردار ((a+b)/2) نشان داده می‌­شود (بردار قرمز در شکل 14) و بنابراین میانگین اندازه­ به‌روزرسانی بسته برابر می‌­شود با |\frac{a+b}{2}|/1=|a+b|/2 حالا دو اندازه­ میانگین به‌روزرسانی بسته­‌ها را با هم مقایسه کنیم:

مقایسه‌ میانگین اندازه‌ به‌روزرسانی
شکل 15 مقایسه‌ میانگین اندازه‌ به‌روزرسانی برای اندازه بسته 1 و 2

در خط آخر معادله­ بالا از نامعادله­ مثلثی  Triangle inequality  استفاده کردیم تا نشان دهیم میانگین اندازه­ به‌روزرسانی برای اندازه بسته شبکه 1 همیشه برابر با همین مقدار برای اندازه بسته شبکه 2 یا بزرگ­تر از آن است.

به بیان دیگر برای این­که میانگین اندازه برای اندازه ­بسته­ 1 و اندازه بسته شبکه 2 برابر باشد، بردارهای a و b باید هم­‌جهت باشند (|a|+|b|=|a+b|). همین منطق را می‌­توان برای n بردار نیز پیاده کرد؛ بدین معنی که هرگاه همه­ n بردار هم‌جهت باشند، میانگین اندازه‌­های به‌روزرسانی‌های بسته برای اندازه بسته شبکه 1 و اندازه بسته شبکه n برابر خواهد بود. با این حال این حالت به‌ندرت پیش می‌­آید، زیرا احتمال این­که بردارهای گرادیان همگی یک جهت داشته باشند پایین است.

معادله‌ به‌روزرسانی
شکل معادله‌ به‌روزرسانی خرده‌بسته

با در نظر گرفتن معادله­ به‌روزرسانی خرده ­بسته­ می‌­توان گفت زمانی‌­که اندازه بسته شبکه B_{k} را افزایش دهیم، بزرگی مجموع اندازه‌­ها­ی گرادیان‌­ها نیز، هرچند با سرعت کمتر، افزایش می‌­یابد. دلیل آنچه گفته شد این است که بردارهای گرادیان جهت‌­های متفاوتی دارند و بنابراین افزایش دوبرابری اندازه بسته شبکه (که تعداد بردارهای گرادیانی است که با هم جمع می­‌شوند) مقدار مجموع این بردارها را به دو برابر افزایش نخواهد داد. علاوه بر این از آن­جایی که هم‌زمان داریم بر مخرجی تقسیم می‌­کنیم که دوبرابر بزرگ­تر شده، مقدار به‌روزرسانی کمتر هم خواهد شد.

این توضیحات می­‌تواند این مسئله را نیز روشن کند که چرا اندازه­ به‌روزرسانی بسته برای اندازه بسته‌های بزرگ­تر، کوچک­تر است. یعنی مجموع بردارهای گردیان بیشتر می‌­شود، اما نمی‌­تواند مخرج بزرگ­تر شده B_{k} را جبران کند.

[irp posts=”23025″]

فرضیه­ دوم: آموزش بسته کوچک کمینه‌­های مسطح­‌‌تری به دست می‌­دهد

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

در روش اول تابع زیان آموزش و اعتباریابی را برای کمینه‌­های دو اندازه بسته شبکه 32 و 256 رسم می‌­کنیم. فرمول مربوطه بدین صورت است:

درون‌یابی بین کمینه اندازه بسته‌ کوچک
شکل 17 درون‌یابی بین کمینه اندازه بسته‌ کوچک و بزرگ منبع: کسکار و دستیاران

در این فرمول  مربوط به کمینه بسته بزرگ و  مربوط به بسته کوچک است.  هم ضریبی است با مقدار بین 1-  تا 2.

درون‌یابی خطی بین کمینه‌ بسته‌ کوچک
شکل 18 درون‌یابی خطی بین کمینه‌ بسته‌ کوچک (∝=0) و بسته‌ بزرگ (∝=1) کمینه‌ بسته‌ بزرگ بسیار تیزتر است.

همان‌طور که در نمودار بالا مشاهده کردید کمینه بسته کوچک (\alpha =0) از کمینه بسته بزرگ (\alpha =1) خیلی مسطح‌­تر است (کمینه بسته بزرگ تغییرات تیزتری دارد).

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

کادر محصورشده‌ای که در آن تابع زیان بیشینه
شکل 19 کادر محصورشده‌ای که در آن تابع زیان بیشینه می‌شود. منبع: کسکار و همکاران

در این فرمول اپسیلون پارامتری است که اندازه­ همسایگی را تعریف می­‌کند و x نشان‌­دهنده­ کمینه است (وزن‌­ها).

در قدم بعدی معیار تیزی را به‌عنوان تابع زیان بیشینه در همسایگی کمینه که پیش­تر اندازه گرفتیم، تعریف می­‌کنیم.

تعریف معیار تیزی
شکل 20 تعریف معیار تیزی منبع: کسکار و همکاران

در این معادله f تابع زیانی است که ورودی آن وزن­‌ها هستند.

با توجه به تعریفی که بالا از معیار تیزی ارائه شد می‌­توانیم میزان تیزی کمینه‌­ها را برای بسته‌­های گوناگون، با مقدار اپسیلون 1e-3 محاسبه کنیم.

مقدار تیزی بر اساس اندازه‌ بسته
شکل 20 مقدار تیزی بر اساس اندازه‌ بسته

بر این اساس می­‌توان گفت همان‌طور که در نمودار نشان داده شده، کمینه‌­های بسته­‌های بزرگ تیزتر هستند.

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

نمودار نرمال‌سازی شده
شکل 22 نمودار نرمال‌سازی شده بر اساس فیلتر D2 برای اندازه بسته‌ 32 (تصویر سمت چپ) و اندازه‌ بسته‌ 256 (تصویر سمت راست)

با مشاهده­ نمودارهای کانتور متوجه می­‌شویم که تابع زیان کمینه‌­های بسته­‌های بزرگ تغییرات شدیدتری دارد.

آیا می‌­توانیم با افزایش نرخ یادگیری عملکرد بسته­‌های بزرگ را بهبود ببخشیم؟

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

قانون مقیاس‌­پذیری خطی: زمانی‌­که اندازه­ خرده ­بسته در k ضرب شده، نرخ یادگیری را هم در k ضرب می‌­کنیم.

می‌­خواهیم این روش را برای اندازه بسته­‌های 32، 64، 128 و 256 امتحان کنیم. از نرخ یادگیری پایه 0/01 برای اندازه بسته شبکه 32 استفاده می‌­کنیم و این مقدار را برای سایر بسته‌­ها هم به همین نسبت محاسبه می‌­کنیم.

آموزش و اعتباریابی توابع زیان
شکل 23 آموزش و اعتباریابی توابع زیان برای اندازه بسته‌های متفاوت با نرخ‌های یادگیری تطابق یافته
توابع زیان حداقلی آموزش و اعتباریابی
شکل 24 توابع زیان حداقلی آموزش و اعتباریابی برای اندازه بسته‌های متفاوت

دریافتیم که سازگار کردن نرخ یادگیری، تفاوت بین عملکرد بسته­‌های کوچک و بزرگ را از بین می‌­برد. بدین ترتیب برای تابع زیان اعتباریابی اندازه بسته 256 مقدار 0/352 به دست می­‌آید (به جای 0/395) و به مقدار به دست آمده برای اندازه بسته 32 که 0/345 است نزدیک­تر می‌­شود.

سؤالی که مطرح می­‌شود این است که افزایش نرخ یادگیری چطور بر زمان آموزش تأثیر می‌­گذارد؟ از آن­جایی که آموزش بسته‌های بزرگ به تعداد تکرارهای لازم برای آموزش بسته­‌های کوچک نزدیک تقریباً شده، مدت زمان لازم برای آموزش کمتر می‌شود (در نمودار سمت چپ تصویر پایین قابل مشاهده است)؛ به نحوی که برای اندازه بسته 256، به 2197 ثانیه می‌­رسد که به زمان 3156 ثانیه‌­ای اندازه بسته 32 نزدیک­تر است. در صورتی که از موازی­‌سازی بر روی 4 GPU استفاده کنیم، این افزایش سرعت ملموس‌­تر هم خواهد بود.

تعداد دوره‌های آموزشی لازم
شکل 25 چپ: تعداد دوره‌های آموزشی لازم تا زمانی که تابع زیان اعتباریابی هم‌گرا می‌شود. راست: زمان آموزش کلی موردنیاز تا زمان همگرایی.

آیا آن­‌چه گفتیم بدین معنی است که حالا دیگر اندازه بسته‌­های بزرگ به سمت کمینه­‌های مسطح همگرا می‌شوند؟ اگر از مقادیر تیزیSharpness scores  نموداری تهیه کنیم، درمی‌­یابیم که این مسئله درست بوده و سازگار کردن نرخ یادگیری منجر به مسطح شدن کمینه­‌های اندازه بسته­‌های بزرگ می‌­شود.

مقایسه‌ تیزی کمینه‌ها همراه و بدون تطبیق نرخ یادگیری
شکل 26 مقایسه‌ تیزی کمینه‌ها همراه و بدون تطبیق نرخ یادگیری

نکته­ جالب این­جاست که با این­که تطبیق نرخ یادگیری باعث مسطح‌­تر شدن کمینه­‌های بسته­‌های بزرگ­ می‌­شود، این کمینه‌­ها (بین 4-7) هنوز نسبت به بسته­‌های کوچک (1.14) تیزتر هستند. چرایی این مسئله پرسشی است که تحقیقات آینده باید به آن بپردازند.

[irp posts=”15709″]

آیا تعداد اجراهای آموزشی بسته­‌های بزرگ به اندازه­ بسته‌­های کوچک از وزن‌­های تعریف­‌شده فاصله دارند؟

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

 

پاسخ این سؤال مثبت است. با توجه به نمودار بالا می‌­توان گفت سازگاری نرخ یادگیری تفاوت اندازه بسته‌­های کوچک و بزرگ را از نظر فاصله­ آن‌­ها از وزن‌­های تعریف شده کاهش می­‌دهد (اندازه ­بسته­ 128 از این روند پیش­روی نمی‌­کند و افزایش نرخ یادگیری در آن باعث کاهش فاصله می‌­شود؛ این مسئله هم نیازمند تحقیقات بعدی است).

آیا آموزش بسته‌های کوچک همیشه بهتر از آموزش بسته‌های بزرگ عمل می‌­کند؟

با توجه به یافته­‌های بالا و پیشینه­ پژوهش­‌های انجام شده در این حوزه، این­طور انتظار می‌­رود که در صورت ثابت نگه داشتن نرخ یادگیری، آموزش بسته‌­های کوچک همیشه از آموزش بسته­‌های بزرگ عملکرد بهتری داشته باشند. اما واقعیت چیز دیگری است. برای مثال زمانی که از نرخ یادگیری 0/08 استفاده می­‌کنیم این توابع به دست می‌­آید:

تابع زیان اعتباریابی با نرخ یادگیری
شکل 28 تابع زیان اعتباریابی با نرخ یادگیری بالاتر بر اساس اندازه‌ بسته

همان‌طور که مشاهده می‌­کنید اندازه بسته شبکه 64 عملکرد بهتری از اندازه بسته شبکه 32 دارد! به این خاطر که نرخ یادگیری و اندازه بسته‌­ها ارتباط نزدیکی با یکدیگر دارند؛ بدین صورت که اندازه بسته‌­های کوچک­تر زمانی بهترین عملکرد را از خود نشان می­‌دهند که نرخ یادگیری هم پایین باشد و اندازه بسته­‌های بزرگ زمانی که نرخ یادگیری بالا باشد. این پدیده در شکل زیر ترسیم شده است:

تأثیر نرخ یادگیری
شکل 29 تأثیر نرخ یادگیری بر تابع زیان اعتباریابی برای اندازه بسته‌های متفاوت

همان‌طور که می­‌بینید نرخ یادگیری 0/01 برای اندازه بسته 32 و نرخ یادگیری 0/08 برای اندازه بسته‌­های دیگر بهتر است.

بنابراین اگر با وجود نرخ یادگیری یکسان، اندازه بسته‌­های بزرگ عملکرد بهتری از اندازه بسته­‌های کوچک دارند، می‌­تواند به این دلیل باشد که نرخ یادگیری بزرگ­تر از میزان بهینه برای اندازه بسته‌­­های کوچک است.

نتیجه‌گیری

معنای همه­ آن­چه گفته شد چیست؟ از همه­ این طرح‌­ها و آزمایشات چه نتیجه‌­ای می‌­توان گرفت؟

قانون مقیاس­پذیری خطی: زمانی که اندازه­ خرده‌­بسته در k ضرب می‌­شود، نرخ یادگیری را هم در k ضرب می‌­کنیم. با اینکه معمولاً مشاهده می‌­کنیم  اندازه بسته‌های بزرگ­تر عملکرد ضعیف­تری دارند، با افزایش نرخ یادگیری می­‌توانیم عمده­ این تفاوت را از بین ببریم. همان‌طور که گفتیم این موضوع بدین خاطر است که اندازه بسته‌­های بزرگ، به دلیل رقابت گرادیانی Gradient competition  بین بردارهای گرادیانِ یک بسته شبکه، به‌روزرسانی‌های بسته‌­های کوچک­تر را به کار می‌­برند.

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

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

حتی در صورتی که از نرخ یادگیری سازگار شده استفاده کنیم، اندازه بسته­‌های بزرگ تا حدودی عملکرد ضعیف­‌تری را در آزمایشات ما از خود نشان دادند. با این حال برای تصمیم‌­گیری قطعی در این مورد نیاز به داده‌­های بیشتری خواهد بود. هنوز هم بین عملکرد اندازه بسته کوچک (تابع زیان اعتباریابی= 0/343) و اندازه بسته بزرگ (تابع زیان اعتباریابی=0/352) تفاوت اندکی وجود دارد. برخی معتقدند بسته‌­های کوچک­ نوعی خاصیت تنظیم‌­کنندگی دارند، زیرا به به‌روزرسانی‌ها نویز وارد می‌­کنند و باعث می‌­شوند آموزش از کمینه­‌های محلی زیربهینهBasins of attraction od suboptimal local minima  فراتر رود (1). با این وجود یافته‌­های این آزمایشات نشان می­‌دهد تفاوت بین عملکردهای این بسته‌­ها نسبتاً کم است (یا لااقل در این داده‌­های این دیتاست این‌طور بوده است). بدین ترتیب می‌­توان گفت اگر نرخ یادگیری مناسب اندازه بسته را پیدا کنید، می‌­توانید بر سایر جنبه‌­های آموزش تمرکز کنید که می­‌توانند تأثیر بیشتری بر عملکرد داشته باشند.

میانگین امتیاز / 5. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
[wpforms id="48325"]