آشنایی با مفهوم شبکه های عصبی Neural Networks
بازدیدها: ۹۱
نویسنده: بابک قهرمانی
شبکههای عصبی مصنوعی با الهام گرفتن از عملکرد مغز انسان ایجاد میشوند و در موارد گوناگونی از پزشکی تا اقتصاد کاربرد دارند.
کامپیوتر بهتر است یا مغز؟ اگر از افراد سؤال کنید که آیا دوست دارند مغزی شبیه به کامپیوتر داشته باشند، فورا جواب مثبت میدهند. اما اگر به فعالیتهای دو دههی اخیر دانشمندان در این زمینه نگاه کنید، متوجه میشوید که آنها سعی دارند کامپیوترهایی بسازند که شبیه به مغز عمل کند. اما پرسش این است که چگونه؟ آنها به کمک شبکههای عصبی این کار را میکنند. شبکههای عصبی برنامههایی کامپیوتری هستند که از صدها، هزاران یا میلیونها سلول مغز مصنوعی تشکیل شدهاند که شبیه به مغز انسان، عمل یادگیری و رفتاری را انجام میدهد. در اینجا قصد داریم به ماهیت دقیقتر شبکههای عصبی و چگونگی کارکرد آنها بهطور جزئیتر بپردازیم.
تفاوت مغز با کامپیوتر
گاهی اوقات افراد مغز انسان را با کامپیوترهای الکترونیکی مقایسه و شباهتهای آنها را بررسی میکنند. یک مغز عادی حاوی ۱۰۰ میلیارد (هیچکس بهطور دقیق نمیداند که این تعداد چقدر است و تخمین زده میشود که این تعداد بین ۵۰ میلیارد تا ۵۰۰ میلیارد است) سلول کوچک به نام نورون است. هر نورون از یک جسم سلولی با تعدادی از اتصالات مربوط به آن ساخته شده است: تعداد زیادی دندریت (ورودیهای سلول که حامل اطلاعات به داخل جسم سلولی هستند) و یک آکسون (خروجی سلول که حامل اطلاعات به خارج سلول است). نورونها آنقدر کوچک هستند که میتوان ۱۰۰ عدد از جسمهای سلولی آنها را در یک میلیمتر قرار داد. گفتنی است که نورونها تنها ۱۰ درصد از تمامی سلولهای مغز را تشکیل میدهند و ۹۰ درصد بقیه مربوط به سلولهای گلیال (glial) میشود که کار حفاظت و تغذیه نورونها را برای رشد و کار کردن آنها بر عهده دارند. داخل کامپیوتر، دستگاه کوچکی به نام ترانزیستور وجود دارد که عملکردی شبیه به سلول مغزی دارد. جدیدترین و پیشرفتهترین ریزپردازنده حاوی بالغ بر ۲ میلیارد ترانزیستور هستند؛ حتی یک ریزپردازندهی ابتدایی، دارای چیزی حدود ۵۰ میلیون ترانزیستور است که همهی آنها داخل یک مدار مجتمع(آیسی) با مساحت تنها ۲۵ میلیمتر مربع (کوچکتر از یک تمبر پستی) قرار داده شدهاند.
این همان جایی است که مقایسهی بین کامپیوتر و مغز شروع میشود و بهپایان میرسد؛ چرا که این دو پدیده کاملا باهم متفاوتاند. تفاوت تنها مربوط به این نمیشود که کامپیوترها جعبههای فلزی سردی هستند که پر از اعداد باینری (۰ و ۱) هستند و اینکه مغز جسم زنده و گرمی در نظر گرفته میشود که پر از احساسات، افکار و خاطرات ما است. تفاوت اصلی اینجا است که نحوهی فکر کردن کامپیوتر و مغز متفاوت است. نحوهی چینش ترانزیستورهای کامپیوتر نسبتا ساده و به شکل زنجیرههای سریالی (هر ترانزیستور به دو یا سه ترانزیستور دیگر در ترتیبی به نام دروازهی منطقی متصل است) است، درحالیکه نورونها در مغز به نحوی بسیار پیچیده و موازی به یکدیگر متصلاند (هر نورون شاید به حدود ۱۰ هزار نورون مجاور خود اتصال داشته باشد).
تفاوت ساختار اصلی بین کامپیوتر (با چندصد میلیون ترانزیستور متصلشده به روشی ساده) و مغز (شاید ۱۰ تا ۱۰۰ برابر پیچیدهتر از روش اتصال کامپیوتر) چیزی است که باعث میشود این دو آنقدر متفاوت فکر کنند. کامپیوتر برای ذخیره کردن مقادیر زیادی از اطلاعات بیمعنی (برای کامپیوتر) و مرتب کردن دوبارهی این اطلاعات با توجه به دستورالعملها (برنامهها) طراحی شده است، درصورتیکه مغز فرآیند یادگیری آهسته و با متدی میدانی دارد که ماهها یا سالها طول میکشد که یک چیز پیچیده را کاملا درک کند. اما مغز برخلاف کامپیوتر، میتواند بهطور همزمان اطلاعات را در راههای جدیدی ترکیب کند (مثل آثار بتهوون یا شکسپیر که ناشی از خلاقیت بود)، الگوهای اصلی را شناسایی کند، اتصالات جدیدی بسازد و چیزهایی را که یاد گرفته است با بینش مختلفی ببیند.
شبکه عصبی چیست؟
ایدهی ابتدایی پشت یک شبکه عصبی، شبیهسازی (کپی کردن ساده و درعینحال پایدار) بسیاری از سلولهای مغزی متصل داخل یک کامپیوتر است تا بتوان اعمال یادگیری، شناسایی الگوها و تصمیمگیری انسانگونه را انجام داد. نکتهی جالب توجه درمورد شبکهی عصبی این است که نیازی نیست آن را برای یادگیری صریح، برنامهریزی کنید. این شبکه در واقع میتواند همهچیز را مانند مغز انسان، خودش یاد بگیرد.
آیا شبیه شدن کامپیوترها به مغز انسان اتفاق خارقالعادهای نخواهد بود؟ این همان بزنگاهی است که شبکههای عصبی وارد عرصه میشوند.
اما این شبکهی عصبی، مغز نیست. در نظر داشتن این نکته مهم است که شبکههای عصبی عموما شبیهسازهای نرمافزاری هستند که با برنامهنویسی برای کامپیوترهای بسیار ساده و پیشپاافتاده راه میافتند و با روشهای قبلی خود و با استفاده از ترانزیستورها و دروازههای منطقی خود کار میکنند تا بهمانند میلیاردها سلول مغزی متصل و موازی رفتار کنند. هیچکس تا به حال حتی تلاش هم نکرده است تا کامپیوتری بسازد که با ترانزیستورهایی با ساختار موازی مانند مغز انسان کار کند. بهعبارت دیگر تفاوت شبکهی عصبی با مغز مانند تفاوت مدل کامپیوتری آبوهوا با ابر، برف، و هوای آفتابی درواقعیت است. شبیهسازی کامپیوتر تنها مجموعهای از متغیرهای جبری و معادلات ریاضی است که آنها را بههم متصل میکند (اعداد ذخیرهشده در جعبههایی که مقادیر آنها دائما درحال تغییر است). این شبیهسازیها برای کامپیوترها هیچ معنایی ندارد و تنها برای افرادی که برنامه آنها را مینویسند بامعنا است.
شبکههای عصبی حقیقی و مصنوعی
قبلاز اینکه جلوتر برویم، باید چندین اصطلاح را بررسی کنیم. شبکههای عصبی که به این طریق (شبیهسازی و برنامهنویسی) ساخته میشوند، شبکهی عصبی مصنوعی (ANN) نامیده میشوند تا نسبت به شبکههای عصبی حقیقی (مجموعههای سلولهای مغزی متصل) که داخل مغز ما هستند متمایز شوند.
یک شبکه عصبی متشکل از چه چیزهایی است؟
یک شبکه عصبی معمولی دهها، صدها، هزاران یا حتی میلیونها نورون مصنوعی به نام واحد دارد که در مجموعهای از لایهها قرارگرفتهاند که در هرطرف با بقیه لایهها بههم متصلاند. برخی از آنها با نام واحدهای ورودی شناخته میشوند. این واحدها برای دریافت شکلهای مختلف اطلاعات از دنیای خارجی که شبکه سعی در یادگیری، شناسایی و پردازش آنها دارد، طراحی شدهاند. سایر واحدها که واحدهای خروجی نامیده میشوند، در طرف مخالف شبکه قرار دارند و چگونگی واکنش شبکه به اطلاعات یادگرفتهشده را مشخص و بررسی میکنند. درمیان واحدهای ورودی و خروجی، واحدهای مخفی وجود دارند که به همراه این واحدها، اکثریت مغز مصنوعی را تشکیل میدهند. اکثر شبکههای عصبی بهطور کامل متصلاند؛ بدین معنا که هر واحد مخفی و هر واحد خروجی به واحدهای لایههای هرطرف متصل است. وزن میتواند مثبت (اگر یک واحد، واحد دیگر را برانگیخته کند) یا منفی (اگر یک واحد، واحد دیگر را سرکوب یا مهار کند) باشد. هرچقدر میزان وزن بالاتر باشد، تأثیر یک واحد بر دیگری بیشتر میشود. این شبیه به راهی است که سلولهای حقیقی مغز در شکافهای کوچکی به نام سیناپس باعث برانگیختگی یکدیگر میشوند.
شبکه عصبی چگونه یاد میگیرد؟
اطلاعات به دو طریق در شبکهی عصبی جریان دارند: زمانی که در حال یادگیری است؛ یا بعد از اینکه عمل یادگیری انجام شد. در این زمانها الگوهای یادگیری بهوسیلهی واحدهای ورودی وارد شبکه میشوند و لایههای واحدهای مخفی را برانگیخته میکنند و این لایهها به واحدهای خروجی میرسند. به این طراحی رایج، شبکه عصبی پیشخور میگویند. همهی واحدها همیشه شلیک نمیشوند. هر واحدی اطلاعات ورودی را از واحدهای سمت چپ خود دریافت میکند و ورودیها در وزن اتصالات مربوطبه خود ضرب میشوند. هرواحدی تمامی ورودیهایی را که دریافت میکند به این طریق جمع میزند و (در سادهترین نوع شبکه) اگر جمع بیشاز یک مقدار آستانه مشخص شد، این واحد شلیک میکند و واحدهای متصل بهخود را (که در سمت راست هستند) راه میاندازد.
برای یادگیری یک شبکه عصبی، باید بازخورد وجود داشته باشد؛ همانطور که به کودکان گفته میشود که چه چیزی درست است و چه چیزی غلط. درواقع همهی ما همیشه از بازخورد استفاده میکنیم. زمانی را بهخاطر بیاورید که میخواستیم برای اولین بار بازی بولینگ را یاد بگیریم. وقتی شما توپ سنگینی برمیدارید و آن را پرتاب میکنید، مغز شما بهسرعت چگونگی حرکت توپ و مسیر آن را مشاهده میکند و میزان دقت شما را بررسی میکند. دفعه بعدی که دوباره نوبت شما رسید، اشتباهات دفعه قبلی خود را بهیاد میآورید و حرکت خود را باتوجه به این اشتباهات اصلاح میکنید و امیدوارید که اینبار توپ را بهتر از قبل پرتاب کنید. بنابراین در این مثال از بازخورد برای مقایسه نتیجه قبلی با نتیجه دلخواه خود استفاده میکنید. این بازخورد تفاوتها را مشخص میکند و تغییراتی در دستور کار شما برای دفعه بعدی ایجاد میکند: باشدت بیشتر پرتاب کردن؛ کمی بهسمت چپ پرتاب کردن؛ دیرتر رها کردن، و غیره. هرچه تفاوت بین نتایج حقیقی و نتایج دلخواه بیشتر و بزرگتر شود، تغییرات نیز بیشتر خواهد شد.
شبکههای عصبی نیز بههمین روش چیزهای مختلف را یاد میگیرند. یادگیری شبکههای عصبی با استفادهاز یک روند بازخوردی را پسانتشار گویند. این عمل عبارت است از: مقایسهی خروجی تولیدی یک شبکه با خروجی که دلخواه و مورد انتظار است. از تفاوت بین این دو خروجی، برای تغییر و اصلاح وزنهای اتصالات بین واحدهای شبکه استفاده میشود، با این تفاوت که این روش برعکس است، یعنی از واحدهای خروجی بهسمت واحدهای مخفی و سپس از آنجا بهسمت واحدهای ورودی میرویم. پسانتشار با کاهش تفاوت بین خروجی واقعی و خروجی دلخواه، تاحدی که این دو خروجی یکسان شوند، جلو میرود تا شبکهی عصبی دقیقا همانطوری که باید و انتظار میرود، کار کند.
شبکه عصبی در عمل چگونه کار میکند؟
زمانی که شبکه توسط نمونههای یادگیری کافی، آموزش داده شد، به نقطهای میرسد که میتوان یک سری جدید از ورودیها را وارد آن کرد که قبلا آنها را ندیده باشد و واکنش شبکه به این ورودیهای جدید را مشاهده کرد. بهعنوان مثال، فرض کنید که با نشان دادن تصاویر زیادی از صندلی و میز درحال آموزش دادن یک شبکه هستید و بهگونهای به شبکه آموزش میدهید که کامل مفاهیم شما را درک کند و به شما بگوید که تصویر متعلق به صندلی است یا میز. وقتی شما بهاندازهی کافی، تصویر صندلی و میز را به این شبکه نشان دادید؛ مثلا تعداد ۲۵ میز و ۲۵ صندلی، طرح جدیدی از صندلی یا میز را به آن نشان میدهید که قبلا آن را ندیده باشد و میبینید که شبکهی شما چه واکنشی نشان میدهد. بسته به نوع آموزش شما، شبکه تلاش میکند که نمونهی جدید را دستهبندی کند و بگوید که آیا نمونه، تصویر صندلی است یا میز. شبکه کار دستهبندی را مانند انسان و با استفادهاز تجارب گذشته انجام میدهد. درواقع شما به کامپیوتر یاد دادهاید که چگونه لوازم را شناسایی کند.
البته این بدین معنی نیست که شبکهی عصبی بتواند به نمونهها نگاه کند و فورا مثل انسان به آنها واکنش درست نشان دهد. مثالی را که زدیم درنظر بگیرید: این شبکه به میز یا صندلی نگاه نمیکند. ورودیهای شبکه اعداد باینری هستند: هر واحد ورودی یا ۰ است یا ۱. بنابراین اگر شما ۵ واحد ورودی داشته باشید، میتوانید اطلاعات ۵ مشخصه متفاوت صندلیهای مختلف را با استفاده از جواب باینری (بله/خیر) پاسخ دهید. سؤالات ممکن است به این طریق باشند:
-
آیا این شیء پشتی دارد؟
-
آیا قسمت بالایی دارد؟
-
آیا تکیهگاه آن نرم است؟
-
آیا میتوان برای مدت طولانی بهطور آسوده روی آن نشست؟
-
آیا میتوان چیزهای بسیاری روی آن قرار داد؟
اگر نمونهی ارائهشده یک صندلی معمولی باشد، جواب میشود: بله؛ خیر؛ بله؛ بله؛ خیر با کد باینری ۱۰۱۱۰. اگر نمونه یک میز معمولی باشد، جواب میشود: خیر؛ بله؛ خیر؛ خیر؛ بله با کد باینری ۰۱۰۰۱. بنابراین شبکه به اعداد باینری نگاه میکند و ازطریق خروجی این اعداد تشخیص میدهد که شی صندلی است یا میز.
از شبکههای عصبی برای چه کاری استفاده میشود؟
احتمالا باتوجه به این مثال، میتوانید کاربردهای مختلفی برای شبکههای عصبی متصور شوید که عبارتند از شناسایی الگوها و تصمیمگیریهای ساده درمورد آنها. در هواپیماها از یک شبکهی عصبی میتوان بهعنوان یک خلبان خودکار استفاده کرد. در هواپیما، واحدهای ورودی، سیگنالهای دستوری مختلف از کابین خلبان را میخوانند و واحدهای خروجی هم کنترل و هدایت هواپیما را باتوجه به سیگنالها تنظیم میکنند. درداخل یک کارخانه برای کنترل کیفیت، میتوان از شبکهی عصبی استفاده کرد. اگر کار کارخانه تولید مواد شوینده لباس در پروسهای پیچیده و شیمیایی باشد، اندازهگیری مادهی شیمیایی نهایی ازطریق راههای مختلفی (رنگ، میزان اسیدیته، غلظت، و غیره) انجام میشود. درنهایت این اندازهگیریها بهعنوان ورودی به شبکه عصبی وارد میشوند و سپس شبکه درمورد اینکه آیا ترکیب آنها قابل قبول است یا خیر، تصمیمگیری میکند.
شبکهی عصبی در موارد امنیتی نیز استفادههای زیادی دارد. فرض کنید ادارهی بانکی را برعهده دارید که هزاران معامله با کارت اعتباری در دقیقه ازطریق سیستم کامپیوتری شما انجام میشود. معاملات باید سریعا شناسایی شوند تا از کلاهبرداری جلوگیری شود. شبکهی عصبی برای جلوگیری از این کلاهبرداری بسیار مناسب است. ورودیها میتوانند مواردی مثل این سؤالات باشند:
-
آیا دارندهی کارت واقعا حضور دارد؟
-
آیا شمارهی پین واردشده صحیح است؟
-
آیا تعداد ۴ یا ۵ معامله در ۱۰ دقیقه گذشته توسط این کارت صورت گرفته است؟
-
آیا موارد استفادهاز این کارت، در کشوری خارجاز جایی است که ثبت شده است؟
-
و سایر موراد مشابه.