معرفی Weight Normalization

Weight Normalization یک روش بازپارامترسازی ساده است که توسط اووه‌میترا و همکارانش در سال ۲۰۱۷ معرفی شد. هدف اصلی آن سرعت بخشیدن به روند آموزش شبکه‌های عمیق با‌کاهش وابستگی به مقیاس وزن‌ها می‌باشد. در این روش، وزن‌های هر لایه به صورت یک بردار نرمالوزی (معمولاً برحسب اندازه‌گیری ماکزیمم یا میانگین) و یک عامل مقیاس (scalar) جداگانه تعریف می‌شوند.

مقایسه با سایر تکنیک‌ها

در مقایسه با روش‌های نرمال‌سازی محبوب مانند Batch Normalization و Layer Normalization، Weight Normalization گرایش به در هنگام مقایسه با Batch Normalization، سرعت یادگیری را بالاتر می‌رساند و به‌صورت مستقیم به واریانس وزن‌ها وابسته نیست. در عین حال، در بسیاری از سیستم‌های یادگیری بدون GPU یا درینه‌های محدود، عدم نیاز به محاسبه میانگین و واریانس بر روی mini-batch می‌تواند زمان ساخت و اجرا را کوتاه‌تر کند.

چگونگی پیاده‌سازی در چارچوب‌های یادگیری عمیق

برای پیاده‌سازی Weight Normalization در هر چارچوبی مانند PyTorch یا TensorFlow، کافی است وزن‌های لایه را به‌صورت حاصل‌ضرب مقدار نرمال‌سازی شده و شرن (γ) نگه داشته و سپس از بردار نرمال‌سازی‌شده برای محاسبه خروجی استفاده کنید. بسیاری از کتابخانه‌های موجود شامل تابع weight_norm آماده‌سازی این فرآیند را در اختیار کاربران قرار می‌دهند.

  • کاهش حساسیت به مقدار اولیه وزن‌ها
  • سرعت یادگیری بالا حتی در شبکه‌های بسیار عمیق
  • کاهش پیچیدگی محاسباتی در مقایسه با Batch Normalization
  • عملکرد پایدار در داده‌های با توزیع تغییرپذیر یا کوچک مِینِیـبَچ

پرسش‌های پرتکرار

Weight Normalization چیست و چگونه کار می‌کند؟

Weight Normalization یک تکنیک بازپارامترسازی است که وزن‌های لایه را به ترکیبی از بردار نرمال‌سازی شده و یک پارامتر مقیاس (γ) تبدیل می‌کند. این کار باعث می‌شود گرادیان‌ها به‌صورت پایدار‌تری به‌روزرسانی شوند و سرعت یادگیری افزایش یابد.

مزایای به کار بردن Weight Normalization نسبت به Batch Normalization چیست؟

Weight Normalization نسبت به Batch Normalization، نیازی به محاسبه میانگین و واریانس در هر mini-batch ندارد؛ بنابراین در مواردی که اندازه batch کوچک یا توزیع داده‌ها ناهموار است، عملکرد بهتری ارائه می‌دهد و هزینه محاسباتی را کاهش می‌دهد.