الکس نت (AlexNet) یک شبکه‌ی عصبی عمیق است که Alex Krizhevsky، Ilya Sutskever و Geoffrey Hinton در سال 2012 ارائه کردند. این معماری به‌منظور طبقه‌بندی تصاویر مجموعه‌داده‌ی ImageNet در رقابت ILSVRC طراحی شد و توانست رتبه‌ی اول را کسب کند.

شبکه‌های عصبی کانولوشنی و الکس‌نت (AlexNet)

شبکه‌های عصبی کانولوشنی (CNNs / Convolutional Neural Networks) که نوعی شبکه‌ی عصبی عمیق محسوب می‌شوند به‌منظور تقلید از فرایندهای بیولوژیکی بینایی انسان طراحی شده‌اند. این شبکه‌ها با استفاده از چندین لایه که به‌روش‌های مختلف مرتب شده‌اند تا ساختارهای متمایز شبکه را تشکیل دهند. شبکه‌های عصبی کانولوشنی (CNNs) اغلب در شناسایی و طبقه‌بندی تصاویر استفاده می‌شوند.

الکس نت (AlexNet) یک شبکه عصبی کانولوشنی (CNN) است که یکی از بزرگ‌ترین شبکه‌های زمان خود محسوب می‌شود. این شبکه ۱۱ لایه را دربرمی‌گیرد. در ادامه‌ی این مطلب جزئیات هر یک از این لایه‌ها را توضیح خواهیم داد.

برای آشنایی با شبکه‌ی عصبی گوگل‌نت این مطلب را مطالعه کنید:

گوگل نت (GoogleNet) چیست و از چه ساختاری تشکیل شده است؟

معماری الکس نت (AlexNet)

معماری الکس نت (AlexNet) چگونه است؟

الکس نت (AlexNet) یک شبکه عصبی کانولوشنی عمیق است که به‌منظور شناسایی و طبقه‌بندی تصاویر رنگی با سایز ۲۲۴x۲۲۴x۳ ارائه شده است. به‌طور کلی این شبکه‌ی عصبی ۶۲میلیون پارامتر یادگیری و ۱۱ لایه دارد. معماری AlexNet به‌طور همزمان طی ۶ لایه روی دو GPU Nvidia Geforce GTX 580 آموزش دیده و به‌همین دلیل، به دو بخش (Pipeline) تقسیم شده است.

لایه‌بندی شبکه‌ی عصبی الکس‌نت (AlexNet)

بهتر است به‌صورت کلی با هم به لایه‌های موجود در معماری الکس نت (AlexNet) نگاهی بیندازیم:

  • لایه‌ی اول (C1): ۹۶ لایه کانولوشن با سایز ۱۱×۱۱؛
  • لایه‌ی دوم (S2): لایه‌ی ادغام (Max Pooling) با اندازه‌ی ۳×۳؛
  • لایه‌ی سوم (C3): ۱۵۶ لایه‌ی کانولوشن با اندازه‌ی ۵×۵؛
  • لایه‌ی چهارم (S4): لایه‌ی ادغام (Max Pooling) با اندازه‌ی ۳×۳؛
  • لایه‌ی پنجم (C5): ۳۸۴ لایه‌ی کانولوشن با اندازه‌ی ۳×۳؛
  • لایه‌ی ششم (C6): ۳۸۴ لایه‌ی کانولوشن با اندازه‌ی ۳×۳؛
  • لایه‌ی هفتم (C7): ۲۵۶ لایه‌ی کانولوشن با اندازه‌ی ۳×۳؛
  • لایه‌ی هشتم (S8): لایه‌ی ادغام (Max Pooling) با اندازه‌ی ۳×۳؛
  • لایه‌ی نهم (F9): لایه‌ی کاملاً متصل با اندازه‌ی ۴۰۹۶؛
  • لایه‌ی دهم (F10): لایه‌ی کاملاً متصل با اندازه‌ی ۴۰۹۶؛
  • لایه‌ی یازدهم (F11): لایه‌ی کاملاً متصل با سایز ۱۰۰۰.

این شکل لایه‌ها را بهتر نشان می‌دهد:

معماری الکس‌نت (AlexNet)

حال که متوجه کلیات هر یک از ۱۱ لایه از معماری الکس نت (AlexNet) شدیم، جزئیات هر لایه را بررسی می‌کنیم.

