بخش دوم — شبکههای عصبی و یادگیری عمیق
فصل ۱۰: مقدمهای بر شبکههای عصبی مصنوعی با Keras
پرندگان الهامبخش انسان برای پرواز بودند، گیاه باباآدم الهامبخش ساخت چسب ولکرو شد و طبیعت نیز الهامبخش اختراعهای بیشمار دیگری بوده است. بنابراین منطقی به نظر میرسد که برای ساخت یک ماشین هوشمند، به معماری مغز نگاه کنیم. همین منطق به پیدایش شبکههای عصبی مصنوعی (Artificial Neural Networks یا ANN) انجامید؛ مدلهای یادگیری ماشینی که از شبکههای نورونهای زیستی در مغز الهام گرفتهاند. با این حال، همانطور که هواپیماها با الهام از پرندگان ساخته شدهاند ولی برای پرواز بال نمیزنند، شبکههای عصبی مصنوعی نیز بهتدریج تفاوت زیادی با همتایان زیستی خود پیدا کردهاند. حتی بعضی پژوهشگران معتقدند بهتر است قیاس زیستی را کنار بگذاریم و مثلاً بهجای «نورون» از واژه «واحد» استفاده کنیم تا خلاقیت ما به سامانههایی که الزاماً از نظر زیستی واقعگرایانهاند محدود نشود.
شبکههای عصبی مصنوعی در قلب یادگیری عمیق قرار دارند. آنها انعطافپذیر، قدرتمند و مقیاسپذیرند و به همین دلیل برای مسائل بزرگ و بسیار پیچیدهٔ یادگیری ماشین مناسباند؛ از طبقهبندی میلیاردها تصویر و راهاندازی سرویسهای تشخیص گفتار گرفته تا پیشنهاد ویدئو به صدها میلیون کاربر و یادگیری بازی Go در سطح قهرمان جهان.
بخش نخست این فصل شبکههای عصبی مصنوعی را معرفی میکند؛ ابتدا مروری کوتاه بر نخستین معماریها دارد و سپس به پرسپترون چندلایه (Multilayer Perceptron یا MLP) میرسد که امروزه کاربرد گستردهای دارد. معماریهای دیگر در فصلهای بعد بررسی خواهند شد. در بخش دوم، نحوهٔ پیادهسازی شبکههای عصبی با API سطحبالای Keras در TensorFlow را خواهیم دید. Keras رابطی ساده و خوشطراحی برای ساخت، آموزش، ارزیابی و اجرای شبکههای عصبی است، اما سادگی آن به معنی محدودیت نیست و برای ساخت طیف وسیعی از معماریها انعطاف کافی دارد. اگر زمانی به آزادی بیشتری نیاز داشته باشید، میتوانید مؤلفههای سفارشی Keras را با API سطح پایینتر بنویسید یا مستقیماً از TensorFlow استفاده کنید؛ موضوعی که در فصل ۱۲ بررسی میشود.
از نورون زیستی تا نورون مصنوعی
برخلاف تصور، شبکههای عصبی مصنوعی سابقهای طولانی دارند. در سال ۱۹۴۳ وارن مککالاک، عصبفیزیولوژیست، و والتر پیتس، ریاضیدان، آنها را معرفی کردند. این دو در مقالهٔ اثرگذار خود با عنوان «حساب منطقی ایدههای نهفته در فعالیت عصبی» یک مدل محاسباتی سادهشده از همکاری نورونهای زیستی در مغز جانوران برای انجام محاسبات پیچیده با منطق گزارهای ارائه کردند. این مدل نخستین معماری شبکهٔ عصبی مصنوعی بهشمار میآید و از آن زمان معماریهای فراوان دیگری نیز ابداع شدهاند.
موفقیتهای اولیهٔ شبکههای عصبی باعث شد بسیاری باور کنند بهزودی با ماشینهایی واقعاً هوشمند گفتگو خواهیم کرد. وقتی در دههٔ ۱۹۶۰ روشن شد این وعده دستکم در آیندهٔ نزدیک محقق نمیشود، بودجهها به حوزههای دیگر رفت و شبکههای عصبی وارد زمستانی طولانی شدند. در اوایل دههٔ ۱۹۸۰، معماریهای تازه و روشهای آموزش بهتر دوباره توجه پژوهشگران را به «اتصالگرایی» و مطالعهٔ شبکههای عصبی جلب کرد، اما پیشرفت کند بود. در دههٔ ۱۹۹۰ روشهای قدرتمند دیگری، از جمله ماشینهای بردار پشتیبان، پدید آمدند که هم نتایج خوبی داشتند و هم از بنیان نظری محکمتری برخوردار بودند؛ در نتیجه پژوهش روی شبکههای عصبی دوباره برای مدتی در حاشیه قرار گرفت.
امروز شاهد موج دیگری از توجه به شبکههای عصبی هستیم. چند دلیل مهم وجود دارد که نشان میدهد این بار شرایط متفاوت است:
- اکنون حجم عظیمی از داده برای آموزش شبکههای عصبی در دسترس است و شبکههای عصبی مصنوعی در مسائل بسیار بزرگ و پیچیده غالباً از بسیاری از روشهای دیگر یادگیری ماشین بهتر عمل میکنند.
- افزایش عظیم توان پردازشی از دههٔ ۱۹۹۰ تاکنون، آموزش شبکههای بزرگ را در زمان معقول ممکن کرده است. قانون مور بخشی از این پیشرفت را توضیح میدهد، اما صنعت بازی نیز با تولید انبوه GPUهای قدرتمند نقش مهمی داشته است. افزون بر این، سکوهای ابری این توان محاسباتی را برای عموم دسترسپذیر کردهاند.
- الگوریتمهای آموزش بهبود یافتهاند. تفاوت آنها با روشهای دههٔ ۱۹۹۰ همیشه بنیادی نیست، اما همین اصلاحات نسبتاً کوچک اثر بسیار بزرگی بر عملکرد داشتهاند.
- برخی محدودیتهای نظری شبکههای عصبی در عمل کماهمیتتر از چیزی از آب درآمدهاند که تصور میشد. برای نمونه، گیرکردن در کمینههای محلی معمولاً مسئلهٔ بزرگی نیست؛ بهویژه در شبکههای بزرگ، بسیاری از کمینههای محلی تقریباً بهاندازهٔ کمینهٔ سراسری خوب عمل میکنند.
- شبکههای عصبی وارد چرخهای تقویتشونده از بودجه و پیشرفت شدهاند. محصولات چشمگیر مبتنی بر شبکههای عصبی مرتب خبرساز میشوند؛ همین موضوع توجه و سرمایهٔ بیشتری جذب میکند، پیشرفت را سرعت میدهد و زمینهٔ محصولات حتی چشمگیرتر را فراهم میسازد.
نورونهای زیستی
پیش از صحبت دربارهٔ نورون مصنوعی، نگاهی کوتاه به یک نورون زیستی بیندازیم. نورون سلولی با ظاهر غیرمعمول است که عمدتاً در مغز جانوران یافت میشود. این سلول از جسم سلولی شامل هسته و بسیاری از اجزای پیچیدهٔ سلول، شاخههای متعدد موسوم به دندریت، و یک زائدهٔ بسیار بلند به نام آکسون تشکیل شده است. طول آکسون ممکن است فقط چند برابر جسم سلولی یا حتی دهها هزار برابر آن باشد. در نزدیکی انتها، آکسون به شاخههای متعددی به نام تلودندریا تقسیم میشود و در انتهای این شاخهها ساختارهای بسیار کوچکی به نام پایانههای سیناپسی یا بهاختصار سیناپس قرار دارند که با دندریتها یا جسم سلولی نورونهای دیگر ارتباط برقرار میکنند.
شکل ۱۰-۱. یک نورون زیستی
نورونهای زیستی پالسهای الکتریکی کوتاهی به نام پتانسیل عمل تولید میکنند. این سیگنالها در امتداد آکسون حرکت میکنند و موجب میشوند سیناپسها پیامرسانهای شیمیایی موسوم به ناقلهای عصبی را آزاد کنند. اگر نورون در چند میلیثانیه مقدار کافی از این ناقلها را دریافت کند، پالس الکتریکی خودش را شلیک میکند. البته نوع ناقل عصبی نیز مهم است، زیرا بعضی ناقلها فعالیت نورون را مهار میکنند. سیناپسها در واقع به نورون مقصد نچسبیدهاند؛ فقط آنقدر نزدیکاند که تبادل شیمیایی بسیار سریع انجام شود.
بنابراین رفتار یک نورون منفرد نسبتاً ساده به نظر میرسد، اما میلیاردها نورون در شبکهای عظیم سازمان یافتهاند و هر نورون معمولاً با هزاران نورون دیگر ارتباط دارد. یک شبکه از نورونهای نسبتاً ساده میتواند محاسبات بسیار پیچیدهای انجام دهد؛ درست مانند لانهٔ مورچهای پیچیدهای که از همکاری مورچههای ساده پدید میآید. معماری شبکههای عصبی زیستی هنوز موضوع پژوهش فعال است، اما بخشهایی از مغز نقشهبرداری شدهاند. این مطالعات نشان میدهند که نورونها، بهویژه در قشر مخ، اغلب در لایههای متوالی سازمان یافتهاند.
شکل ۱۰-۲. چند لایه در یک شبکهٔ عصبی زیستی در قشر انسان
محاسبات منطقی با نورونها
مککالاک و پیتس مدلی بسیار ساده از نورون زیستی پیشنهاد کردند که بعدها «نورون مصنوعی» نام گرفت. این مدل یک یا چند ورودی دودویی روشن/خاموش و یک خروجی دودویی دارد. نورون مصنوعی زمانی خروجی خود را فعال میکند که تعداد ورودیهای فعال از یک آستانهٔ مشخص بیشتر شود. مککالاک و پیتس نشان دادند حتی با چنین مدل سادهای میتوان شبکهای از نورونهای مصنوعی ساخت که هر گزارهٔ منطقی دلخواه را محاسبه کند. برای درک سازوکار آن، فرض کنید نورون زمانی فعال میشود که دستکم دو اتصال ورودی آن فعال باشند.
شکل ۱۰-۳. شبکههای عصبی مصنوعی برای انجام محاسبات منطقی ساده
- شبکهٔ نخست تابع همانی را پیاده میکند: اگر نورون A فعال شود، نورون C نیز بهدلیل دریافت دو سیگنال از A فعال میشود؛ و اگر A خاموش باشد، C نیز خاموش است.
- شبکهٔ دوم عملگر منطقی AND را محاسبه میکند: C تنها هنگامی فعال است که هر دو نورون A و B فعال باشند.
- شبکهٔ سوم عملگر OR را محاسبه میکند: اگر A یا B یا هر دو فعال باشند، C فعال میشود.
- اگر فرض کنیم یک اتصال ورودی بتواند فعالیت نورون را مهار کند، شبکهٔ چهارم گزارهای کمی پیچیدهتر میسازد: C فقط وقتی فعال است که A روشن و B خاموش باشد. اگر A همیشه فعال باشد، این شبکه عملاً NOT را محاسبه میکند؛ یعنی C هنگامی فعال است که B خاموش باشد و برعکس.
با ترکیب چنین شبکههایی میتوان عبارتهای منطقی بسیار پیچیدهتری ساخت.
پرسپترون
پرسپترون یکی از سادهترین معماریهای شبکهٔ عصبی مصنوعی است که فرانک روزنبلات در سال ۱۹۵۷ ابداع کرد. این معماری بر نوعی نورون مصنوعی کمی متفاوت بنا شده است که «واحد منطق آستانهای» (Threshold Logic Unit یا TLU) و گاهی «واحد آستانهای خطی» نامیده میشود. ورودی و خروجی این واحد عددیاند، نه صرفاً روشن و خاموش، و برای هر اتصال ورودی یک وزن در نظر گرفته میشود. TLU ابتدا تابعی خطی از ورودیها را محاسبه میکند:
z = w₁x₁ + w₂x₂ + ⋯ + wₙxₙ + b = wᵀx + b
سپس یک تابع پلهای روی نتیجه اعمال میکند:
hw(x) = step(z)
این مدل بسیار شبیه رگرسیون لجستیک است، با این تفاوت که بهجای تابع لجستیک از تابع پلهای استفاده میکند. مانند رگرسیون لجستیک، پارامترهای مدل شامل وزنهای ورودی w و جملهٔ بایاس b هستند.
شکل ۱۰-۴. یک TLU که مجموع وزنی ورودیها بهعلاوهٔ بایاس را محاسبه و سپس تابع پلهای را اعمال میکند
متداولترین تابع پلهای در پرسپترون، تابع پلهای هویساید است. گاهی نیز از تابع علامت استفاده میشود:
heaviside(z) = 0 if z < 0; 1 if z ≥ 0
sgn(z) = −1 if z < 0; 0 if z = 0; +1 if z > 0
یک TLU منفرد را میتوان برای طبقهبندی دودویی خطی ساده بهکار برد. واحد، تابعی خطی از ورودیها میسازد؛ اگر نتیجه از آستانه بگذرد کلاس مثبت و در غیر این صورت کلاس منفی را برمیگرداند. برای مثال، میتوان با یک TLU گلهای زنبق را با استفاده از طول و عرض گلبرگ طبقهبندی کرد. آموزش چنین واحدی یعنی پیدا کردن مقادیر مناسب برای وزنها و بایاس.
پرسپترون از یک یا چند TLU تشکیل میشود که همگی در یک لایه قرار دارند و هر TLU به همهٔ ورودیها متصل است. چنین لایهای «کاملاً متصل» یا «Dense» نامیده میشود. خود ورودیها لایهٔ ورودی را تشکیل میدهند و چون لایهٔ TLUها خروجی نهایی را میسازد، آن را لایهٔ خروجی مینامیم.
شکل ۱۰-۵. معماری یک پرسپترون با دو ورودی و سه نورون خروجی
این پرسپترون میتواند نمونهها را بهطور همزمان در سه کلاس دودویی متفاوت طبقهبندی کند و بنابراین یک طبقهبند چندبرچسبی است؛ همچنین میتوان از آن برای طبقهبندی چندکلاسه استفاده کرد. با استفاده از جبر خطی میتوان خروجی یک لایه از نورونهای مصنوعی را برای چند نمونه بهطور همزمان و کارآمد محاسبه کرد:
hW,b(X) = ϕ(XW + b)
یادداشتهای منبع
- مقالهٔ کلاسیک مککالاک و پیتس در سال ۱۹۴۳ منتشر شد.
- تصویر نورون زیستی از Bruce Blaus با مجوز Creative Commons 3.0 است.
- طرح لایهبندی قشر مخ از S. Ramon y Cajal و در مالکیت عمومی است.
این ترجمه برای استفادهٔ آموزشی تهیه شده است. انتشار عمومی، فروش یا بازنشر آن باید با رعایت حقوق مؤلف و ناشر و اخذ مجوزهای لازم انجام شود.