شبکه عصبی کانولوشنی قابل جداسازی عمقی (Depthwise Separable Convolutional Network)، در ریاضیات (Mathematics)
انواع شبکه های عصبی (Neural Networks) را در آموزش زیر شرح دادیم :
شبکه عصبی کانولوشنی قابل جداسازی عمقی (Depthwise Separable Convolutional Network) :
کانولوشن قابل جداسازی عمقی (depthwise separable convolution) یک بلوک ساختمانی کارآمد است که در معماری هایی مانند MobileNet و Xception استفاده می شود. این عملیات کانولوشن استاندارد را به دو بخش مجزا تقسیم می کند: ۱) کانولوشن عمقی (depthwise convolution) که هر کانال ورودی را با یک فیلتر مجزا پردازش می کند. ۲) کانولوشن نقطه ای (pointwise convolution) که یک کانولوشن ۱×۱ برای ترکیب خطی خروجی های کانال ها است. این کار تعداد پارامترها و عملیات را به شدت کاهش می دهد.
در کانولوشن استاندارد با
\[ C_{in} \]کانال ورودی و
\[ C_{out} \]کانال خروجی و فیلتر
\[ D_K \times D_K \]، تعداد پارامترها
\[ D_K^2 \cdot C_{in} \cdot C_{out} \]است. اما در depthwise separable:
Depthwise:
\[ D_K^2 \cdot C_{in} \]پارامتر (یک فیلتر
\[ D_K\times D_K \]برای هر کانال).
Pointwise:
\[ C_{in} \cdot C_{out} \]پارامتر (کانولوشن ۱×۱).
مجموع:
\[ D_K^2 \cdot C_{in} + C_{in} \cdot C_{out} \].
نسبت کاهش تقریبا
\[ \frac{1}{C_{out}} + \frac{1}{D_K^2} \]است. برای
\[ D_K=3 \]و
\[ C_{out} \]بزرگ، حدود ۸ تا ۹ برابر کاهش می یابد.
از نظر ریاضی، اگر ورودی
\[ X \]با ابعاد
\[ H\times W\times C_{in} \]باشد:
\[ \text{Depthwise: } \tilde{X}_{,c} = X_{,c} * K^{(c)}_{d} \quad (\text{هر کانال جدا}) \] \[ \text{Pointwise: } Y = \tilde{X} * K_{p} \quad (\text{۱×۱ با } C_{out} \text{ فیلتر}) \]کاربردها: مدل های موبایل و سبک (MobileNetV1، V2، V3)، معماری های کارآمد برای edge devices. همچنین در Xception که از این ایده به صورت extreme استفاده شده (جایگزینی همه کانولوشن ها با depthwise separable).
مزایا: کاهش شدید پارامترها و عملیات، حفظ کارایی (در صورت طراحی مناسب). معایب: ممکن است در مدل های خیلی کوچک باعث کاهش دقت شود، اما معمولا با تنظیم عرض (width multiplier) قابل کنترل است.