نرمال سازی دسته ای یا batch normalization یک تکنیک است که روی ورودی هر لایه شبکه عصبی مصنوعی اعمال می شود که از طریق تغییر مرکز توزیع دیتاها یا تغییر دادن مقیاس آنها موجب سریعتر و پایدارتر شدن شبکه عصبی می شود.این تکنیک در سال 2015 توسط سرگئی یوفه وکریستین سگدی معرفی شد.

تاثیر کارایی این روش هنوز بطور دقیق مشخص نیست ولی باور دارند که موجب کاهش اثر شیفت توزیع داخلی یا *internal covariate shift* می شود. به این صورت که وقتی خروجی یک لایه شبکه میخواهد وارد ورودی شبکه دیگر بشود،به وسیله ی تابع فعال ساز ممکن است شکل توزیع به هم بخورد و هر بار این شکل توزیع در بهینه سازی پارامترهای لایه بعد نیز موثر باشد، ولی وقتی از نرمال سازی دسته ای استفاده می شود،اثر توزیع گرفته می شود.با این وجود نرمال سازی دسته ای موجب انفجار گرادیانت می شود که توسط اقداماتی از جمله اتصال پرشی در شبکه های باقی مانده یا residual network حل می شود.امروزه روش هایی از جمله گرادیانت کلیپینگ و تنظیم کننده هوشمند ابرپارامترها درکنار ویا بجای نرمال سازی دسته ای استفاده می شوند و ضعف های این روش را پوشش می دهند.

اثر شیفت توزیع داخلی یا *internal covariate shift*
--------------------------------------------------

داده های آموزش
داده های تست

  

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

این موضوع در تمامی شبکه های عصبی بصورت کم و بیش وجود دارد ولی وقتی شبکه نورن ها طویل می شود، آنگاه نمود بیشتری پیدا می کند، درست مانند داستان یک کلاغ و چهل کلاغ. یکی از مثال های کلاسیک در این زمینه عبارت است از زمانی که در شبکه عصبی، داده های آموزش ما همگی بصورت سیاه و سفید باشد ولی در زمان تست داده هایی بصورت رنگی و ... بدهیم. این مسئله باعث می شود مدل ما کارایی خود را به دلیل مشکل اثر شیفت توزیع داخلی از دست بدهد.بنابراین، روش نرمال سازی دسته ای برای کاهش این جابجایی های ناخواسته برای سرعت بخشیدن به آموزش و تولید مدل های قابل اعتمادتر پیشنهاد شده است.

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

روش کار
-------

### انتقال

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

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

{\displaystyle \mu \_{B}={\frac {1}{m}}\sum \_{i=1}^{m}x\_{i}} و {\displaystyle \sigma \_{B}^{2}={\frac {1}{m}}\sum \_{i=1}^{m}(x\_{i}-\mu \_{B})^{2}}.

برای یک لایه شبکه با بعد d ، ما در ورودی {\displaystyle x=(x^{(1)},...x^{(d)})} ،هر بعد را جداگانه نرمال سازی می کنیم:

{\displaystyle {\hat {x}}\_{i}^{(k)}={\frac {x\_{i}^{(k)}-\mu \_{B}^{(k)}}{\sqrt {\left(\sigma \_{B}^{(k)}\right)^{2}+\epsilon }}}}

\epsilon  یک عدد بسیار کوچک است که به منظور صفر نشدن مخرج در نظر گرفته می شود. همچنین زمانی که بخواهیم از دیتای نرمال شده به دیتای اصلی برگردیم،باید از تبدیل {\displaystyle y\_{i}^{(k)}=\gamma ^{(k)}{\hat {x}}\_{i}^{(k)}+\beta ^{(k)}} استفاده کنیم. که {\displaystyle \gamma ^{(k)}} و {\displaystyle \beta ^{(k)}} به صورت متوالی در طی آموزش،بهینه می شوند.

شمایی از پس انتشار در شبکه های عصبی
### پس انتشار