لایه‌ی اول شبکه‌ی الکس نت (AlexNet)

لایه‌ی اول (C1): اولین لایه‌ی کانولوشن

لایه‌ی اول شبکه‌ی الکس نت (AlexNet) یک لایه‌ی کانولوشن است که عکسی با اندازه‌ی ۳×۲۲۴×۲۲۴ را به‌عنوان ورودی دریافت می‌کند؛ سپس با استفاده از ۹۶ کرنل ۱۱×۱۱ با مقدار گام (Stride) ۴ و مقدار لایه‌گذاری (Padding) برابر ۲ عمل کانولوشن را روی عکس ورودی انجام می‌دهد. خروجی این لایه ۹۶ نقشه‌ی ویژگی (Feature Map) به اندازه‌ی ۵۵×۵۵ است که به یک تابع فعال‌ساز واحد یکسوشده‌ی خطی (ReLU) وارد و به لایه‌ی بعدی منتقل می‌شود. این لایه ۳۴۹۴۴ پارامتر یادگیری را دربردارد.

لایه‌ی دوم شبکه‌ی الکس نت (AlexNet)

لایه‌ی دوم (S2): اولین لایه‌ی ادغام (Max pooling)

همان‌طور که در بخش قبل متوجه شدیم، خروجی لایه‌ی اول ۹۶ نقشه‌ی ویژگی (Feature Map) با اندازه‌ی ۵۵×۵۵ است که در مرحله‌ی دوم به یک لایه‌ی ادغام (Max pooling) وارد می‌شود. در این مرحله فرایند ادغام (Max pooling) با کرنلی به اندازه‌ی ۳×۳، مقدار گام (Stride) ۲ و مقدار لایه‌گذاری (Padding) صفر انجام می‌شود. خروجی این لایه‌ی ۹۶ نقشه‌ی ویژگی (Feature Map) با اندازه‌ی ۲۷×۲۷ است که به لایه‌ی بعد انتقال می‌یابد.

لایه‌ی سوم شبکه‌ی الکس نت (AlexNet)

لایه‌ی سوم (C3): دومین لایه‌ی کانولوشن

در این مرحله بار دیگر خروجی مرحله‌ی قبل (لایه‌ی دوم) که ۹۶ نقشه‌ی ویژگی با اندازه‌ی ۲۷×۲۷ است به‌عنوان ورودی وارد می‌شود. در اینجا عملیات کانولوشن با ۲۵۶ کرنل ۵×۵، مقدار گام (Stride) ۱ و مقدار لایه‌گذاری (Padding) ۲ انجام می‌شود. این لایه‌ی خروجی با اندازه‌ی ۲۵۶×۲۷×۲۷ را تولید می‌کند که به یک تابع فعال‌ساز واحد یکسوشده‌ی خطی (ReLU) وارد و به لایه‌ی بعدی منتقل می‌شود. این لایه ۶۱۴۶۵۶ پارامتر یادگیری را دربردارد که مجموع آن با لایه‌های قبلی به ۶۴۹۶۰۰۰ می‌رسد.

لایه‌ی چهارم شبکه‌ی الکس نت

لایه‌ی چهارم (S4): دومین لایه‌ی ادغام (Max pooling)

لایه‌ی چهارم معماری شبکه‌ی الکس نت (AlexNet) یک لایه‌ی ادغام (Max pooling) است که خروجی لایه‌ی قبلی را به‌عنوان ورودی دریافت می‌کند. در اینجا هم مانند لایه‌ی دوم فرایند ادغام (Max pooling) با کرنلی به‌اندازه‌ی ۳×۳، مقدار گام (Stride) ۲ و مقدار لایه‌گذاری (Padding) صفر انجام می‌شود. این لایه در خروجی ۲۵۶ نقشه‌ی ویژگی (Feature Map) با اندازه‌ی ۱۳×۱۳ می‌دهد که درنهایت یک تابع فعال‌ساز واحد یکسوشده‌ی خطی (ReLU) بر روی آن اعمال و به لایه‌ی بعد وارد می‌شود.

لایه‌ی پنجم شبکه‌ی الکس نت (AlexNet)

لایه‌ی پنجم (C5): سومین لایه‌ی کانولوشن

