یک لایه کانولوشنال استاندارد به طرز عجیبی برابریخواه است. این لایه دهها — و گاهی صدها — آشکارساز ویژگی را روی هم انباشته و سپس با هر یک از آنها با احترامی یکسان برخورد میکند. کانالی که یاد گرفته لبههای مورب را شناسایی کند، همان وزنی را میگیرد که کانالی برای تشخیص پیکسلهای آسمان آبی دارد. کانالی که در یک عکس گربه روی بافت خز فعال میشود، با همان وزنی به جلو ارسال میشود که کانالی با فعال شدن توسط نویز پسزمینه ارسال میگردد. این یکنواختی همان نقطه ضعف است. هر کانالی برای هر تصویری اهمیت یکسانی ندارد و شبکههای عمیق از نظر تاریخی فاقد مکانیزمی برای بیان این موضوع بودهاند.
مکانیزم Squeeze-and-Excitation که توسط Hu و همکارانش معرفی شد، این مشکل را با افزودهای بسیار کوچک برطرف میکند. این مکانیزم یک مکانیسم گیتینگ (gating) یادگیرنده را به هر بلوک کانولوشن متصل میکند تا شبکه بتواند میزان مشارکت هر کانال را بهصورت پویا بازتنظیم کند، و این کار را برای هر ورودی بهطور مجدد انجام میدهد. هزینه اضافی ناچیز است — حدود ۲.۵ درصد پارامتر بیشتر هنگام اضافه شدن به ResNet-50 — اما افزایش قدرت بازنمایی آن به قدری قابل توجه است که بلوکهای SE به پیروزی در ILSVRC 2017 کمک کردند و اکنون در معماریهای تجاری مانند MobileNetV3 و EfficientNet حضور دارند.
ایده آن به قدری ساده است که میتوان آن را در سه مرحله از صفر ساخت.
Squeeze: دادن یک لنز واید به شبکه
کانولوشن ذاتاً محلی است. یک هسته (kernel) ۳×۳ روی تصویر میلغزد و فقط همسایگی مستقیم خود را میبیند. با انباشتن لایههای کافی، میدان پذیرش (receptive field) رشد میکند، اما هیچ عملیات واحدی در یک نگاه به کل نقشه ویژگی (feature map) نگاه نمیکند. این بدان معناست که یک کانال ممکن است در تمام گستره مکانی یک سگ یا یک ماشین بهشدت فعال شود، اما لایه بعدی هرگز یک خلاصه صریح دریافت نمیکند که بگوید: «این آشکارساز در همه جا فعال شده است.»
مرحله Squeeze این شکاف را با استفاده از global average pooling پر میکند. برای هر کانال، تمام مقادیر در شبکه مکانی H×W به یک عدد واحد میانگینگیری میشوند. اگر ۵۱۲ کانال داشته باشید، اکنون ۵۱۲ اسکالر دارید. هر اسکالر حضور جهانی هر چیزی را که آن کانال یاد گرفته تشخیص دهد — خواه رینگ چرخ باشد، یا نواری از علف، یا بخشی از رنگ پوست — کدگذاری میکند. این یک خلاصه کانالمحور از کل صحنه است.
این موضوع اهمیت دارد زیرا بافت (context) معنا را تغییر میدهد. یک آشکارساز خط افقی در یک تصویر مفید است زیرا افق را شناسایی میکند، اما در تصویر دیگر بیفایده است زیرا در حال دریافت نویز در سایبان جنگل است. بدون تجمیع مکانی (spatial aggregation)، شبکه فاقد سیگنال شفافی برای ایجاد این تمایز است.
Excite: گلوگاهی که همکاری را تحمیل میکند
پس از اینکه مرحله Squeeze برداری از توصیفگرهای جهانی کانال تولید کرد، مرحله Excite یاد میگیرد که با آنها چه کند. این یک MLP کوچک دو لایه است. این لایه بردار را میگیرد، آن را تا یک گلوگاه (bottleneck) فشرده میکند و سپس دوباره به ابعاد اصلی کانال گسترش میدهد.
پیادهسازیهای معمول از یک نسبت کاهش (reduction ratio) ۱۶ استفاده میکنند. اگر ورودی ۵۱۲ کانال داشته باشد، اولین لایه خطی ۵۱۲ اسکالر را به ۳۲ کاهش میدهد، یک ReLU در میان آنها قرار میگیرد و لایه دوم آن ۳۲ را دوباره به ۵۱۲ برمیگرداند. این فشردهسازی عمدی است. این کار مانند یک قیف عمل میکند: شبکه نمیتواند به سادگی مقادیر اصلی را بدون تغییر عبور دهد. شبکه باید یک بازنمایی فشرده و مشترک از نحوه ارتباط کانالها با یکدیگر یاد بگیرد. گلوگاه باعث میشود وابستگیهای بینکانالی (cross-channel dependencies) پدیدار شوند. برای مثال، مدل ممکن است یاد بگیرد که وقتی یک کانال «بافت پوست درخت» قوی است، یک کانال کانتور «تنه درخت» نیز باید مورد تأکید قرار گیرد، در حالی که یک کانال «انعکاس آب» باید خاموش شود.
فعالساز (activation) نهایی در اینجا حیاتی است و مکانی است که معمولاً شهود در آن دچار خطا میشود. بسیاری از افراد به طور غریزی به سراغ softmax میروند، زیرا احساس میکنند توجه (attention) باید یک توزیع احتمالی باشد. softmax تمام کانالها را مجبور میکند تا با یکدیگر رقابت کنند تا زمانی که مجموع وزنهای آنها برابر با یک شود. اگر وزن یک کانال بالا برود، بقیه باید پایین بیایند. این دقیقاً برای این وظیفه اشتباه است. یک عکس از غروب خورشید ممکن است هم به کانال «درخشش نارنجی» و هم به کانال «بافت ابر» نیاز داشته باشد که هر دو بهطور همزمان با حداکثر قدرت عمل کنند. گیتها باید مانند کلیدهای کمکن (dimmer switches) مستقل عمل کنند، نه مانند یک بودجه با مجموع صفر.
Sigmoid این مشکل را حل میکند. این تابع هر اسکالر را به مقداری بین صفر و یک فشرده میکند، اما هر کانال آزاد است که بهطور مستقل حرکت کند. مدل میتواند هر زیرمجموعهای را تقویت کند، بقیه را خنثی نگه دارد و مابقی را سرکوب کند، همگی بدون رقابت مصنوعی.
Scale: اعمال گیتها و ادامه کار
گام نهایی تقریباً بیهیجان است، که خود بخشی از ظرافت این روش است. هر نقشه ویژگی (feature map) اصلی در مقدار دروازه (gate) متناظر خود که از تابع سیگموئید عبور کرده، ضرب میشود. اگر مقدار دروازه نزدیک به یک باشد، کانال بدون تغییر عبور میکند. اگر مقدار دروازه نزدیک به صفر باشد، کل آن نقشه ویژگی بیصدا شده و به سمت سکوت میل میکند. نتیجه به لایه بعدی شبکه تغذیه میشود.
از آنجایی که این فرآیند صرفاً یک ضرب در میان نقشههای مکانی (spatial maps) است، بار محاسباتی بسیار کمی را در زمان استنتاج (inference) اضافه میکند. بخش اصلی کار توسط global pooling و دو projection کوچک انجام میشود که در مقایسه با کانولوشنهای ۳×۳ اطراف، ناچیز هستند.
چرا این طراحی پابرجا مانده است
فراتر از ریاضیات ساده، Squeeze-and-Excitation به این دلیل ماندگار شده است که محدودیتهای مهندسی را رعایت میکند.
پارامترهای ارزان. افزودن بلوکهای SE به ResNet-50 تنها حدود ۲.۵ درصد پارامتر بیشتر هزینه دارد. لایههای MLP کوچک هستند و مدل را حجیم نمیکنند. در عصری که افزایش دقت اغلب از طریق دو برابر کردن اندازه مدل به دست میآید، SE یک «ناهار رایگان» نادر را ارائه میدهد.
ماژولار بودن. SE یک معماری ستون فقرات (backbone) جدید نیست که شما را مجبور به بازطراحی خط لوله (pipeline) خود کند. بلکه یک ماژول آماده برای جایگزینی است. شما میتوانید آن را پس از هر بلوک کانولوشن در ResNet، DenseNet یا پشتههای سفارشی، بدون بازنویسی منطق اطراف، جایگذاری کنید. این انعطافپذیری باعث شد پذیرش آن، ابتدا در تحقیقات و سپس در شبکههای بهینهشده برای موبایل، بسیار سریع انجام شود.
رفتار تطبیقپذیر با ورودی. برخلاف وزنهای کانال استاتیک که در طول آموزش یاد گرفته شده و ثابت میمانند، دروازههای SE در هر گذر مستقیم (forward pass) بهصورت لحظهای محاسبه میشوند. اگر یک آسمان تخت و بدون ویژگی به شبکه بدهید، کانالهای مرتبط خاموش میمانند. اگر یک صحنه خیابان شلوغ با عابر پیاده، تابلوها و وسایل نقلیه را به آن نشان دهید، دروازهها مجدداً کالیبره میشوند تا تشخیصدهندههایی را که برای آن تصویر خاص اهمیت دارند، تقویت کنند. شبکه، حساسیت خود را صحنه به صحنه تنظیم میکند.
از برنده مسابقات تا استفاده روزمره
بلوکهای SE در مسابقات ILSVRC 2017 جایگاه نخست را از آن خود کردند، اما اعتبار واقعی آنها بعدها ثابت شد. آنها در MobileNetV3 ادغام شدند، جایی که به مدلهای سبک کمک میکنند تا بدون مصرف زیاد باتری موبایل، فراتر از توان معمول خود عمل کنند. آنها در دستورالعمل مقیاسبندی ترکیبی EfficientNet نیز ظاهر میشوند که ثابت میکند توجه کانالی (channel attention) یک کالای لوکس برای سرورهای سنگین نیست، بلکه ابزاری کاربردی برای طراحی کارآمد است.
اگر میخواهید ببینید این کار در واقع به چه مقدار کد کمی نیاز دارد، دموی زنده، بلوک را خط به خط کالبدشکافی میکند:
- Live demo: https://dev48v.infy.uk/dl/day40-squeeze-excitation.html
- Full build walkthrough: https://dev.to/dev48v/squeeze-and-excitation-from-scratch-cheap-channel-attention-that-learns-which-feature-maps-matter-1hic
و اگر در کنار یک جامعه کار میکنید: https://t.me/GyaanSetuAi
نتیجهگیری اصلی
مدلهای بینایی بهتر همیشه به پشتههای عمیقتر یا فیلترهای پهنتر نیاز ندارند. گاهی اوقات آنها فقط نیاز دارند لحظهای مکث کنند تا بپرسند کدام کانالها واقعاً برای تصویری که مقابلشان است اهمیت دارند. Squeeze-and-Excitation این لحظه را تنها با یک میانگین پولینگ شده، یک MLP فشرده و یک دروازه سیگموئید به آنها میدهد. نتیجه، شبکهای است که از فریاد زدن تمام ویژگیها با صدایی یکسان دست میکشد و در عوض یاد میگیرد دقیقاً زمانی که صحنه ایجاب میکند، هر کانال را نجوا کند، بر آن تأکید ورزد یا ساکت کند.
