کاور شبکه عصبی

شبکه‌های عصبی (Neural Networks)

«مغز انسان حاوی 100 میلیارد نورون است، که هر نورون به 10 هزار نورون دیگر متصل است. بر شانه‌های شما، پیچیده‌ترین شیء شناخته‌شده در کائنات قرار دارد.» — میچیو کاکو

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

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

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

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

1.معرفی شبکه‌های عصبی مصنوعی (Artificial Neural Networks)

دانشمندان علوم کامپیوتر مدت‌هاست که از مغز انسان الهام گرفته‌اند. در سال ۱۹۴۳، وارن اس. مک‌کالوک (Warren S. McCulloch) ، یک عصب‌شناس، و والتر پیتس (Walter Pitts) ، یک منطق‌دان، اولین مدل مفهومی از یک شبکه عصبی مصنوعی را توسعه دادند. آن‌ها در مقاله خود با عنوان «حساب منطقی ایده‌های ذاتی در فعالیت عصبی»، یک نورون را به عنوان یک سلول محاسباتی واحد توصیف می‌کنند که در یک شبکه سلولی زندگی می‌کند و ورودی‌ها را دریافت، پردازش و یک خروجی تولید می‌کند.

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

تفاوت مغز انسان با شبکه عصبی مصنوعی

برخی از مسائل برای کامپیوتر بسیار ساده هستند اما برای انسان‌هایی مانند ما دشوارند. یافتن ریشه دوم ۹۶۴,۳۲۴ نمونه‌ای از آن است. یک خط کد سریع مقدار ۹۸۲ را تولید می‌کند، عددی که کامپیوتر می‌تواند در کمتر از یک میلی‌ثانیه محاسبه کند، اما اگر از ما بخواهید آن عدد را خودمان محاسبه کنیم، باید مدت زیادی منتظر بمانید.

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

2.کاربردهای شبکه عصبی در دنیای واقعی

  • تشخیص الگو (Pattern Recognition):

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

  • پیش‌بینی سری‌های زمانی و تشخیص ناهنجاری (Time-series & Anomaly Detection):

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

  • پردازش سیگنال و حسگرهای نرم (Soft Sensors):

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

  • پردازش زبان طبیعی (NLP):

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

  • مدل‌های مولد (Generative Models):

این سیستم‌ها می‌توانند تصاویر را سنتز کنند، وضوح تصویر را افزایش دهند، سبک را بین تصاویر منتقل کنند و حتی موسیقی و ویدئو تولید کنند.

3.شبکه‌های عصبی چگونه کار می‌کنند؟

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

4.سیستم اتصال‌گرا و موازی (Connectionist System)

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

5.نقش وزن‌ها در فرآیند یادگیری (Weights)

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

6.مفهوم سیستم سازگار پیچیده (Complex Adaptive System)

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

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

شکل ۲: یک شبکه عصبی سیستمی از نورون‌ها و اتصالات است.

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

7.راهبردهای یادگیری در شبکه‌های عصبی

  • یادگیری تحت نظارت (Supervised Learning)

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

  • یادگیری بدون نظارت (Unsupervised Learning)

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

  • یادگیری تقویتی (Reinforcement Learning)

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

.

8.ارتباط شبکه های عصبی با یادگیری ماشین (Machine Learning)و هوش مصنوعی

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

این اصطلاح را می‌توان به مقاله سال ۱۹۵۹ با عنوان «برخی مطالعات در یادگیری ماشین با استفاده از بازی چکرز» نسبت داد، که در آن دانشمند علوم کامپیوتر، آرتور لی ساموئل (Arthur Lee Samuel)، برنامه‌ای «خودآموز» را برای بازی چکرز تشریح می‌کند. مفهوم یک الگوریتم که کامپیوتر را قادر می‌سازد بدون برنامه‌نویسی صریح یاد بگیرد، بنیان یادگیری ماشین است.

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

9.هوش مصنوعی (AI) و کتابخانه‌ها

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

10.کتابخانه‌های یادگیری ماشین (Machine Learning Libraries)

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

  • TensorFlow.js:

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

  • ml5.js:

این کتابخانه بر روی TensorFlow.js ساخته شده و به طور خاص برای استفاده با p5.js طراحی شده است. هدف آن این است که برای مبتدیان کاربرپسند باشد و یادگیری ماشین را برای مخاطبان گسترده‌ای از هنرمندان، کدنویسان خلاق و دانشجویان قابل دسترس کند. من نحوه استفاده از ml5.js را در بخش «یادگیری ماشین با ml5.js» نشان خواهم داد.

11.مدل‌های از پیش آموزش‌دیده (Pretrained Models)

یک مزیت کتابخانه‌هایی مانند TensorFlow.js و ml5.js این است که می‌توانید از آن‌ها برای اجرای مدل‌های از پیش آموزش‌دیده استفاده کنید. یک مدل یادگیری ماشین یک تنظیم خاص از نورون‌ها و اتصالات است. یک مدل از پیش آموزش‌دیده مدلی است که از قبل برای یک وظیفه خاص آماده شده است. مدل‌های از پیش آموزش‌دیده محبوب برای طبقه‌بندی تصاویر، شناسایی ژست‌های بدن، تشخیص نشانه‌های چهره یا موقعیت‌های دست، و حتی تحلیل احساس بیان شده در یک متن استفاده می‌شوند. شما می‌توانید از چنین مدلی به همان صورت استفاده کنید یا آن را به عنوان یک نقطه شروع برای یادگیری اضافی در نظر بگیرید (که معمولاً به عنوان انتقال یادگیری (transfer learning)  شناخته می‌شود).

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

 جمع‌بندی

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

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

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

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

دکتر محمدرضا عاطفی

عضو هیئت علمی دانشگاه
رئیس هیئت مدیره گروه ناب
هم بنیان گذار شرکت دانش بنیان
مشاور شرکت ها و سازمان های بزرگ کشور

آنچه می خوانید

هوش مصنوعی

خوشه‌بندی افرازی (Partitional Clustering)چیست؟

1. مقدمه خوشه‌بندی افرازی (Partitional Clustering) یکی از مهم‌ترین خانواده‌های روش‌های خوشه‌بندی در یادگیری بدون‌ناظر است که هدف آن، تقسیم داده‌ها به چند گروه مجزا و هم‌گن بر اساس میزان شباهت میان نمونه‌هاست. در این رویکرد، هر داده معمولاً به یک خوشه اختصاص می‌یابد و الگوریتم تلاش می‌کند ساختاری بهینه

توضیحات بیشتر »
هوش مصنوعی

خوشه‌بندی چیست و چه کاربردهایی در هوش مصنوعی، صنعت و علوم داده دارد؟

1. مقدمه خوشه‌بندی یکی از مهم‌ترین روش‌های یادگیری بدون‌ناظر در هوش مصنوعی و علم داده است که با هدف شناسایی ساختارهای پنهان در میان داده‌ها به کار می‌رود. در این رویکرد، داده‌هایی که از نظر ویژگی‌ها، رفتارها یا الگوهای درونی به یکدیگر شباهت بیشتری دارند، در یک گروه یا «خوشه»

توضیحات بیشتر »
هوش مصنوعی

الگوریتم WaveCluster چیست؟ راهنمای کامل خوشه‌بندی مبتنی بر تبدیل موجک

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

توضیحات بیشتر »