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