نگاهی به شبکه‌ های عصبی و طرز کار آنها

علمی

کامپیوتر بهتر است یا مغز؟ اگر از افراد سوال کنید که آیا دوست دارند مغزی شبیه‌ به کامپیوتر داشته باشند، فورا جواب مثبت می‌دهند. اما اگر به فعالیت‌های دو دهه‌ی اخیر دانشمندان در این زمینه نگاه کنید متوجه می‌شوید که آنها سعی دارند کامپیوترهایی بسازند که شبیه‌ به مغز عمل کند. اما پرسش این است که چگونه؟ آنها به کمک شبکه‌های عصبی این کار را می‌کنند. شبکه‌های عصبی برنامه‌هایی کامپیوتری هستند که از صدها، هزاران یا میلیون‌ها سلول مغز مصنوعی تشکیل شده‌اند که شبیه‌به مغز انسان، عمل یادگیری و رفتاری را انجام می‌دهد. در اینجا قصد داریم به ماهیت دقیق‌تر شبکه‌های عصبی و چگونگی کارکرد آنها به‌طور جزئی‌تر بپردازیم.

شبکه های عصبی و مغزکامپیوتر و مغز چیزهای مشترک زیادی دارند؛ اما اساسا متفاوت هستند. اگر ما انعطاف‌پذیری مغز را با قدرت کامپیوتر ترکیب کنیم چه اتفاقی می‌افتد؟ احتمالا یک شبکه عصبی فوق‌العاده مفید به‌دست می‌آید. این عکس مربوط‌به همپوشانی اسکن مغزی موسسه ملی NIDA و موسسه‌ی ملی سلامت آمریکا با شبکه عصبی سایت explainthatstuff.com است.

گاهی‌اوقات پیش می‌آید که افراد مغز انسان را با کامپیوترهای الکترونیکی مقایسه می‌کنند و شباهت‌های آنها را بررسی می‌کنند. یک مغز عادی حاوی ۱۰۰ میلیارد (هیچ‌کس به‌طور دقیق نمی‌داند که این تعداد چقدر است و تخمین زده می‌شود که این تعداد بین ۵۰ میلیارد تا ۵۰۰ میلیارد است) سلول کوچک به‌نام نورون است. هر نورون از یک جسم سلولی (یا جسم یاخته که توده‌ی مرکزی سلول است) با تعدادی‌ از اتصالات مربوط‌ به آن ساخته شده است: تعداد زیادی دندریت (ورودی‌های سلول که حامل اطلاعات به داخل جسم سلولی هستند) و یک آکسون (خروجی سلول که حامل اطلاعات به خارج سلول است). نورون‌ها آنقدر کوچک هستند که می‌توان ۱۰۰ عدد از جسم‌های سلولی آنها را در یک میلی‌متر قرار داد. گفتنی است که نورون‌ها تنها ۱۰ درصد از تمامی سلول‌های مغز را تشکیل می‌دهند و ۹۰ درصد بقیه مربوط‌به سلول‌های گلیالی (نوروگلی) می‌شود که کار حفاظت و تغذیه نورون‌ها را برای رشد و کار کردن آنها برعهده دارند. داخل کامپیوتر، دستگاه کوچکی به‌نام ترانزیستور وجود دارد که عملکردی شبیه‌ به سلول مغزی دارد. جدیدترین و پیشرفته‌ترین ریزپردازنده‌ها (کامپیوترهای تک تراشه‌ای) حاوی بالغ‌ بر ۲ میلیارد ترانزیستور هستند؛ حتی یک ریزپردازنده‌ی ابتدایی، دارای چیزی حدود ۵۰ میلیون ترانزیستور است که همه‌ی آنها داخل یک مدار مجتمع (آی‌سی) با مساحت تنها ۲۵ میلی‌متر مربع (کوچک‌تر از یک تمبر پستی) قرار داده شده‌اند.

نورونیک نورون ساختار بنیادین یک سلول مغزی است که جسم سلولی مرکزی، دندریت‌ها (که به جسم سلولی منتهی می‌شوند)، و آکسون (که از جسم سلولی خارج می‌شود) را نشان می‌دهد. این تصویر متعلق‌به موسسه ملی NIDA و موسسه ملی سلامت آمریکاست.