ورودی این لایه خروجی لایه‌ی قبل، یعنی ۲۵۶ نقشه‌ی ویژگی (Feature Map) با اندازه‌ی ۱۳×۱۳، است. در این مرحله فرایند کانولوشن با استفاده از ۳۸۴ کرنل ۳×۳ و مقدار گام (Stride) و لایه‌گذاری (Padding) برابر با ۱ انجام می‌شود. این لایه در خروجی ۳۸۴ نقشه‌ی ویژگی (Feature Map) با اندازه‌ی ۳×۳ می‌دهد که درنهایت یک تابع فعال‌ساز واحد یکسوشده‌ی خطی (ReLU) روی آن اعمال می‌شود تا به لایه‌ی بعدی وارد شود.

این لایه ۸۸۵۱۲۰ پارامتر یادگیری است که به‌طور کلی با لایه‌های شبکه تا الان ۱۵۳۴۷۲۰ پارامتر است.

لایه‌ی ششم شبکه‌ی الکس‌نت

لایه‌ی ششم (C6): چهارمین لایه‌ی کانولوشن

بار دیگر فرایند کانولوشن در این مرحله روی خروجی لایه‌ی کانولوشن قبلی اعمال می‌شود. فرایند کانولوشن در این مرحله کاملاً مشابه کانولوشن در لایه‌ی 5 (C5) است؛ بنابراین اندازه‌ی خروجی آن نیز یکسان خواهد بود. خروجی این لایه نیز مانند تمامی لایه‌های قبلی، به تابع فعال‌ساز واحد یکسوشده‌ی خطی (ReLU) وارد می‌شود.

تعداد پارامترهای این لایه ۱۳۷۴۸۸ است که با جمع لایه‌های قبلی به ۲۸۶۲۲۰۸ می‌رسد.

لایه‌ی هفتم شبکه‌ی الکس نت (AlexNet)

لایه‌ی هفتم (C7): پنجمین لایه‌ی کانولوشن

در این لایه عملیات کانولوشن با ۲۵۶ کرنل ۳×۳ و مقدار گام (Stride) و لایه‌گذاری (Padding) برابر با ۱ روی خروجی لایه‌ی قبل انجام می‌شود. خروجی این لایه اندازه‌ای برابر با ۲۵۶×۱۳×۱۳ دارد که مانند مراحل قبل از یک تابع فعال‌ساز واحد یکسوشده‌ی خطی (ReLU) عبور می‌کند تا به لایه‌ی بعدی برسد.

تعداد پارامترها در این لایه با ۸۸۴۹۹۲ برابر است و به‌طور کلی شبکه تا این مرحله ۳۷۴۷۲۰۰ پارامتر یادگیری را دربرمی‌گیرد.

لایه‌ی هشتم شبکه‌ی الکس‌نت (AlexNet)

لایه‌ی هشتم (S8): سومین لایه‌ی ادغام (Max pooling)

همان‌طور که مشخص است، ورودی این لایه خروجی لایه‌ی قبل، یعنی ۲۵۶ نقشه‌ی ویژگی ۱۳×۱۳، است. در این مرحله فرایند ادغام (Max pooling) دقیقاً مانند لایه‌ی دوم (S2) و چهارم (S4) با کرنلی به اندازه‌ی ۳×۳، مقدار گام (Stride) ۲ و مقدار لایه‌گذاری (Padding) صفر انجام می‌شود. این لایه ۲۵۶ نقشه‌ی ویژگی با اندازه‌ی ۶×۶ را تولید می‌کند که به یک تابع فعال‌ساز واحد یکسوشده‌ی خطی (ReLU) وارد می‌شود.

تا اینجا، یعنی لایه‌ی هشتم، شبکه ۳۷۴۷۲۰۰ پارامتر یادگیری دارد و هنوز سه لایه‌ی دیگر باقی مانده است. سه لایه‌ی دیگر شبکه از نوع کاملاً متصل (Fully Connected) هستند. در ادامه با هم جزئیات این لایه‌ها را بررسی می‌کنیم.

لایه‌ی نهم شبکه‌ی الکس نت (AlexNet)

لایه‌ی نهم (F9): اولین لایه‌ی کاملاً متصل (Fully Connected)