پس انتشار به پدیده ای گفته می شود که در شبکه های عصبی از طریق محاسبه مقدار تابع هزینه و قاعده زنجیره ای سعی در بهینه سازی ضرایب نورون ها دارد. حال در این قسمت ما قصد داریم پیاده سازی نرمال سازی دسته ای را در آن نشان دهیم.{\displaystyle {\frac {\partial l}{\partial y\_{i}^{(k)}}}} وابسته به انتخاب تابع فعال ساز ما است:

{\displaystyle {\frac {\partial l}{\partial {\hat {x}}\_{i}^{(k)}}}={\frac {\partial l}{\partial y\_{i}^{(k)}}}\gamma ^{(k)}} و {\displaystyle {\frac {\partial l}{\partial \gamma ^{(k)}}}=\sum \_{i=1}^{m}{\frac {\partial l}{\partial y\_{i}^{(k)}}}{\hat {x}}\_{i}^{(k)}} و {\displaystyle {\frac {\partial l}{\partial \beta ^{(k)}}}=\sum \_{i=1}^{m}{\frac {\partial l}{\partial y\_{i}^{(k)}}}}

{\displaystyle {\frac {\partial l}{\partial \sigma \_{B}^{(k)^{2}}}}=\sum \_{i=1}^{m}{\frac {\partial l}{\partial y\_{i}^{(k)}}}(x\_{i}^{(k)}-\mu \_{B}^{(k)})\left(-{\frac {\gamma ^{(k)}}{2}}(\sigma \_{B}^{(k)^{2}}+\epsilon )^{-3/2}\right)} و {\displaystyle {\frac {\partial l}{\partial \mu \_{B}^{(k)}}}=\sum \_{i=1}^{m}{\frac {\partial l}{\partial y\_{i}^{(k)}}}{\frac {-\gamma ^{(k)}}{\sqrt {\sigma \_{B}^{(k)^{2}}+\epsilon }}}+{\frac {\partial l}{\partial \sigma \_{B}^{(k)^{2}}}}{\frac {1}{m}}\sum \_{i=1}^{m}(-2)\cdot (x\_{i}^{(k)}-\mu \_{B}^{(k)})}

و در نهایت {\displaystyle {\frac {\partial l}{\partial x\_{i}^{(k)}}}={\frac {\partial l}{\partial {\hat {x}}\_{i}^{(k)}}}{\frac {1}{\sqrt {\sigma \_{B}^{(k)^{2}}+\epsilon }}}+{\frac {\partial l}{\partial \sigma \_{B}^{(k)^{2}}}}{\frac {2(x\_{i}^{(k)}-\mu \_{B}^{(k)})}{m}}+{\frac {\partial l}{\partial \mu \_{B}^{(k)}}}{\frac {1}{m}}}

همچنین ببینید
-------------

توزیع نرمال

توزیع نرمال چند متغیره

منابع:
------

1. ↑  Ioffe, Sergey; Szegedy, Christian (2015-03-02). "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift". *arXiv:1502.03167 [cs]*.
2. ↑  Dowat, Jamie (2021-05-02). "Internal Covariate Shift: An Overview of How to Speed up Neural Network Training". *Analytics Vidhya* (به انگلیسی). Retrieved 2023-01-06.
3. ↑  Yang, Greg; Pennington, Jeffrey; Rao, Vinay; Sohl-Dickstein, Jascha; Schoenholz, Samuel S. (2019-03-05). "A Mean Field Theory of Batch Normalization". *arXiv:1902.08129 [cond-mat]*.
4. ↑  Yang, Greg; Pennington, Jeffrey; Rao, Vinay; Sohl-Dickstein, Jascha; Schoenholz, Samuel S. (2019-03-05). "A Mean Field Theory of Batch Normalization". *arXiv:1902.08129 [cond-mat]*.
5. ↑  Brock, Andrew; De, Soham; Smith, Samuel L.; Simonyan, Karen (2021-02-11). "High-Performance Large-Scale Image Recognition Without Normalization". *arXiv:2102.06171 [cs, stat]*.
6. ↑
7. ↑  Munro, P. (2011). Backpropagation. In: Sammut, C. Webb, G.I. (eds) Encyclopedia of Machine Learning. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-30164-8\_51

  

[[en:Batch normalization]]