این همان جایی است که مقایسه‌ی بین کامپیوتر و مغز شروع شده و به‌پایان می‌رسد، چرا که این دو پدیده کاملا باهم متفاوت‌اند. تفاوت تنها مربوط‌ به این نمی‌شود که کامپیوترها جعبه‌های فلزی سردی هستند که پر از اعداد باینری (۰و۱) هستند و اینکه مغز جسم زنده و گرمی در نظر گرفته می‌شود که پر از احساسات، افکار و خاطرات ما است. تفاوت اصلی اینجاست که نحوه‌ی فکرکردن کامپیوتر و مغز متفاوت است. نحوه‌ی چینش ترانزیستورهای کامپیوتر نسبتا ساده است و به‌شکل زنجیره‌های سریالی (هر تزانزیستور به دو یا سه ترانزیستور دیگر در ترتیبی به‌نام دروازه‌ی منطقی متصل است) است، درحالی‌که نورون‌ها در مغز به‌نحوه‌ای بسیار پیچیده‌ و موازی به‌یکدیگر متصل‌اند (هر نورون شاید به‌چیزی حدود ۱۰ هزار نورون مجاور خود اتصال داشته باشد).

تفاوت ساختار اصلی بین کامپیوتر (با چندصد میلیون ترانزیستور متصل‌شده به روشی ساده) و مغز (شاید  ۱۰ تا ۱۰۰ برابر پیچیده‌تر از روش اتصال کامپیوتر) چیزی است که باعث می‌شود این دو آنقدر متفاوت فکر کنند. کامپیوتر برای ذخیره کردن مقادیر زیادی‌ از اطلاعات بی‌معنی (برای کامپیوتر) و مرتب‌کردن دوباره‌ی این اطلاعات با توجه به دستورالعمل‌ها (برنامه‌ها) طراحی شده است، درصورتی‌که مغز فرآیند یادگیری آهسته‌ و با متدی میدانی دارد که ماه‌ها یا سال‌ها طول می‌کشد که یک چیز پیچیده را کاملا درک کند. اما مغز برخلاف کامپیوتر، می‌تواند به‌طور همزمان اطلاعات را در راه‌های جدیدی ترکیب کند (مثل آثار بتهوون یا شکسپیر که ناشی‌ از خلاقیت بود)، الگوهای اصلی را شناسایی کند، اتصالات جدیدی بسازد و چیزهایی را که یاد گرفته‌ است با بینش مختلفی ببیند.

پردازنده الکترونیکیمغز الکترونیکی؟ نه کاملا. درداخل، یک تراشه‌ی کامپیوتر معمولی است (مربع مرکزی) که از هزاران، میلیون‌ها و شاید حتی میلیاردها سوئیچ الکترونیکی به‌نام ترانزیستور تشکیل شده است، اما تعداد آنها کمتر از سلول‌های داخل مغز انسان است. عکس اقتباس‌شده از مرکز تحقیقات گلن ناسا است.

ایده‌ی ابتدایی پشت یک شبکه عصبی، شبیه‌سازی (کپی کردن ساده و درعین حال پایدار) بسیاری‌ از سلول‌های مغزی متصل داخل یک کامپیوتر است تا بتوان با این کار اعمال یادگیری، شناسایی الگوها و تصمیم‌گیری انسان‌گونه را انجام داد. نکته‌ی جالب توجه درمورد شبکه‌ی عصبی این است که نیازی نیست آن را برای یادگیری صریح، برنامه‌ریزی کنید. این شبکه در واقع  می‌تواند همه‌چیز را مانند مغز انسان، خودش یاد بگیرد.

