You are here

وقتی یک دسته بندی کننده کافی نیست

Error message

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in book_prev() (line 775 of /home/molavy/public_html/modules/book/book.module).

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

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


بیایید بیخیال حشرات باغ شویم و به توابع منطقی بولی نگاهی بیندازیم. اگر آن را تا حالا نشنیده اید. نگران نباشید. جرج بول یک فیلسوف و ریاضیدان و نام او را روی تابع های «و»(به انگلیسی AND) و «یا» (به انگلیسی OR) گذاشته اند.

تابع های منطقی بولی شبیه ساختار یک زبان هستند. اگر شما بگوید : هنگام غذا خوردن زمانی می توانی تکه گوشتت را بخوری که سبزی های غذا را خورده باشی «و» نان هم بخوری. بولی «و» زمانی درست است که هر دو شرط درست باشند.


بولی منطقی «و» یا همان AND اگر یکی از شرط ها یا هر دو برقرار نباشند، درست نیست. من سبزی جات را نخوردم. پس نمی‌توانم گوشت بخورم. نان نخوردم. پس نمی‌توانم گوشت بخورم. سبزی جات و نان خوردم پس میتوانم گوشت بخورم.
به همین ترتیب اگر بگوییم زمانی به پارک می‌رویم که آخر هفته باشد یا روزی که خسته باشیم باشد. بولی «یا» یا همان OR چه زمانی که آخر هفته باشد یا خسته باشیم درست است. اگر آخر هفته باشد و خسته باشیم چطور. باز هم درست است. پس اگر هر کدام از شرط ها یا هر دو آن‌ها برقرار باشد بولی «یا» درست است. مثل بولی «و» مجبور نیستیم که همه شرط ها برقرار باشد. اگر یکی هم برقرار باشد کافی است.

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

کامپیوتر ها معمولاً درستی را با عدد 1 نمایش می‌دهند و غلط را با عدد صفر(0) نمایش می دهند.
جدول زیر به صورت خلاصه عمل‌کرد تابع های «و»(AND) و «یا»(OR) را روی دو ورودی A و ‌‌‌‌B نشان می دهد.

 

ورودی A

ورودی ‌B

AND منطقی

OR منطقی

0

0

0

0

1

0

0

1

0

1

0

1

1

1

1

1

 

شما به وضوح می‌توانید ببینید، تابع AND تنها وقتی درست است که هر دو ورودی A و ‌‌B درست باشند. همینطور میبینید که تابع OR اگر یکی از ورودی های A و B  یا هر دو درست باشند درست است.

تابع های منطقی بولی در علوم کامپیوتر خیلی مهم هستند. در حقیقت کامپیوتر ها از مدار های الکتریکی ساخته شده‌اند که این تابع های منطقی را پیاده‌سازی می کنند. حتی عملیات های ریاضی در آنها نیز با ترکیب مدار های تابع های منطقی ساده پیاده‌سازی شده اند.

در نظر بگیرید از یک دسته بندی کننده ساده برای یادگیری از داده‌هایی که به صورت منطقی جمع آوری شده‌اند استفاده کنیم. این کار یک روش معمول و پرکاربرد در میان دانشمندان است که روابط بین بعضی مشاهدات را میخواهند استخراج کنند. برای مثال آیا مارالیا زمانی که باران میبارد  «و» دما بالاتر از ۳۵ درجه است بیشتر است. سؤالی دیگری با OR : آیا وقتی باران می‌بارد «یا» دما بیشتر از ۳۵ درجه است مالاریا وجود دارد؟  

در مطلب پیشتر گفته شده ما میتوانستیم کارهای خودمان را از طریق محاسبات عددی انجام بدهیم. اما  این کار را نکردیم. دلیل آن این است که اساس کار یکی است. در حقیقت شکل‌های مختلفی از این خط تقسیم وجود داشت که به خوبی کار می کرد. اما نکته اصلی این است که همه آن‌ها در فرم y=ax+b بودند و برای یادگیری تابع بولی AND کار استفاده می شدند.
خوب بیایید تابع بولی OR را به شکل مشابه ای ترسیم کنیم و به بررسی آن بپردازیم:

در اینجا فقط نقطه (0,0) قرمز است چون تنها جایی است که در آن هر دو A و B غلط هستند. هر ترکیب دیگری از A و ‌B نتیجه درست می دهد. خوبی نمایش تصویری در اینجا این است که نشان می‌دهد که یک دسته بندی کننده خطی می‌تواند بر روی تابع منطقی OR نیز به خوبی کار کند.
خوب میرسیم به تابع بولی بعدی که XOR نامیده می شود. یعنی حالتی که در آن خروجی هنگامی صحیح است که تنها ورودی A یا B درست باشند ولی هر دو با هم درست نباشند.
به عبارتی وقتی که هر دو ورودی غلط باشند یا هر دو ورودی درست باشند خروجی غلط است. 
جدول زیر این موضوع را نشان می‌دهد

 

 

ورودی A

ورودی B

XOR منطقی

0

0

0

1

0

1

0

1

1

1

1

0

 


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


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

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

 

 

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

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

Add new comment

انیمیشن پیام راشل کوری