██ متن فصل هفدهم نسخه‌ی رایگان ایبوک هوش مصنوعی ██

 

مترجم: سهراب جلوه گر جلوه‌گر

 

فصل شبکه‌های عصبی  

 

فهرست برخی از عنوان‌های نوشته‌ها

شبکه‌های عصبی

زیست‌شناسی و علم کامپیوتر

انواع گره‌ها در شبکه‌های عصبی کامپیوتری

انواع شبکه‌های عصبی

پِرْسِـپْتْرونِ (تک لایه‌ای)

ایراد پرسپترون‌های تک لایه‌ای

طبقه‌بندی‌ با استفاده از شبکه‌های عصبی

پرسپترون‌های چند لایه‌ای

شبکه‌های عصبی برگشت کننده

 

شبکه‌های عصبی

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

 تعریف دوّم– یک سیستم کامپیوتری‌ که از روی مغز انسان و سیستم عصبی مدلسازی شده است.

زیست‌شناسی و علم کامپیوتر

مغز انسان به نظر نمی‌رسد که دارای یک واحد پردازنده‌ی مرکزی  باشد.

 

 

سه شکل بالا- مغز انسان

در عوض دارای تعداد زیادی واحدهای ساده، ناهمزمان  و موازی  به نام نورُون  است. مغزانسان دارای تقریباً 1011 نورون می‌باشد. نورون‌ها دارای درحدود بیست نوع هستند.

 

شکل بالا- نورون

هر نورون یک سلّول تکی است که دارای تعدادی لیف(فیبر) ‌های نسبتاً کوتاه به نام دِنْدْریْتْ(دَنْدْریْتْ یا دِنْدْرایْتْ)  است. یکی از دندریت‌ها، که بزرگ‌تر از بقیّه است، آکسون ‌ نام دارد. انتهای آکسون به تعداد زیادی لیف‌های کوچک تقسیم می‌شود. هر لیف، دندریت‌ها و بدنه‌های سلّولی دیگر نورون‌ها را وصل می‌کند. اتّصال، در واقع فاصله ‌ای کوتاه به نام سیناپْس  است. آکسون‌ها حمل‌کننده  هستند و دندریت‌ها دریافت‌کننده  هستند. در حدود 1014 اتّصال وجود دارد.

 

شکل بالا- نورون‌ها

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

 

شکل بالا- نورون

  انواع گره‌ها در شبکه‌های عصبی کامپیوتری

در شبکه‌های عصبی کامپیوتری سه نوع گره داریم‌:

1-     گره‌های ورودی

2-     گره‌های خروجی

3-     گره‌های پنهان (که در پِرسِپترون‌های چندلایه‌ای وجود دارند.)

  انواع شبکه‌های عصبی

1-     شبکه‌های با تغذیه‌ی مستقیم ‌: در این شبکه‌ها علامت(‌سیگنال‌)‌ها در یک جهت حرکت می‌کنند و بدون دُوْرْ(سیکل یا حلقه) می‌باشند‌.

 

شکل بالا- نمونه‌ای از شبکه‌های با تغذیه‌ی مستقیم

2-     شبکه‌های بازگشت کننده ‌: در این شبکه‌ها، در انتشار علامت(‌سیگنال‌)‌ دُوْرْ(سیکل یا حلقه) وجود دارد‌.

 

شکل بالا- نمونه‌ای از شبکه‌های بازگشت کننده

ما بیش‌تر‌ روی شبکه‌های با تغذیه‌ی مستقیم‌ تمرکز می‌نماییم‌.

پِرْسِپْتْرُونِ  (تک لایه‌ای)

 تعریف- پرسپترون، الگوریتمی ابتدایی برای یادگیری شبکه‌های عصبی تک لایه‌ای ساده است و در دهه‌ی 1950 میلادی به وجود آمد.

 

در شکل قبل، Xiها، ورودی‌های پرسپترون هستند. Wiها، وزن‌ها هستند؛ از W0، به عنوان شروع کننده(آستانه) ، با X0 برابر با منفی یک استفاده می‌شود. in، در مرحله‌ی فعّال‌سازی، جمع ورودی‌ها و آستانه است. g، تابع فعّال‌سازی است. a، فعّال‌سازی یا خروجی است. خروجی با استفاده از یک تابع، که تشخیص می‌دهد تا کجا سطح فعّال‌سازی پرسپترون، بالا یا پایین صفر است، محاسبه می‌شود.

پرسپترون، a = g(in) = g(X.W) را محاسبه می‌نماید:

X.W = w0*-1 + w1*x1 + w2*x2 + … + wn*xn

g، معمولاً تابع آستانه است و داریم: اگر z > 0 باشد، g(z) برابر با یک است و در غیر این صورت برابر با صفر است.

 نکته:

پرسپترون می‌تواند به صورت یک دروازه‌ی منطقی  عمل کند؛ که مقدار «یک»، «درست» و مقدار «صفر یا منفی یک»، «غلط» است.

 مثال تغذیه‌ی مستقیم

 

 

 

 مثال- تابع(دروازه‌ی) منطقی AND

 

شکل بالا- در شکل بالا توجّه نمایید که x و y هرکدام دارای مقدارهای 1 یا 0 می‌توانند باشند.

