نرمالسازی (یادگیری ماشین)
| یادگیری ماشین و دادهکاوی |
|---|
![]() |
در یادگیری ماشین، نرمالسازی[الف] یک تکنیک آماری با کاربردهای گوناگون است. نرمالسازی دو شکل اصلی دارد، یعنی نرمالسازی داده و نرمالسازی فعالسازی. نرمالسازی داده (یا تغییر مقیاس ویژگی) شامل روشهایی است که دادههای ورودی را بهگونهای بازمقیاس میکنند که ویژگیها دارای بازه، میانگین، واریانس یا دیگر خواص آماری یکسان بشوند. برای مثال، یکی از روشهای پرکاربرد تغییر مقیاس ویژگی، نرمالسازی کمینه-بیشینه است که در آن هر ویژگی طوری تغییر داده میشود که دارای بازه یکسان (معمولاً [۰، ۱] یا [-۱، ۱]) باشد. این کار مشکل تفاوت بسیار زیاد مقیاس بین ویژگیهای مختلف را حل میکند. برای نمونه فرض کنیم که یک ویژگی بر حسب کیلومتر و ویژگی دیگر بر حسب نانومتر اندازهگیری شده باشد.
از سوی دیگر، نرمالسازی فعالسازی فقط مختص یادگیری عمیق است و شامل روشهایی میشود که فعالسازی نورونهای پنهان درون شبکه عصبی مصنوعی را بازمقیاس میکنند.
نرمالسازی معمولاً برای موارد زیر استفاده میشود:
- افزایش سرعت همگرایی آموزش،
- کاهش حساسیت به تغییرات و مقیاس ویژگیها در دادههای ورودی،
- کاهش بیشبرازش،
- ایجاد تعمیم بهتر مدل به دادههای دیدهنشده.
تکنیکهای نرمالسازی اغلب از نظر نظری به عنوان روشی برای کاهش تغییر همپراکندگی، هموارسازی چشمانداز بهینهسازی و افزایش منظمسازی توجیه میشوند، هرچند که عمدتاً موفقیت تجربی آنها دلیل اصلی استفاده از آنهاست.[۱]
نرمالسازی دستهای
مقالهٔ اصلی: نرمالسازی دستهای
نرمالسازی دستهای[ب] (کوتهنوشت: BatchNorm)[۲] به جای اعمال نرمالسازی بر روی تمامی ورودیها، روی فعالسازیهای یک لایه برای هر ریز-دسته[پ] عمل میکند.
یک شبکه پیشخور ساده را در نظر بگیرید که با زنجیره کردن ماژولها تعریف شده است:که در آن هر ماژول شبکه میتواند یک تبدیل خطی، یک تابع فعالسازی غیرخطی، یک همنهشتی و غیره باشد. بردار ورودی، بردار خروجی از ماژول اول، و به همین ترتیب است.
بَچنُرم یک ماژول است که میتواند در هر نقطهای از شبکه پیشخور درج شود. برای مثال، اگر درست پس از در میانه زنجره قرار داده شود، آنگاه شبکه به صورت زیر عمل میکند:ماژول بَچنُرم روی تمامی ورودیهای به طور یکجا عمل نمیکند، بلکه باید هر بار روی یک دسته از ورودیها اعمال شود و به همه دستهها به طور همزمان نگاه نمیکنیم.
به بیان دقیقتر، فرض کنید یک دسته از ورودیهای را به طور همزمان به شبکه وارد میکنیم. در میانه شبکه نیز، بردارهایی به صورت زیر وجود خواهد داشت:ماژول بَچنُرم، میانگین و واریانس هر دسته از بردارها را محاسبه میکند:که در آن تعداد ورودیها (بردارها) در دسته فعلی، اندیس مؤلفهها در هر بردار (ویژگی) و اندیس یا نشانگر هر بردار در داخل دسته (بَچ) است. به بیان دیگر، در فرمول بالا مؤلفه -ام (ویژگی -ام) هر بردار در دسته در نظر گرفته میشود و میانگین و واریانس این مقادیر محاسبه میگردد.
سپس هر مؤلفه طوری نرمالسازی میشود که میانگین صفر و واریانس یک داشته باشد:در اینجا یک ثابت مثبت کوچک مانند است که برای پایداری عددی به واریانس افزوده میشود تا از تقسیم بر صفر جلوگیری شود.
در نهایت، یک تبدیل خطی اعمال میشود:در این رابطه، و پارامترهای درون ماژول بَچنُرم هستند. این پارامترها قابل یادگیریاند و معمولاً با استفاده از گرادیان کاهشی آموزش داده میشوند.
در ادامه، یک پیادهسازی پایتون از بَچنُرم آورده شده است:
import numpy as np
def batchnorm(x, gamma, beta, epsilon=1e-9):
# Mean and variance of each feature
mu = np.mean(x, axis=0) # shape (N,)
var = np.var(x, axis=0) # shape (N,)
# Normalize the activations
x_hat = (x - mu) / np.sqrt(var + epsilon) # shape (B, N)
# Apply the linear transform
y = gamma * x_hat + beta # shape (B, N)
return y
تفسیر
شبکه به مرور یاد میگیرد که در صورت نیاز با استفاده از پارامترهای و نرمالسازی را «خنثی» کند.[۳] بَچنُرم را میتوان اینگونه تفسیر کرد: در مسیر آموزش، بَچنُرم روشی است که بار عملکرد صرفاً خطی را به دوش میکشد، تا لایهها فقط بر مدلسازی جنبههای غیرخطی داده تمرکز کنند. این موضوع میتواند مفید باشد، زیرا همواره به سادگی میتوان یک لایه تبدیل خطی بعد از لایههای شبکه عصبی اضافه کرد.[۴][۳]
در مقاله اصلی ادعا شده است که عملکرد بَچنُرم،[۵] کاهش لغزش کوواریانس (همپراکندگی) درونی است، هرچند این ادعا هم طرفداران [۶][۷] و هم منتقدانی دارد.[۸][۹]
موارد خاص
مقاله اصلی[۲] توصیه میکند که بَچنُرم فقط پس از یک تبدیل خطی استفاده شود و نه پس از یک فعالسازی غیرخطی. یعنی و نه . همچنین، جمله بایاس اهمیتی ندارد، زیرا با کم کردن میانگین در مراحل بعدی حذف میشود، بنابراین فرم کلی به صورت خواهد بود. یعنی اگر بَچنُرم پیش از یک تبدیل خطی قرار گیرد، جمله بایاس آن تبدیل خطی صفر در نظر گرفته میشود.[۲]
برای شبکههای عصبی پیچشی (کوتهنوشت: CNN)، بَچنُرم باید ناوردایی نسبت به تبدیل را حفظ کند. به این معنا که باید تمام خروجیهای یک هسته یکسان را به عنوان نقاط داده متفاوتی درون یک دسته در نظر بگیرد.[۲] به این حالت گاهی نرمالسازی دستهای مکانی[ت]، بَچنُرم2D[ث] یا بَچنُرم بهازای هر کانال[ج] گفته میشود.[۱۰][۱۱]
بهطور مشخص، فرض کنید یک لایه کانولوشنی دوبعدی به صورت زیر تعریف شده باشد:
که در آن:
- فعالسازی نورون در موقعیت در کانال -ام از لایه -ام است.
- یک تنسور کرنل است. هر کانال متناظر با یک کرنل با اندیسهای است.
- جمله بایاس برای کانال -ام از لایه -ام است.
برای حفظ ناوردایی انتقالی، بَچنُرم تمام خروجیهای حاصل از یک کرنل یکسان در یک دسته را به عنوان دادههای بیشتری در همان دسته در نظر میگیرد. به عبارت دیگر، این نرمالسازی برای هر «کرنل» (یا بهطور معادل، برای هر کانال ) تنها یک مرتبه اعمال میشود، نه برای هر «فعالسازی» به صورت جداگانه:
که در آن اندازه دسته، ارتفاع نگاشت ویژگی و عرض نگاشت ویژگی است.
یعنی با وجود آنکه تنها نقطه داده در یک دسته وجود دارد، تمام خروجی حاصل از کرنل در این دسته بطور یکسان در نظر گرفته میشوند.[۲]
در ادامه، نرمالسازی و تبدیل خطی نیز به صورت «بهازای هر کرنل» انجام میشود:
ملاحظات مشابهی برای نرمالسازی دستهای در کانولوشنهای با بعد نیز برقرار است.
در ادامه، یک پیادهسازی پایتونی از نرمالسازی دستهای برای کانولوشنهای دوبعدی آورده شده است:
import numpy as np
def batchnorm_cnn(x, gamma, beta, epsilon=1e-9):
# Calculate the mean and variance for each channel.
mean = np.mean(x, axis=(0, 1, 2), keepdims=True)
var = np.var(x, axis=(0, 1, 2), keepdims=True)
# Normalize the input tensor.
x_hat = (x - mean) / np.sqrt(var + epsilon)
# Scale and shift the normalized tensor.
y = gamma * x_hat + beta
return y
برای شبکههای عصبی بازگشتی (کوتهنوشت: RNN) چندلایه، نرمالسازی دستهای معمولاً فقط برای بخش ورودی به حالت پنهان اعمال میشود و نه برای بخش حالت پنهان به حالت پنهان.[۱۲] فرض کنید حالت پنهان لایه -ام در زمان برابر باشد. شبکه عصبی بازگشتی استاندارد، بدون نرمالسازی، رابطه زیر را ارضا میکند:که در آن بهترتیب وزنها و بایاسها هستند و تابع فعالسازی است. با اعمال نرمالسازی دستهای، این رابطه به شکل زیر در میآید:دو روش ممکن برای تعریف «دسته» در نرمالسازی دستهای برای آراِناِنها وجود دارد: «فریمبهفریم» و «دنبالهمحور». بهطور مشخص، پردازش یک دسته از جملهها توسط یک آراِناِن را در نظر بگیرید. فرض کنید حالت پنهان لایه -ام برای توکن -ام از جمله ورودی -ام باشد. در این صورت، نرمالسازی دستهای فریمبهفریم به معنای نرمالسازی روی است:و نرمالسازی دنبالهمحور به معنای نرمالسازی روی است:نرمالسازی دستهای فریمبهفریم برای وظایف علّی مانند پیشبینی نویسه بعدی مناسب است، جایی که فریمهای آینده در دسترس نیستند و این موضوع نرمالسازی به ازای هر فریم را الزامی میکند. نرمالسازی دستهای دنبالهمحور برای وظایفی مانند بازشناسی گفتار مناسب است، که در آن کل دنبالهها در دسترس هستند، اما طولهای متغیر دارند. در یک دسته، دنبالههای کوتاهتر با صفر پُر میشوند تا با طول بلندترین دنباله دسته یکسان شوند. در چنین تنظیماتی، روش فریمبهفریم توصیه نمیشود، زیرا تعداد فریمهای بدون پَدشدگی در امتداد محور زمان کاهش مییابد و این امر به برآوردهای آماری هرچه ضعیفتر منجر میشود.[۱۲]
همچنین امکان اعمال نرمالسازی دستهای بر حافظههای طولانی کوتاه مدت (کوتهنوشت: LSTM) نیز وجود دارد.[۱۳]
بهبودها
تاکنون نرمالسازی دستهای (بَچنُرم) بسیار محبوب بوده است و تلاشهای متعددی برای بهبود آن انجام شده است. برخی از این نمونهها عبارتاند از:[۱۴]
- بچینگ شبحگونه[چ]: تقسیم تصادفی یک دسته به زیردستهها و اعمال نرمالسازی دستهای به صورت جداگانه روی هر زیردسته
- افت وزن[ح] روی و ؛
- و ترکیب نرمالسازی دستهای با نرمالسازی گروهی.
یکی از مشکلات خاص نرمالسازی دستهای این است که در طول آموزش، میانگین و واریانس برای هر دسته به صورت برخط محاسبه میشوند (معمولاً بصورت یک میانگین متحرک نمایی)، اما در مرحله استنتاج، میانگین و واریانس روی مقادیری که در طول آموزش محاسبه شدهاند ثابت (فریز) میشوند. این نابرابری میان آموزش و آزمون باعث افت عملکرد میشود. این نابرابری را میتوان با شبیهسازی میانگین متحرک در زمان استنتاج کاهش داد:[۱۴]که در آن یک ابرپارامتر است که باید روی یک مجموعه اعتبارسنجی بهینهسازی شود.
راهکارهای دیگر تلاش میکنند نرمالسازی دستهای را بهطور کامل حذف کنند، مانند رزنت بدون نرمالساز.[۱۵]
نرمالسازی لایهای
نرمالسازی لایهای[خ] (کوتهنوشت: LayerNorm)[۱۶] یک جایگزین پرکاربرد برای نرمالسازی دستهای (بَچنُرم) است. برخلاف بَچنُرم که فعالسازیها را در امتداد بُعد دسته برای یک ویژگی معین نرمالسازی میکند، لِیرنُرم، نرمالسازی را راستای تمام ویژگیها درون یک نمونه داده (ورودی) منفرد انجام میدهد نه ما بین ورودیها. در مقایسه با بَچنُرم، عملکرد لِیرنُرم تحت تأثیر اندازه دسته قرار نمیگیرد. این روش یکی از اجزای کلیدی مدلهای ترنسفورمر بهشمار میرود.
برای یک ورودی داده و یک لایه معین، لِیرنُرم میانگین و واریانس را بر روی تمام نورونهای آن لایه محاسبه میکند. مشابه بَچنُرم، پارامترهای قابل یادگیری (مقیاس) و (انتقال) اعمال میشوند. این نرمالسازی به صورت زیر تعریف میشود:که در آن:و اندیس بر روی نورونهای موجود در آن لایه تغییر میکند.
مثالها
برای مثال، در شبکههای عصبی کانولوشنی (کوتهنوشت: CNN)، نرمالسازی لایهای بر روی تمام فعالسازیهای یک لایه اعمال میشود. با توجه به نمادگذاری پیشین، خواهیم داشت:توجه کنید که اندیس دسته حذف شده است، در حالی که اندیس کانال اضافه شده است.
در شبکههای عصبی بازگشتی[۱۶] و ترنسفورمرها[۱۷]، نرمالسازی لایهای به صورت مجزا برای هر گام زمانی اعمال میشود. برای مثال، اگر بردار پنهان در یک شبکه عصبی بازگشتی در گام زمانی برابر با باشد، که در آن بُعد بردار پنهان است، آنگاه لِیرنُرم به صورت زیر اعمال میشود:که در آن:
نرمالسازی لایهای با میانگین مربعات ریشهای
نرمالسازی لایهای با میانگین مربعات ریشهای[د] (کوتهنوشت: RMSNorm):[۱۸]در اصل، این روش نوعی لِیرنُرم است که در آن و برابر با صفر در نظر گرفته میشوند. به این روش همچنین نرمالسازی L2 نیز گفته میشود. این حالت یک مورد خاص از نرمالسازی Lp یا نرمالسازی توانی است:که در آن یک ثابت است.
نرمالسازی لایهای تطبیقی
نرمالسازی لایهای تطبیقی[ذ] (کوتهنوشت: adaLN) مقادیر و را در لِیرنُرم نه از روی فعالسازیهای خود لایه، بلکه از دادههای دیگر محاسبه میکند. این روش نخستین بار برای شبکههای عصبی کانولوشنی پیشنهاد شد،[۱۹] و به طور مؤثری در ترنسفورمرهای مبتنی بر مدلهای انتشاری (کوتهنوشت: DiT) به کار رفته است.[۲۰] برای مثال، در یک DiT، اطلاعات شرطی (مانند یک بردار کدگذاری متن) توسط یک پرسپترون چندلایه به مقادیر و تبدیل میشود و سپس این مقادیر در ماژول لِیرنُرم یک ترنسفورمر اعمال میگردند.
نرمالسازی وزنی
نرمالسازی وزنی[ر] (کوتهنوشت: WeightNorm)[۲۱] روشی است الهامگرفته از نرمالسازی دستهای که به جای نرمالسازی فعالسازیها، ماتریسهای وزن را در یک شبکه عصبی نرمالسازی میکند.
یکی نمونه از این موارد نرمالسازی طیفی[ز] است که ماتریسهای وزن را بر نُرم طیفی آنها تقسیم میکند. نرمالسازی طیفی در شبکههای مولد تخاصمی (کوتهنوشت: GAN) مانند شبکه مولد تخاصمی واسرشتاین مورد استفاده قرار میگیرد.[۲۲] شعاع طیفی را میتوان به صورت کارآمد با الگوریتم زیر محاسبه کرد:
INPUT matrix and initial guess
Iterate to convergence . This is the eigenvector of with eigenvalue .
RETURN
با بازانتساب پس از هر بهروزرسانی متمایزکننده[ژ]، میتوان کران بالایی و در نتیجه کران بالایی برای را بدست آورد.
این الگوریتم را میتوان با استفاده از بهخاطرسپاری[س] بیش از پیش تسریع کرد: در گام ، مقدار ذخیره میشود. سپس در گام ، از به عنوان حدس اولیه الگوریتم استفاده میشود. از آنجا که بسیار به نزدیک است، نیز به نزدیک خواهد بود و این امر امکان همگرایی سریع را فراهم میکند.
نرمالسازیهای ویژه شبکههای عصبی پیچشی
برخی از روشهای نرمالسازی فعالسازی وجود دارند که فقط برای شبکههای عصبی پیچشی (کوتهنوشت: سیانان) بهکار میروند.
نرمالسازی پاسخ
نرمالسازی پاسخ محلی[ش] [۲۳] در الکسنت مورد استفاده قرار گرفت. این روش در یک لایه کانولوشنی، بلافاصله پس از یک تابع فعالسازی غیرخطی اعمال میشد و به صورت زیر تعریف میگردید:
که در آن فعالسازی نورون در مکان و کانال است. بهعبارت دیگر، هر پیکسل در یک کانال تحت تأثیر (سرکوب) فعالسازیهای همان پیکسل در کانالهای مجاور خود قرار میگیرد.
پارامترهای ابرپارامترهایی هستند که با استفاده از یک مجموعه اعتبارسنجی انتخاب میشوند.
این روش گونهای از روش قدیمیتر نرمالسازی کنتراست محلی[ص] بود.
که در آن میانگین فعالسازی در یک پنجره کوچکِ متمرکز بر مکان و کانال است. ابرپارامترهای و همچنین اندازه این پنجره کوچک، با استفاده از یک مجموعه اعتبارسنجی انتخاب میشوند.
روشهای مشابه با عنوان نرمالسازی تقسیمی شناخته میشدند، زیرا فعالسازیها را بر مقداری وابسته به خودِ فعالسازیها تقسیم میکردند. این روشها در اصل از زیستشناسی الهام گرفته شده بودند، جایی که برای توضیح پاسخهای غیرخطی نورونهای قشری مغز و پدیده پوشانندگی غیرخطی در ادراک بینایی بهکار میرفتند.[۲۴]
هر دو نوع نرمالسازی محلی، بعدها با نرمالسازی دستهای جایگزین شدند، که شکلی جهانیتر از نرمالسازی محسوب میشود.[۲۵]
نرمالسازی پاسخ بعدها در ConvNeXT-2 با عنوان نرمالسازی پاسخ سراسری[ض] دوباره مطرح شد.[۲۶]
نرمالسازی گروهی
نرمالسازی گروهی[ط] (کوتهنوشت: GroupNorm)[۲۷] روشی است که آن هم صرفاً برای شبکههای عصبی کانولوشنی (سیانانها) بهکار میرود. این روش را میتوان به صورت نرمالسازی لایهای (لِیرنُرم) برای سیانانها در نظر گرفت که بهازای هر گروه از کانالها یک مرتبه اعمال میشود.
فرض کنید در یک لایه ، کانالهایی با اندیسهای وجود داشته باشند. این کانالها به گروههایی به صورت تقسیم میشوند. سپس نرمالسازی لایهای بهطور جداگانه روی هر گروه اعمال میشود.
نرمالسازی نمونهای
نرمالسازی نمونهای[ظ] (کوتهنوشت: InstanceNorm) یا نرمالسازی کنتراست، روشی است که نخستین بار برای انتقال سبک با شبکههای عصبی توسعه داده شد و آن نیز فقط برای سیانانها استفاده میشود.[۲۸] این روش را میتوان به صورت نرمالسازی لایهای برای سیانانها در نظر گرفت که بهازای هر کانال یکبار اعمال میشود، یا بهطور معادل، به عنوان نرمالسازی گروهی که در آن هر گروه تنها شامل یک کانال است:
نرمالسازی نمونهای تطبیقی
نرمالسازی نمونهای تطبیقی[ع] (کوتهنوشت: AdaIN) گونهای از نرمالسازی نمونهای است که بهطور ویژه برای انتقال سبک عصبی با استفاده از سیانانها طراحی شده است، و نه صرفاً برای سیانانها بهطور کلی.[۲۹]
در روش انتقال سبک AdaIN، یک سیانان و دو تصویر ورودی در نظر گرفته میشود: یکی برای محتوا و دیگری برای سبک. هر دو تصویر از طریق همان سیانان پردازش میشوند و در یک لایه مشخص ، نرمالسازی نمونهای تطبیقی اعمال میشود.
فرض کنید فعالسازی مربوط به تصویر محتوا و فعالسازی مربوط به تصویر سبک باشد. در این حالت، AdaIN ابتدا میانگین و واریانس فعالسازیهای تصویر سبک را محاسبه میکند و سپس از آنها به عنوان پارامترهای برای نرمالسازی نمونهای روی استفاده میکند. توجه داشته باشید که خود بدون تغییر باقی میماند. بهطور صریح، رابطه زیر برقرار است:
ترنسفورمرها
برخی روشهای نرمالسازی بهطور ویژه برای استفاده در ترنسفورمرها طراحی شدهاند.
ترنسفورمر اولیه سال ۲۰۱۷ از پیکربندی «post-LN» برای نرمالسازی لایهای (لِیرنُرم) استفاده میکرد. آموزش این پیکربندی دشوار بود و به بهینهسازی ابرپارامتر دقیق و نیز یک مرحله «گرمکردن» در نرخ یادگیری نیاز داشت؛ به این صورت که نرخ یادگیری از مقدار کوچکی آغاز میشد و به تدریج افزایش مییافت. قرارداد «pre-LN» که چندین بار در سال ۲۰۱۸ پیشنهاد شد،برای آموزش آسانتر تشخیص داده شد،[۳۰] به گرمکردن نیاز نداشت و به همگرایی سریعتری منجر میشد.[۳۱]
فیکسنُرم[غ][۳۲] و اسکِیلنُرم[ف][۳۳] هر دو بردارهای فعالسازی را در یک ترنسفورمر نرمالسازی میکنند. روش فیکسنرم بردارهای خروجی ترنسفورمر را بر نُرم L2 آنها تقسیم میکند و سپس در یک پارامتر یادگرفتنی ضرب مینماید. روش اسکیلنرم تمام لِیرنُرمهای درون ترنسفورمر را با تقسیم بر نُرم L2 جایگزین میکند و سپس نتیجه را در یک پارامتر یادگرفتنی ضرب میکند (که بین تمام ماژولهای اسکیلنرم یک ترنسفورمر مشترک است). نرمالسازی پرسوجو–کلید[ق] (کوتهنوشت: QKNorm)[۳۴] بردارهای پرسوجو[ک] و کلید[گ] را طوری نرمالسازی میکند که نُرم L2 واحد داشته باشند.
در nGPT، بسیاری از بردارها بهگونهای نرمالسازی میشوند که نُرم L2 واحد داشته باشند:[۳۵] از جمله بردارهای حالت پنهان، بردارهای تعبیه ورودی و خروجی، ستونهای ماتریس وزن، و بردارهای پرسوجو و کلید.
متفرقه
جستارهای وابسته
یادداشتها
- ↑ Normalization
- ↑ Batch normalization
- ↑ mini-batch
- ↑ Spatial BatchNorm
- ↑ BatchNorm2D
- ↑ per-channel BatchNorm
- ↑ ghost batching
- ↑ weight decay
- ↑ Layer Normalization
- ↑ Adaptive layer norm (adaLN)
- ↑ Adaptive layer norm (adaLN)
- ↑ Adaptive layer norm (adaLN)
- ↑ spectral normalization
- ↑ discriminator
- ↑ memoization
- ↑ memoization
- ↑ memoization
- ↑ global response normalization
- ↑ Group normalization (GroupNorm)
- ↑ Instance normalization (InstanceNorm)
- ↑ Adaptive instance normalization (AdaIN)
- ↑ FixNorm
- ↑ ScaleNorm
- ↑ Query-Key normalization (QKNorm)
- ↑ query
- ↑ key
- ↑ Gradient normalization (GradNorm)
مراجع
- ↑ Huang, Lei (2022). Normalization Techniques in Deep Learning. Synthesis Lectures on Computer Vision (به انگلیسی). Cham: Springer International Publishing. doi:10.1007/978-3-031-14595-7. ISBN 978-3-031-14594-0.
- 1 2 3 4 5 Ioffe, Sergey; Szegedy, Christian (2015-06-01). "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift". Proceedings of the 32nd International Conference on Machine Learning (به انگلیسی). PMLR: 448–456. arXiv:1502.03167.
- 1 2 Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). "8.7.1. Batch Normalization". Deep learning. Adaptive computation and machine learning. Cambridge, Massachusetts: The MIT Press. ISBN 978-0-262-03561-3.
- ↑ Desjardins, Guillaume; Simonyan, Karen; Pascanu, Razvan; kavukcuoglu, koray (2015). "Natural Neural Networks". Advances in Neural Information Processing Systems. Curran Associates, Inc. 28.
- ↑ Xu, Jingjing; Sun, Xu; Zhang, Zhiyuan; Zhao, Guangxiang; Lin, Junyang (2019). "Understanding and Improving Layer Normalization". Advances in Neural Information Processing Systems. Curran Associates, Inc. 32. arXiv:1911.07013.
- ↑ Xu, Jingjing; Sun, Xu; Zhang, Zhiyuan; Zhao, Guangxiang; Lin, Junyang (2019). "Understanding and Improving Layer Normalization". Advances in Neural Information Processing Systems. Curran Associates, Inc. 32. arXiv:1911.07013.
- ↑ Awais, Muhammad; Bin Iqbal, Md. Tauhid; Bae, Sung-Ho (November 2021). "Revisiting Internal Covariate Shift for Batch Normalization". IEEE Transactions on Neural Networks and Learning Systems. 32 (11): 5082–5092. Bibcode:2021ITNNL..32.5082A. doi:10.1109/TNNLS.2020.3026784. ISSN 2162-237X. PMID 33095717.
- ↑ Bjorck, Nils; Gomes, Carla P; Selman, Bart; Weinberger, Kilian Q (2018). "Understanding Batch Normalization". Advances in Neural Information Processing Systems. Curran Associates, Inc. 31. arXiv:1806.02375.
- ↑ Santurkar, Shibani; Tsipras, Dimitris; Ilyas, Andrew; Madry, Aleksander (2018). "How Does Batch Normalization Help Optimization?". Advances in Neural Information Processing Systems. Curran Associates, Inc. 31.
- ↑ Xu, Jingjing; Sun, Xu; Zhang, Zhiyuan; Zhao, Guangxiang; Lin, Junyang (2019). "Understanding and Improving Layer Normalization". Advances in Neural Information Processing Systems. Curran Associates, Inc. 32. arXiv:1911.07013.
- ↑ Zhang, Aston; Lipton, Zachary; Li, Mu; Smola, Alexander J. (2024). "8.5. Batch Normalization". Dive into deep learning. Cambridge New York Port Melbourne New Delhi Singapore: Cambridge University Press. ISBN 978-1-009-38943-3.
- 1 2 Laurent, Cesar; Pereyra, Gabriel; Brakel, Philemon; Zhang, Ying; Bengio, Yoshua (March 2016). "Batch normalized recurrent neural networks". 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE. pp. 2657–2661. arXiv:1510.01378. doi:10.1109/ICASSP.2016.7472159. ISBN 978-1-4799-9988-0.
- ↑ Cooijmans, Tim; Ballas, Nicolas; Laurent, César; Gülçehre, Çağlar; Courville, Aaron (2016). "Recurrent Batch Normalization". arXiv:1603.09025 [cs.LG].
- 1 2 Summers, Cecilia; Dinneen, Michael J. (2019). "Four Things Everyone Should Know to Improve Batch Normalization". arXiv:1906.03548 [cs.LG].
- ↑ Brock, Andrew; De, Soham; Smith, Samuel L.; Simonyan, Karen (2021). "High-Performance Large-Scale Image Recognition Without Normalization". arXiv:2102.06171 [cs.CV].
- 1 2 Ba, Jimmy Lei; Kiros, Jamie Ryan; Hinton, Geoffrey E. (2016). "Layer Normalization". arXiv:1607.06450 [stat.ML].
- ↑ Brock, Andrew; De, Soham; Smith, Samuel L.; Simonyan, Karen (2021). "High-Performance Large-Scale Image Recognition Without Normalization". arXiv:2102.06171 [cs.CV].
- ↑ Brock, Andrew; De, Soham; Smith, Samuel L.; Simonyan, Karen (2021). "High-Performance Large-Scale Image Recognition Without Normalization". arXiv:2102.06171 [cs.CV].
- ↑ Perez, Ethan; Strub, Florian; De Vries, Harm; Dumoulin, Vincent; Courville, Aaron (2018-04-29). "FiLM: Visual Reasoning with a General Conditioning Layer". Proceedings of the AAAI Conference on Artificial Intelligence. 32 (1). arXiv:1709.07871. doi:10.1609/aaai.v32i1.11671. ISSN 2374-3468.
- ↑ Peebles, William; Xie, Saining (2023). "Scalable Diffusion Models with Transformers" (به انگلیسی): 4195–4205. arXiv:2212.09748.
{{cite journal}}: Cite journal requires|journal=(help) - ↑ Salimans, Tim; Kingma, Diederik P. (2016-06-03). "Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks". arXiv:1602.07868 [cs.LG].
- ↑ Miyato, Takeru; Kataoka, Toshiki; Koyama, Masanori; Yoshida, Yuichi (2018-02-16). "Spectral Normalization for Generative Adversarial Networks". arXiv:1802.05957 [cs.LG].
- ↑ Krizhevsky, Alex; Sutskever, Ilya; Hinton, Geoffrey E (2012). "ImageNet Classification with Deep Convolutional Neural Networks". Advances in Neural Information Processing Systems. Curran Associates, Inc. 25.
- ↑ Lyu, Siwei; Simoncelli, Eero P. (2008). "Nonlinear image representation using divisive normalization". 2008 IEEE Conference on Computer Vision and Pattern Recognition. Vol. 2008. pp. 1–8. doi:10.1109/CVPR.2008.4587821. ISBN 978-1-4244-2242-5. ISSN 1063-6919. PMC 4207373. PMID 25346590.
- ↑ Ortiz, Anthony; Robinson, Caleb; Morris, Dan; Fuentes, Olac; Kiekintveld, Christopher; Hassan, Md Mahmudulla; Jojic, Nebojsa (2020). "Local Context Normalization: Revisiting Local Normalization": 11276–11285. arXiv:1912.05845.
{{cite journal}}: Cite journal requires|journal=(help) - ↑ Woo, Sanghyun; Debnath, Shoubhik; Hu, Ronghang; Chen, Xinlei; Liu, Zhuang; Kweon, In So; Xie, Saining (2023). "ConvNeXt V2: Co-Designing and Scaling ConvNets With Masked Autoencoders" (به انگلیسی): 16133–16142. arXiv:2301.00808.
{{cite journal}}: Cite journal requires|journal=(help) - ↑ Wu, Yuxin; He, Kaiming (2018). "Group Normalization": 3–19.
{{cite journal}}: Cite journal requires|journal=(help) - ↑ Ulyanov, Dmitry; Vedaldi, Andrea; Lempitsky, Victor (2017-11-06). "Instance Normalization: The Missing Ingredient for Fast Stylization". arXiv:1607.08022 [cs.CV].
- ↑ Huang, Xun; Belongie, Serge (2017). "Arbitrary Style Transfer in Real-Time With Adaptive Instance Normalization": 1501–1510. arXiv:1703.06868.
{{cite journal}}: Cite journal requires|journal=(help) - ↑ Wang, Qiang; Li, Bei; Xiao, Tong; Zhu, Jingbo; Li, Changliang; Wong, Derek F.; Chao, Lidia S. (2019). "Learning Deep Transformer Models for Machine Translation". arXiv:1906.01787 [cs.CL].
- ↑ Xiong, Ruibin; Yang, Yunchang; He, Di; Zheng, Kai; Zheng, Shuxin; Xing, Chen; Zhang, Huishuai; Lan, Yanyan; Wang, Liwei; Liu, Tie-Yan (2020-06-29). "On Layer Normalization in the Transformer Architecture". arXiv:2002.04745 [cs.LG].
- ↑ Nguyen, Toan Q.; Chiang, David (2017). "Improving Lexical Choice in Neural Machine Translation". arXiv:1710.01329 [cs.CL].
- ↑ Nguyen, Toan Q.; Salazar, Julian (2019-11-02). "Transformers without Tears: Improving the Normalization of Self-Attention". arXiv:1910.05895. doi:10.5281/zenodo.3525484.
{{cite journal}}: Cite journal requires|journal=(help) - ↑ Henry, Alex; Dachapally, Prudhvi Raj; Pawar, Shubham Shantaram; Chen, Yuxuan (November 2020). Cohn, Trevor; He, Yulan; Liu, Yang (eds.). "Query-Key Normalization for Transformers". Findings of the Association for Computational Linguistics: EMNLP 2020. Online: Association for Computational Linguistics: 4246–4253. arXiv:2010.04245. doi:10.18653/v1/2020.findings-emnlp.379.
- ↑ Loshchilov, Ilya; Hsieh, Cheng-Ping; Sun, Simeng; Ginsburg, Boris (2024). "NGPT: Normalized Transformer with Representation Learning on the Hypersphere". arXiv:2410.01131 [cs.LG].
- ↑ Chen, Zhao; Badrinarayanan, Vijay; Lee, Chen-Yu; Rabinovich, Andrew (2018-07-03). "GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks". Proceedings of the 35th International Conference on Machine Learning (به انگلیسی). PMLR: 794–803. arXiv:1711.02257.
