ResNet و Residual Learning
ایدهٔ ResNet این است که بهجای مجبور کردن چند Layer برای یادگیری مستقیم تابع H(x)، آنها Residual یعنی F(x)=H(x)-x را بیاموزند و Output نهایی F(x)+x باشد. اگر بهترین رفتار برای یک Block نزدیک Identity باشد، کافی است Layerهای اصلی Residual نزدیک صفر شوند؛ Skip Connection مسیر مستقیم برای عبور Signal و Gradient فراهم میکند.
شکل 14-16. Residual Learning
وقتی Skip Connectionهای متعدد در شبکه وجود دارند، حتی اگر بعضی Layerها هنوز چیز مفیدی نیاموخته باشند، اطلاعات میتواند از مسیر کوتاهتر عبور کند. این ویژگی Training شبکههای بسیار عمیق را عملی کرد.
شکل 14-17. شبکهٔ عمیق معمولی و شبکهٔ Residual
ResNet-34 با یک Convolution ابتدایی و Max Pooling شروع میشود، سپس چند گروه Residual Unit دارد. در هر گروه Spatial Size کاهش و Depth Feature Mapها افزایش مییابد. پایان شبکه Global Average Pooling و Dense Softmax است.
شکل 14-18. معماری ResNet
اگر Shape Input و Output Residual Unit برابر نباشد، Skip Connection نمیتواند مستقیم جمع شود. در این حالت از 1×1 Convolution با Stride مناسب روی مسیر Skip استفاده میشود تا هم Spatial Size و هم تعداد Channelها Match شوند.
شکل 14-19. Skip Connection هنگام تغییر Size و Depth
نسخههای عمیقتر مانند ResNet-50/101/152 از Bottleneck Block استفاده میکنند: 1×1 برای کاهش Depth، 3×3 برای Spatial Feature و 1×1 برای افزایش دوبارهٔ Depth. این طراحی Compute را کنترل میکند.
Xception و Depthwise Separable Convolution
Xception ایدهٔ Inception را به افراط میبرد: Spatial Pattern و Cross-Channel Pattern را تا حد زیادی جدا میکند. Depthwise Separable Convolution دو Step دارد:
- Depthwise Convolution: برای هر Input Channel یک Spatial Filter مستقل اعمال میشود؛
- Pointwise 1×1 Convolution: Output Channelها با هم ترکیب میشوند.
شکل 14-20. Depthwise Separable Convolution
این Factorization نسبت به Convolution معمولی Parameter و Compute بسیار کمتری دارد و در بسیاری از Architectureهای Efficient استفاده میشود.
SENet و Recalibration کانالها
Squeeze-and-Excitation Network یا SENet برندهٔ ILSVRC 2017 شد. ایدهٔ آن افزودن یک SE Block به Moduleهای موجود است تا Network یاد بگیرد کدام Feature Mapها برای Input فعلی مهمترند. این Block میتواند به Inception یا ResNet اضافه شود.
شکل 14-21. SE-Inception و SE-ResNet
ابتدا هر Feature Map با Global Average Pooling به یک Scalar خلاصه میشود (Squeeze). سپس یک MLP کوچک Vector اهمیت Channelها را میسازد (Excitation) و هر Feature Map در Weight متناظر ضرب میشود.
شکل 14-22. Recalibration Feature Mapها با SE Block
شکل 14-23. معماری SE Block
Output نهایی Recalibrated Feature Mapهاست. Sigmoid معمولاً Weight هر Channel را بین صفر و یک قرار میدهد. این Mechanism هزینهٔ نسبتاً کمی دارد ولی میتواند Accuracy را بهبود دهد.
Architectureهای مهم دیگر
ResNeXt
ResNeXt Residual Unit را با چند Branch موازی مشابه گسترش میدهد. تعداد Branchها را Cardinality مینامند. افزایش Cardinality میتواند نسبت به صرفاً افزایش Depth یا Width بازده بهتری داشته باشد.
DenseNet
در DenseNet هر Layer Output خود را بهعنوان Input به بسیاری از Layerهای بعدی Concatenate میکند. این اتصالهای Dense جریان Gradient و Reuse شدن Feature را تقویت میکنند، اما Memory Management پیچیدهتر میشود.
MobileNet
MobileNet برای Deviceهای محدود طراحی شده و با Depthwise Separable Convolution و Hyperparameterهایی برای کنترل Width/Resolution، Model سبک و سریع میسازد.
CSPNet
Cross Stage Partial Network Feature Mapها را به مسیرهای جدا تقسیم و بعد ترکیب میکند تا Compute تکراری و Memory Cost کاهش یابد. ایدههای CSP در Modelهای Object Detection نیز استفاده شدهاند.
EfficientNet
EfficientNet بهجای Scale کردن فقط Depth، Width یا Input Resolution، هر سه را با یک Compound Scaling هماهنگ افزایش میدهد. ابتدا یک Architecture پایه با Neural Architecture Search پیدا شد و سپس Family مدلها با Scaleهای مختلف ساخته شدند. نتیجه، Accuracy بالا با Parameter/Compute نسبتاً کم است.
در انتخاب Architecture باید فقط Top-1/Top-5 Accuracy را نبینید؛ تعداد Parameter، Model Size، Latency روی CPU/GPU/Accelerator، Memory، Throughput و Target Device نیز تعیینکنندهاند. بخش بعد Modelهای Pretrained Keras و روش عملی Transfer Learning را بررسی میکند.