x       y      x+y-1.5     خروجی

1      1      0.5   1

1      0      -0.5  0

0      1      -0.5  0

0      0      -1.5  0

 مثال- تابع منطقی OR

 

شکل بالا- در شکل بالا توجّه نمایید که x و y هرکدام دارای مقدارهای 1 یا 0 می‌توانند باشند.

x       y      x+y-0.5     خروجی

1      1      1.5   1

1      0      0.5   1

0      1      0.5   1

0      0      -0.5  0

 مثال- تابع منطقی NOT

 

شکل بالا- در شکل بالا توجّه نمایید که x دارای مقدارهای 1 یا 0 می‌تواند باشد.

x       0.5 - x       خروجی

1      -0.5  0

0      0.5   1

 ایراد پرسپترون‌های تک لایه‌ای

 مطلب مهم:      

با پرسپترون‌های تک لایه‌ای فقط می‌توان تابع‌هایی را که به صورت خطّی جدا شدنی  هستند را نشان داد و نمی‌توان XOR را، که به صورت خطّی جدا نشدنی است، نشان داد؛ برای رفع این مشکل می‌توانیم از پرسپترون‌های چند لایه‌ای استفاده کنیم.

 مثال- تابع AND به صورت خطّی جدا شدنی است.

 

 توضیح:     

در شکل بالا نقطه‌ی مثبت نقطه‌ای است که مقدار تابع به ازای آن(x1,x2) یک می‌شود و نقطه‌های منفی نقطه‌هایی هستند که به ازای آنها(x1,x2) مقدار تابع صفر می‌شود و  نقطه‌ی مثبت و نقطه‌های منفی در شکل بالا به وسیله‌ی یک خطّ مستقیم قابل جدا شدن هستند.

 مثال- تابع OR به صورت خطّی جدا شدنی است.

 

 مثال- تابع XOR به صورت خطّی جدا شدنی نیست.

 

 توضیح:     

همان طور که در شکل بالا می‌بینید نمی‌توانیم یک خطّ مستقیم را طوری رسم کنیم که مقدارهای مثبت را از مقدارهای منفی جدا نماید.

طبقه‌بندی‌ با استفاده از شبکه‌های عصبی

شبکه‌های عصبی،‌ طبقه‌بندی را هم‌ خیلی خوب انجام می‌دهند‌؛ ورودی‌ها را به یک یا بیش‌تر‌ خروجی‌ تبدیل می‌نمایند و دامنه‌ی خروجی‌ به کلاس‌هایی مجزّا تقسیم می‌شود و برای کارهای یادگیری‌، در جایی که نمی‌دانیم «‌در جستجوی چه هستیم»‌، خیلی مفید می‌باشند‌، مثل‌: صورتْ‌شناسی ‌، دست‌خط‌شناسی  و رانندگی یک خودرو‌.

 

پرسپترون‌های چند لایه‌ای

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

 

شکل بالا- نمونه‌ای از یک پرسپترون چند لایه‌ای

شبکه‌های عصبی برگشت کننده

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

 

شبکه‌های هاپْفیلد

 

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

 

 

 

شکل بالا- نمونه‌ای از یک شبکه‌ی هاپفیلد

 

 

چکیده‌ی مطلب‌های فصل هفدهم

یک شبکه‌ی عصبی یک سیستم کامپیوتری است که از روی مغز انسان و سیستم عصبی مدلسازی شده است.

دو نوع شبکه‌ی عصبی داریم: یکی شبکه‌های با تغذیه‌ی مستقیم، که در این شبکه‌ها، علامت(‌سیگنال‌)‌ها در یک جهت حرکت می‌کنند و بدون دُوْرْ(سیکل) می‌باشند‌؛ و دیگری شبکه‌های بازگشت کننده، که در این شبکه‌ها، در انتشار علامت(‌سیگنال‌)‌، دُوْرْ(سیکل) وجود دارد‌‌؛ در این شبکه‌ها دست‌کم یکی از خروجی‌ها‌ به یکی از ورودی‌ها‌ متّصل شده‌ است‌.

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

با پرسپترون‌های تک لایه‌ای فقط می‌توان تابع‌هایی را که به صورت خطّی جدا شدنی هستند را نشان داد و نمی‌توان XOR را، که به صورت خطّی جدا نشدنی است، نشان داد؛ برای رفع این مشکل می‌توانیم از پرسپترون‌های چند لایه‌ای استفاده کنیم.

پرسپترون‌ها[ی تک لایه‌ای]‌ دارای این مزیّت هستند که یک الگوریتم یادگیری ساده دارند‌؛ ولی عیب آنها در این است که دارای محدودیّت‌های محاسباتی هستند‌. اگر ما یک لایه‌ی مخفی‌ اضافه نماییم‌، به عبارتی دیگر، پرسپترون چند لایه‌ای با یک لایه‌ی پنهان بسازیم، توان محاسباتی‌ افزایش می‌یابد‌؛ با یک لایه‌ی پنهان‌ [پرسپترون] می‌تواند هر تابع پیوسته را نمایش دهد و با دو لایه‌ی پنهان(پرسپترون چند لایه‌ای با دو لایه‌ی پنهان)‌ می‌تواند هر تابعی را نمایش دهد.