تجزیه و تحلیل داده ها به وسیله شبکه های عصبی مصنوعی
از حدود 1940 بطور همزمان اما جداگانه ، از سویی نوروفیزیولوژیستها سعی میکردند سیستم یادگیری و تجزیه و تحلیل مغز را کشف کنند و از سویی ریاضیدانان تلاش می کردند تا مدل ریاضی بسازند که قابلیت فراگیری و تجزیه تحلیل عمومی مسائل را دارا باشد. از آن زمان ، بارها این اتفاق افتاد که ریاضیدانان یافته های نوروفیزیولوژیستها را پیاده سازی کردند، بدون این که بدانند چرا، و در عمل مشاهده کردند که سیستم پیاده شده کارایی شگفت انگیز سیستم طبیعی را دارد. پس از آن توانستند منطق زیربنایی سیستم طبیعی را درک کنند. اگر چه از همان ابتدا، ریاضیدانان توانسته بودند مدل ریاضی یک سلول عصبی یا نورون را بسازند، اما تا حدود 1974 که دانش مربوط به نوع اتصال این واحدهای شبه نورونی به یکدیگر تکامل لازم را نیافته بود. امروزه برنامه های کاربردی متعددی دردسترس هستند که با این روش کار میکنند. اگر چه کاربرد این برنامه ها بویژه برای افراد عادی کمی مشکل است، اما محققین روز به روز بیشتر و بیشتر آنها را به کار می گیرند. برای تجزیه و تحلیل یک سیستم پیچیده بوسیله روش شبکه های عصبی، نیاز به دانش زیادی درباره سیستم مورد مطالعه نمی باشد، چون عمل تجزیه و تحلیل و یادگیری در مغز شبکه اتفاق می افتد نه در مغز محقق، اما به هر حال بهره گیری از دانش کلی درباره طرز کار این شبکه ها برای کاربران آنها ضروری است، چرا که تنظیمات ساده و کلی در این برنامه ها وجود دارند که آگاهی از آنها برای ساختن یک مدل موفق ضروری است.
شبکه های عصبی مصنوعی در واقع مثلثی هستند که 3 ضلع مفهومی دارند: 1- سیستم تجزیه و تحلیل داده ها، 2- نورون یا سلول عصبی 3- شبکه یا قانون کار گروهی نورونها. در یک تعریف کلاسیک، هایکین می گوید: شبکه عصبی عبارت است از مجموعه ای عظیم از پردازشگرهای موازی که استعداد ذاتی برای ذخیره اطلاعات تجربی و بکارگیری آن دارند و این شبکه دست کم از دو بابت شبیه مغز است: 1- مرحله ای موسوم به یادگیری دارد 2- وزن های سیناپسی جهت ذخیره دانش به کار می روند.
وظیفه شبکه های عصبی یادگیری است. تقریبا چیزی شبیه یادگیری یک کودک خردسال. یادگیری در شبکه های عصبی رایج به شکل Supervised یا یادگیری تحت نظارت است. والدین تصاویر حیوانات مختلف را به کودک نشان می دهند و نام هرکدام رابه کودک می گویند. ما روی یک حیوان، مثلا سگ، تمرکز می کنیم. کودک تصاویر انواع مختلف سگ را می بیند و در کنار اطلاعات ورودی (تصاویر و صدا) برای هر نمونه، به او گفته می شود که این اطلاعات مربوط به یک نوع "سگ" هست یا خیر. بدون اینکه به او گفته شود، سیستم مغز او اطلاعات ورودی را تجزیه و تحلیل می کند و به یافته هایی در زمینه هر یک از پارامترهای ورودی از قبیل "رنگ، اندازه، صدا، داشتن پنجه یا سم یا شاخ" می رسد. پس از مدتی او قادر خواهد بود یک "نوع جدید" از سگ را که قبلا هرگز ندیده است شناسایی کند. از آنجایی که در مورد هر نمونه جانور در مرحله یادگیری به کودک گفته شده که آیا سگ هست یا خیر، این نوع یادگیری، تحت نظارت نامیده می شود. نوع دیگر یادگیری یعنی یادگیری بدون نظارت یا Unsupervised هم توسط شبکه های عصبی شبیه سازی شده است و کاربردهای کمتری دارد.
مقایسه مدلسازی کلاسیک در مقایسه با مدلسازی شبکه عصبی:
الف: سناریوی مدلسازی کلاسیک
جهت درک ویژگیهای مدلسازی بکمک شبکه های عصبی، لازم است که ابتدا مدلسازی کلاسیک را تجسم کنیم.: پارامترهای A,B,C,D سیستم مارا تعریف می کنند، این پارامترها می توانند غلظت مواد شیمیایی و پارامترهای فیزیکی فرمولاسیون باشند. ممکن است پارامترهای فیزیولوژیک یا پاتولوژیک وضعیت بیماران باشند. در کنار هر سری پارامتر که یک نمونه (فرمول شکل دارویی یا بیمار یا هر نمونه دیگر) را تعریف می کند یک پاسخ R وجود دارد که می تواند پایداری فرمول دارویی یا پارامتری نمایانگر وضعیت بیمار باشد.
مدلسازی کلاسیک از نخستین قدم خطای بزرگی را مرتکب می شود که فقط در سیستمهای ساده (خطی یا نزدیک به خطی) قابل صرف نظر است. نخستین قدم در روش کلاسیک برای بررسی داده ها بررسی شاخصهای تمایل به مرکز (میانگین،...) و شاخصهای پراکندگی (انحراف معیار، ...) است. از این مرحله به بعد در روش کلاسیک کاری با تک تک نمونه ها نداریم و اهمیت فردی آنها از بین می رود. بعنوان مثال ممکن است مقدار پارامتر A (مثلا غلظت ماده شیمیایی A) در دمای صفر تا 15 درجه (دما پارامتر B است) روی پایداری دارو یا R تاثیر مثبت داشته باشد، و از 15 درجه به بالا تاثیر منفی داشته باشد، به این ترتیب نگاه همزمان به پارامترهای A و B برای درک تاثیر آن دو بر روی R ضروری است، در حالیکه ما با گرفتن میانگین (یا دیگر مشتقات آماری) از کل ستونهای A وB و سایرین، اثر همراهی مقادیر A و B را از صورت مساله پاک کرده ایم. در هیچ یک از روشهای کلاسیک مدلسازی با داده های فردی (تک تک نمونه ها) کاری نداریم و این یک اشکال مهم است. در واقع روش کلاسیک با عملی شبیه به هوموژن کردن یا آسیاب کردن داده ها، پیچیدگی روابط آنها را محو می کند و به این دلیل از کشف این پیچیدگیها باز می ماند.
در نهایت نیز، در روش کلاسیک ، شما یک معادله سیستم خواهید داشت که داده های جدید را بدون در نظر گرفتن اثر همراهی پارامترهایش با هم استفاده می کند و مجددا این خطا در پیشگویی اثر R توسط سیستم شما تاثیر خواهد داشت. به این ترتیب سیستم کلاسیک در "استخراج" معنی از داده ها ضعیف و با بازده پایین عمل می کند و در بسیاری از موارد از کشف روابط بین داده ها ناکام می ماند.
اگر می توانستیم سیستمی داشته باشیم که با اهمیت دادن به فردفرد مثالها تجزیه و تحلیل کند و نیز بدون پیشداوری در مورد شکل تابع هر پارامتر (خطی بودن و یا شکل تابع غیر خطی) آن را ذخیره و ارزیابی کند، چنین سیستمی می توانست نتایج بیشتری را از عمق داده ها بیرون بکشد.
ب: سناریوی مدلسازی شبکه عصبی:
در یک شبکه عصبی نمونه،اطلاعات و پارامترهای ورودی، هرکدام به شکل یک سیگنال الکتریکی تحریک به کانالهای ورودی مدل ریاضی سلول عصبی وارد می شوند. مدل ریاضی یک سلول عصبی را یک Perceptron می نامند. هر یک از کانالهای ورودی (شبیه اتصالات دندریتها) دارای یک ضریب عددی هستند که ((وزن سیناپسی)) نامیده می شود. شدت تحریک الکتریکی در این ضریب ضرب می شود و به جسم سلولی می رسد. اگر مجموع تحریکات رسیده شده به جسم سلولی کافی باشد، نرون شلیک می کند و در مسیرهای خروجی (شبیه آکسونها) جریان الکتریکی ثابتی را ایجاد می کند. تحریکات لایه ورودی سلولها به یک یا چند لایه واسط می رود که به نامه لایه های مخفی (Hidden Layers) موسوم هستند. ادامه جریان تحریکات در این لایه ها (توسط همان وزنهای سیناپسی) طوری هدایت می شود که پیچیدگیهای تاثیرات جریان ورودی را شبیه سازی می کند. سپس تحریکات به لایه خروجی می روند که هدف نهایی ما است. اگر هدف شبکه عصبی پیشگویی کمی باشد، مجموع شدت تحریکات آخرین عصب خروجی، آن عدد خواهد بود. اگر هدف شبکه عصبی طبقه بندی (Classification) باشد، فعالیت یا خاموش بودن نرونهای لایه آخر نمایانگر این امر خواهد بود، مثلا شلیک نرون خروجی نشان دهنده حضور بیماری و خاموش بودن آن نشانه سلامت است. سیستم شبکه عصبی در فرایند یادگیری طوری وزنهای سیناپسی را تغییر می دهد که بتواند با هر سری تحریکات ورودی (یعنی داده های هر نمونه) جریان خروجی مناسب (یعنی همان پاسخ R) را ایجاد کند. چگونگی ریاضی این تغییر وزنها ظریفترین بخش مکانیسم عملکرد شبکه است که بعدها درباره آن بحث خواهیم کرد.
طرز کار مدل سلول عصبی :
مدل ریاضی یک سلول عصبی که از روی الگوی ریاضی آن ساخته شده است Perceptron نامیده می شود. خطوط ورودی (Input) سیگنالهای تحریکی یا مهاری را به جسم سلولی می آورند که همان پارامترهای تعریف کننده سیستم هستند. مثلا فرض کنیم که غلظت یک ماده 0.6 mol/lit است ، این عدد یکی از پارامترهای تعریف کننده نمونه دارویی ما است، پس این پارامتر بعنوان یک سیگنال الکتریکی با شدت 0.6 به یک کانال ورودی می رود. در ابتدای هر کانال ورودی یک ضریب عددی وجود دارد که شدت تحریک در این عدد ضرب می شوند و حاصل آن که یک Weighted Input نامیده می شود اگر مثبت باشد یک سیگنال تحریکی و اگر منفی باشد یک سیگنال مهاری بر جسم سلولی است. میزان کلیه این سیگنالهای تحریکی یا مهاری که از ورودی های مختلف به جسم سلولی می رسند با هم بصورت خطی جمع می شود (Linear Combination of Weighted Inputs). اگر این حاصل جمع از میزان آستانه یا Threshold کمتر باشد سلول عصبی خاموش می ماند، و در غیر این صورت سلول شلیک میکند (Fire) و جریان الکتریکی ثابتی در خروجی (یا خروجی ها) ایجاد می کند. در واقع خروجی Perceptron معادله ریاضی زیر تعیین می شود:
xi*wi>Threshold output =1
xi*wi
که در آن xi سیگنال ورودی شمارهi و wi وزن سیناپسی مربوط به آن ورودی است. به این ترتیب مقادیر خاصی وزن های سیناپسی می توانند کاری کنند که سلول عصبی ما روی ورودی های آنالوگ (عددی) همان عملیات منطقی را انجام دهد که یک دروازه منطقی بر روی داده های رقمی (دیجیتال = صفر یا یک) انجام می دهد. به همین ترتیب با دستکاری وزنهای سیناپسی می توان دروازه های منطقی AND و NOT را هم ایجاد کرد. عملیات منطقی پیچیده نیاز به دروازه های دیگری از جمله XOR یا Exclusive OR دارد، این دروازه ها توسط یک سلول قابل شبیه سازی نیستند اما ترکیبی از سلولها می توانند آنها را شبیه سازی کنند.
در عمل تابع ریاضی جسم سلولی نرون تابع کاملا دیجیتال با خروجی 0 یا 1 نیست. این تابع می تواند تابع سیگموئید با یا تابع تانژانت هایپربولیک باشد، و عملا ثابت شده که هر تابع غیر خطی دیگری می تواند کم و بیش جایگزین آن شود، از این رو برنامه های شبیه سازی ANN معمولا انتخاب آن را به عهده کاربر می گذارند. از این تابع با نامهای Active Function, Step Function, Nodal Function نیز یاد می شود.
طرز کار شبکه عصبی:
از بهم پیوستن سلولهای مدل عصبی، مدل شبکه عصبی (Artificial Neural Network) بوجود می آید. وضعیت نسبی سلولها در شبکه (تعداد و گروه بندی و نوع اتصالات آنها) را توپولوژی شبکه می گویند. توپولوژی در واقع سیستم اتصال سخت افزار نورونها به یکدیگر است، که توام با نرم افزار مربوطه (یعنی روش ریاضی جریان اطلاعات و محاسبه وزنها) نوع عملکرد شبکه عصبی را تعیین می کنند. در این توپولوژی یک لایه ورودی وجود دارد که اطلاعات را دریافت می کند، تعدادی لایه مخفی وجود دارند که اطلاعات را از لایه های قبلی می گیرند و در نهایت یک لایه خروجی وجود دارد که نتیجه محاسبات به آنها می رود و جوابها در آن قرار می گیرند. هر سلول در هر لایه به کلیه سلولهای لایه مجاور بعدی متصل می شود. اتصال به خود سلولها، به لایه قبلی، و پرش اتصالات در طول لایه ها مجاز نمی باشد. این توپولوژی به نام Feed forward معروف است زیرا جریان اطلاعات همیشه از ورودی به سوی خروجی است. بین 90 تا 95% کاربردهای شبکه های عصبی امروزی مربوط به این توپولوژی است.
در ابتدا، وزنهای سیناپسی ، مقادیر اتفاقی (راندوم) هستند. علت این مسئله به روش محاسبه وزنها در سیستم NN بر می گردد، که یک روش Iterative یا مبتنی بر تکرار است. فرض کنید که می خواهیم معادله زیر را حل کنیم:
x4+x3+15.5x2+ex+2sin(x) =7.24
زمانی که سرعت محاسبات بالا است،می توانیم یک راه حل کلی و ساده برای حل این معادله یا هر معادله دیگری پیدا کنیم بطوریکه هیچ کاری با حل جبری این معادله و معادلات دیگر نداشته باشیم. کافی است یک مقدار دلخواه برای X فرض کنیم و آن را در معادله قرار دهیم و جواب معادله را حساب کنیم. اگر تساوی بر قرار بود، مقدار فرض شده پاسخ معادله است. در غیر این صورت آنقدر آن را کم و زیاد می کنیم تا تساوی برقرار شود یا اینکه با خطای قابل قبولی به جواب نزدیک شویم. این روش حل معادله را روش مبتنی بر تکرار یا Iterative می گویند. همان طور که دیدیم، در این روش به یک مقدار حدسی اولیه نیاز داریم. این همان وزنهای اتفاقی سیناپسی هستند که در ابتدای کار با سیستم ANN استفاده می شوند.