اما این شبکه‌ی عصبی، مغز نیست. در نظر داشتن این نکته مهم است که شبکه‌های عصبی عموما شبیه‌سازهای نرم‌افزاری هستند که با برنامه‌نویسی برای کامپیوترهای بسیار ساده و پیش‌پاافتاده راه می‌افتند و با روش‌های قبلی خود و با استفاده‌ از ترانزیستورها و دروازه‌های منطقی خود کار می‌کنند تا به‌مانند میلیاردها سلول مغزی متصل و موازی رفتار کنند. هیچ‌کس تا به‌ حال حتی تلاش هم نکرده است تا کامپیوتری بسازد که با ترانزیستورهایی با ساختار موازی مانند مغز انسان کار کند. به‌عبارت دیگر تفاوت شبکه‌ی عصبی با مغز مانند تفاوت مدل کامپیوتری آب‌وهوا با ابر، برف، و هوای آفتابی درواقعیت است. شبیه‌سازی کامپیوتر تنها مجموعه‌ای از متغیرهای جبری و معادلات ریاضی است که آنها را به‌هم متصل می‌کند (اعداد ذخیره‌شده در جعبه‌هایی که مقادیر آنها دائما درحال تغییر است). این شبیه‌سازی‌ها برای کامپیوترها هیچ معنایی ندارد و تنها برای افرادی که برنامه‌ آنها را می‌نویسند بامعنا است.

قبل‌از اینکه جلوتر برویم، باید چندین اصطلاح را بررسی کنیم. شبکه‌های عصبی‌ که به این طریق (شبیه‌سازی و برنامه‌نویسی) ساخته می‌شوند، شبکه‌ی عصبی مصنوعی (ANN) نامیده می‌شوند تا نسبت‌ به شبکه‌های عصبی حقیقی (مجموعه‌های سلول‌های مغزی متصل) که داخل مغز ما هستند متمایز شوند. شاید اصطلاحات دیگری مانند ماشین‌های اتصال، پردازنده‌های توزیع‌شده‌ی موازی، ماشین‌های تفکر و غیره نیز به‌ گوش شما خورده باشد، اما در این مقاله تنها قصد داریم از اصطلاح شبکه‌ی عصبی استفاده کنیم و هر جا این اصطلاح دیده شد، منظور همان شبکه‌ی عصبی مصنوعی است.  

یک شبکه عصبی معمولی ده‌ها، صدها،َ هزاران یا حتی میلیون‌ها نورون مصنوعی به‌نام واحد دارد که در مجموعه‌ای از لایه‌ها قرارگرفته‌اند که در هرطرف با بقیه لایه‌ها به‌هم متصل‌اند. برخی‌از آنها با نام واحد‌های ورودی شناخته می‌شوند. این واحدها برای دریافت شکل‌های مختلف اطلاعات از دنیای خارجی که شبکه سعی در یادگیری، شناسایی، و پردازش آنها دارد، طراحی شده‌اند. سایر واحدها که واحد‌های خروجی نامیده می‌شوند، در طرف مخالف شبکه قرار دارند و چگونگی واکنش شبکه به اطلاعات یادگیری‌شده را مشخص و بررسی می‌کنند. درمیان واحدهای ورودی و خروجی، واحد‌های مخفی وجود دارند که به‌همراه این واحدها، اکثریت مغز مصنوعی را تشکیل می‌دهند. اکثر شبکه‌های عصبی به‌طور کامل متصل‌اند، بدین معنا که هر واحد مخفی و هر واحد خروجی به واحدهای لایه‌های هرطرف متصل‌ است. اتصال بین واحدها با عددی به‌نام وزن ارائه می‌شود. وزن می‌تواند مثبت (اگر یک واحد، واحد دیگر را برانگیخته کند) یا منفی (اگر یک واحد، واحد دیگر را سرکوب یا مهار کند) باشد. هرچقدر میزان وزن بالاتر باشد، تاثیر یک واحد بر دیگری بیشتر می‌شود. این شبیه‌به راهی است که سلول‌های حقیقی مغز در شکاف‌های کوچکی به‌نام سیناپس باعث برانگیختگی یکدیگر می‌شوند.

شبکه های عصبییک شبکه عصبی کاملا متصل، متشکل‌از واحد‌های ورودی (قرمز)، واحدهای مخفی (آبی)، و واحدهای خروجی (زرد) است که همه این واحدها به همه واحدهای هرطرف خود متصل هستند. واحدهای ورودی ازسمت چپ وارد می‌شوند و واحدهای مخفی در وسط را فعال می‌کنند و خروجی را ازسمت راست خارج می‌کنند. قدرت (وزن) اتصال بین هر دو واحد به‌تدریج با یادگیری‌های شبکه منطبق می‌شود.