این لایه‌ی خروجی لایه‌ی قبل را به‌صورت مسطح‌شده (Flatten) دریافت می‌کند و جمع وزنی تمامی نودها را با مقدار بایاس (Bias) جمع می‌کند. اندازه‌ی خروجی در این لایه برابر با ۴۰۹۶×۱ است که یک تابع فعال‌ساز واحد یکسوشده‌ی خطی (ReLU) روی آن اعمال می‌شود. این لایه ۳۷۷۵۲۸۳۲ پارامتر یادگیری دارد و مجموع پارامترهای شبکه به ۴۱۵۰۰۰۳۲ رسیده است.

لایه‌ی دهم شبکه‌ی الکس‌نت

لایه‌ی دهم (F10): دومین لایه‌ی کاملاً متصل (Fully Connected)

همان‌طور که در شکل قبلی مشخص است، ورودی این لایه همان خروجی لایه‌ی نهم (F9) است. در این مرحله همان فرایند لایه‌ی قبلی روی ورودی اعمال‌ می‌شود و بار دیگر خروجی به اندازه‌ی ۴۰۹۶×۱ خواهیم داشت که به تابع فعال‌ساز واحد یکسوشده‌ی خطی (ReLU) وارد می‌شود تا درنهایت به لایه‌ی آخر منتقل شود.

تعداد پارامترهای یادگیری لایه‌ی دهم برابر با ۶۷۸۱۳۱۲ است که مقدار کل پارامترهای شبکه را به ۵۸۲۸۱۳۴۴ می‌رساند.

لایه یازدهم شبکه الکس نت

لایه‌ی یازدهم (F11): سومین لایه‌ی کاملاً متصل (Fully Connected)

لایه‌ی نهایی شبکه‌ی الکس نت (AlexNet) یا همان لایه‌ی یازدهم (F11)، مانند دو لایه‌ی قبلی، یعنی F10 و F9، عمل می‌کند و خروجی‌ای به‌اندازه‌ی ۱۰۰۰×۱ را ارائه می‌کند. در این مرحله خروجی لایه‌ی آخر به یک تابع فعال‌ساز سافت‌مکس وارد می‌شود. خروجی تابع سافت‌مکس احتمال هر کلاس را نشان می‌دهد.

تعداد پارامترهای لایه‌ی آخر برابر با ۴۰۹۷۰۰۰ است که نهایتاً مجموع پارامترهای شبکه را به ۶۲۳۷۸۳۴۴ می‌رساند.

حال که تمامی لایه‌های شبکه‌ی الکس نت (AlexNet) را بررسی کردیم، بهتر است مطالب گفته‌شده را با هم مرور کنیم.

جمع‌بندی موارد گفته‌شده درباره‌ی شبکه‌ی الکس‌نت (AlexNet)

شبکه الکس نت (AlexNet) یک شبکه‌ی عصبی کانولوشنی عمیق است که روی مجموعه‌داده‌ی ImageNet رقابت ILSVRC سال ۲۰۱۰ آموزش داده شده است. این شبکه رتبه‌ی اول رقابت 2012 ILSVRC را کسب کرد. شبکه‌ی الکس نت (AlexNet) ۱۱ لایه دارد. در این جدول می‌توانیم خلاصه‌ای از ساختار این شبکه را مشاهده کنیم:

تعداد فیلتر گامسایز کرنلابعاد خروجیعملیاتلایه‌ها
227x227x3ورودی
96411×1155x55x96کانولوشن (Convolution)1
9623×327x27x96ادغام (Max pooling)2
25615×527x27x256کانولوشن (Convolution)3
25623×313x13x256ادغام (Max pooling)4
38413×313x13x384کانولوشن (Convolution)5
38413×313x13x384کانولوشن (Convolution)6
25613×313x13x256کانولوشن (Convolution)7
25623×36x6x256ادغام (Max pooling)8
4096کاملاً متصل (Fully Connected)9
4096کاملاً متصل (Fully Connected)10
1000کاملاً متصل (Fully Connected)11

یادگیری دیتا ساینس و ماشین لرنینگ با کلاس‌های آنلاین آموزش علم داده کافه‌تدریس

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

کلاس‌های آنلاین دیتا ساینس کافه‌تدریس در دوره‌های مقدماتی و پیشرفته برگزار می‌شود و مبتنی بر کار روی پروژه‌های واقعی علم داده است.

برای آشنایی با کلاس‌های آنلاین آموزش علم داده کافه‌تدریس روی این لینک کلیک کنید:

کلاس‌های آنلاین علم داده کافه‌تدریس