اطلاعات به دو طریق در شبکه‌ی عصبی جریان دارند: زمانی که درحال یادگیری است؛ یا بعد از اینکه عمل یادگیری انجام شد. در این زمان‌ها الگوهای یادگیری به‌وسیله‌ی واحدهای ورودی وارد شبکه می‌شوند و لایه‌های واحدهای مخفی را برانگیخته می‌کنند و این لایه‌ها به واحدهای خروجی می‌رسند. به این طراحی رایج، شبکه عصبی پیش‌خور می‌گویند. همه‌ی واحدها همیشه شلیک نمی‌شوند. هرواحدی اطلاعات ورودی را از واحدهای سمت چپ خود دریافت می‌کند و ورودی‌ها در وزن اتصالات مربوط‌به خود ضرب می‌شوند. هرواحدی تمامی ورودی‌هایی را که دریافت می‌کند به این طریق جمع می‌زند و (در ساده‌ترین نوع شبکه) اگر جمع بیش‌از یک مقدار آستانه مشخص شد، این واحد شلیک می‌کند و واحدهای متصل به‌خود را (که در سمت راست هستند) راه می‌اندازد. 

برای یادگیری یک شبکه عصبی، باید بازخورد وجود داشته باشد؛ همان‌طور که به کودکان گفته می‌شود که چه چیزی درست است و چه چیزی غلط. درواقع همه‌ی ما همیشه از بازخورد استفاده می‌کنیم. زمانی را به‌خاطر بیاورید که می‌خواستیم برای اولین بار بازی بولینگ را یاد بگیریم. وقتی شما توپ سنگینی برمی‌دارید و آن را پرتاب می‌کنید، مغز شما به‌سرعت چگونگی حرکت توپ و مسیر آن را مشاهده می‌کند و میزان دقت شما را بررسی می‌کند. دفعه بعدی که دوباره نوبت شما رسید، اشتباهات دفعه قبلی خود را به‌یاد می‌آورید و حرکت خود را باتوجه به این اشتباهات اصلاح می‌کنید و امیدوارید که این‌بار توپ را بهتر از ‌قبل پرتاب کنید. بنابراین در این مثال از بازخورد برای مقایسه نتیجه قبلی با نتیجه دلخواه خود استفاده می‌کنید. این بازخورد تفاوت‌ها را مشخص می‌کند و تغییراتی در دستور کار شما برای دفعه بعدی ایجاد می‌کند: باشدت بیشتر پرتاب کردن؛ کمی به‌سمت چپ پرتاب کردن؛ دیرتر رها کردن، و غیره. هرچه تفاوت بین نتایج حقیقی و نتایج دلخواه بیشتر و بزرگ‌تر شود، تغییرات نیز بیشتر خواهد شد.

بولینگبولینگ: شما باکمک شبکه عصبی داخل مغزتان یاد می‌گیرید که چگونه چنین مهارت‌هایی را به‌دست بیاورید. هردفعه که شما توپ را اشتباه پرتاب می‌کنید، یاد می‌گیرید که چه اصلاحاتی باید برای دفعه بعد به‌کار برید. 

شبکه‌های عصبی نیز به‌همین روش چیزهای مختلف را یاد می‌گیرند. یادگیری شبکه‌های عصبی با استفاده‌از یک روند بازخوردی را پس‌انتشار گویند. این عمل عبارت‌ است از: مقایسه‌ی خروجی تولیدی یک شبکه با خروجی‌ که دلخواه و مورد انتظار است. از تفاوت بین این دو خروجی، برای تغییر و اصلاح وزن‌های اتصالات بین واحدهای شبکه استفاده می‌شود، با این‌ تفاوت که این روش برعکس است، یعنی از واحدهای خروجی به‌سمت واحدهای مخفی و سپس از آنجا به‌سمت واحدهای ورودی می‌رویم. پس‌انتشار با کاهش تفاوت بین خروجی واقعی و خروجی دلخواه، تاحدی که این دو خروجی یکسان شوند، جلو می‌رود تا شبکه‌ی عصبی دقیقا همان‌طوری که باید و انتظار می‌رود، کار کند.

زمانی‌ که شبکه توسط نمونه‌های یادگیری کافی، آموزش داده شد، به نقطه‌ای می‌رسد که می‌توان یک سری جدید از ورودی‌ها را وارد آن کرد که قبلا آنها را ندیده باشد و واکنش شبکه به این ورودی‌های جدید را مشاهده کرد. به‌عنوان مثال، فرض کنید که با نشان دادن تصاویر زیادی از صندلی و میز درحال آموزش دادن یک شبکه هستید و به‌گونه‌ای به شبکه آموزش می‌دهید که کامل مفاهیم شما را درک کند و به شما بگوید که تصویر متعلق به صندلی است یا میز. وقتی شما به‌اندازه‌ی کافی، تصویر صندلی و میز را به این شبکه نشان دادید؛ مثلا تعداد ۲۵ میز و ۲۵ صندلی، طرح جدیدی از صندلی یا میز را به آن نشان می‌دهید که قبلا آن را ندیده باشد و می‌بینید که شبکه‌ی شما چه واکنشی نشان می‌دهد. بسته به‌ نوع آموزش شما، شبکه تلاش می‌کند که نمونه‌ی جدید را دسته‌بندی کند و بگوید که آیا نمونه، تصویر صندلی است یا میز. شبکه کار دسته‌بندی را مانند انسان و با استفاده‌از تجارب گذشته انجام می‌دهد. درواقع شما به کامپیوتر یاد داده‌اید که چگونه لوازم را شناسایی کند.

البته این بدین معنی نیست که شبکه‌ی عصبی بتواند به نمونه‌ها نگاه کند و فورا مثل انسان به آنها واکنش درست نشان دهد. مثالی را که زدیم درنظر بگیرید: این شبکه به میز یا صندلی نگاه نمی‌کند. ورودی‌های شبکه اعداد باینری هستند: هر واحد ورودی یا ۰ است یا ۱. بنابراین اگر شما ۵ واحد ورودی داشته باشید، می‌توانید اطلاعات ۵ مشخصه متفاوت صندلی‌های مختلف را با استفاده‌ از جواب باینری (بله/خیر) پاسخ دهید. سوالات ممکن است به این طریق باشند:

  • آیا این شی پشتی دارد؟
  • آیا قسمت بالایی دارد؟
  • آیا تکیه‌گاه آن نرم است؟
  • آیا می‌توان برای مدت طولانی به‌طور آسوده روی آن نشست؟
  • آیا می‌توان چیزهای بسیاری روی آن قرار داد؟

اگر نمونه‌ی ارائه‌شده یک صندلی معمولی باشد، جواب می‌شود: بله؛ خیر؛ بله؛ بله؛ خیر با کد باینری ۱۰۱۱۰. اگر نمونه یک میز معمولی باشد، جواب می‌شود: خیر؛ بله؛ خیر؛ خیر؛ بله با کد باینری ۰۱۰۰۱. بنابراین شبکه به اعداد باینری نگاه می‌کند و ازطریق خروجی این اعداد تشخیص می‌دهد که شی صندلی است یا میز.

احتمالا باتوجه به این مثال، می‌توانید کاربردهای مختلفی برای شبکه‌های عصبی متصور شوید که عبارت‌اند از شناسایی الگوها و تصمیم‌گیری‌های ساده درمورد آنها. در هواپیماها از یک شبکه‌ی عصبی می‌توان به‌عنوان یک خلبان‌ خودکار استفاده کرد. در هواپیما، واحدهای ورودی، سیگنال‌های دستوری مختلف‌ از کابین خلبان را می‌خوانند و واحدهای خروجی هم کنترل و هدایت هواپیما را باتوجه به سیگنال‌ها تنظیم می‌کنند. درداخل یک کارخانه برای کنترل کیفیت، می‌توان از شبکه‌ی عصبی استفاده کرد. اگر کار کارخانه تولید مواد شوینده لباس در پروسه‌ای پیچیده و شیمیایی باشد، اندازه‌گیری ماده‌ی شیمیایی نهایی ازطریق راه‌های مختلفی (رنگ، میزان اسیدیته، غلظت، و غیره) انجام می‌شود. درنهایت این اندازه‌گیری‌ها به‌عنوان ورودی به شبکه عصبی وارد می‌شوند و سپس شبکه درمورد اینکه آیا ترکیب آنها قابل‌ قبول است یا خیر، تصمیم‌گیری می‌کند.

شبکه‌ی عصبی در موارد امنیتی نیز استفاده‌های زیادی دارد. فرض کنید اداره‌ی بانکی را برعهده دارید که هزاران معامله با کارت اعتباری در دقیقه ازطریق سیستم کامپیوتری شما انجام می‌شود. معاملات باید سریعا شناسایی شوند تا از کلاهبرداری جلوگیری شود. شبکه‌ی عصبی برای جلوگیری‌ از این کلاهبرداری بسیار مناسب است. ورودی‌ها می‌توانند مواردی مثل این سوالات باشند:

  • آیا دارنده‌ی ‌کارت واقعا حضور دارد؟
  • آیا شماره‌ی پین واردشده صحیح است؟
  • آیا تعداد ۴ یا ۵ معامله در ۱۰ دقیقه گذشته توسط این کارت صورت گرفته است؟
  • آیا موارد استفاده‌از این کارت، در کشوری خارج‌از جایی است که ثبت شده است؟
  • و سایر موراد مشابه.

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

بسیاری‌از کارهای روزمره‌ مشمول شناسایی الگوها و استفاده‌از این الگوها برای تصمیم‌گیری می‌شوند، بنابراین شبکه‌های عصبی می‌توانند در بی‌شمار روش‌ به ما کمک کنند. آنها می‌توانند در پیش‌بینی بازار سهام و ارز، آب و هوا، سیستم‌های اسکن راداری که به‌طور خودکار هواپیما یا کشتی دشمن را شناسایی می‌کنند و حتی به دکترها برای تشخیص بیماری‌های پیچیده براساس نشانه‌های این بیماری‌ها، کمک کنند. درهمین لحظه نیز شبکه‌های عصبی در کامپیوتر یا موبایل شما وجود دارند. اگر شما از تلفن‌های هوشمندی استفاده می‌کنید که دست‌خط شما روی صفحه لمسی را شناسایی می‌کنند، احتمالا این تلفن‌ها از یک شبکه‌ی عصبی ساده برای تشخیص کاراکترهایی که می‌نویسید (براساس مشخصه‌های خاص و ترتیب آنها) استفاده می‌کند. برخی‌ از نرم‌افزارهای تشخیص صدا نیز از شبکه عصبی استفاده می‌کنند.

همچنین برخی‌ از برنامه‌های ایمیلی که به‌طور خودکار ایمیل‌های واقعی را از اسپم‌ها جدا می‌کنند، از شبکه عصبی استفاده می‌کنند. شبکه‌های عصبی در ترجمه‌ی یک زبان به زبان دیگر نیز موثر هستند. به‌عنوان مثال، ترجمه‌ی خودکار گوگل درچند سال گذشته استفاده‌ی زیادی از فناوری شبکه عصبی کرده است. گوگل درسال ۲۰۱۶ اعلام کرد که از چیزی به‌نام ماشین ترجمه عصبی برای ترجمه کامل جمله‌ها استفاده می‌کند که میزان خطای آن از ۵۵ تا ۸۵ درصد کاهش یافته است.

روی‌هم رفته، شبکه‌های عصبی، سیستم‌های کامپیوتری را مفیدتر از قبل‌ کرده‌اند؛ چراکه آنها را شبیه‌به مغز انسان کرده‌اند. شاید این بار اگر گمان کردید که دوست دارید مغزتان شبیه‌ به کامپیوتر شود، تجدیدنظر کنید و خوشحال باشید که چنین شبکه‌ی عصبی‌ کارامدی در سرتان دارید!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *