۱۳۸۹ اردیبهشت ۲۴, جمعه

شبکه های عصبی مصنوعی Artificial Neural Networks

چکیده
مقدمه
آشنایی با شبکه های عصبی زیستی
معرفی شبکه های عصبی مصنوعی(ANNها)
مبانی شبکه های عصبی مصنوعی
توپولوژی شبکه
مقایسه ی مدل سازی کلاسیک و مدل سازی شبکه ی عصبی
فرآیند یادگیری شبکه
ایده ی اصلی شبکه های عصبی مصنوعی
مهم ترین تفاوت حافظه ی انسان و حافظه ی کامپیوتر
شبکه های عصبی در مقابل کامپیوترهای معمولی
معایب شبکه های عصبی مصنوعی
کاربردهای شبکه های عصبی مصنوعی


چکیده:

شبکه‌های عصبی مصنوعی از مباحث جدیدی است که دانشمندان علوم کامپیوتر به
آن علاقمند شده‌اند و برای پیشرفت هرچه بیشتر علوم کامپیوتر وقت و هزینه
بسیاری را صرف آن کرده و می‌کنند. این موضوع با ایده گرفتن از سیستم عصبی
بدن انسان و با هدف شبیه‌سازی هرچه بیشتر کامپیوتر به انسان شکل گرفت و
تا حال به خوبی پیشرفته است. از جمله کاربردهای این بحث می‌توان از
شناسایی الگوها, پردازش تصویر و رویت, هوش مصنوعی, کنترل رباتها و موارد
بسیار دیگر نام برد. ما در این مقاله پس از مقدمه به مسائل در خور
شبکه‌های عصبی مصنوعی و نیز کاربردهای آن خواهیم پرداخت, در ادامه
Perceptron ها را که یکی از مهمترین الگوریتم‌های شبکه‌های عصبی مصنوعی
می‌باشد معرفی می‌کنیم.

مقدمه:

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


تاریخچه:
شبکه‌های عصبی دهها سال است که جلب توجه می‌کنند وتاکنون راه حلهایی برای
استفاده از هوش بشری ارائه شده است. اولین نرون مصنوعی درسال 1943 توسط
نروفیزیولوژیست وارن‌مک‌کالوک و منطق دان والتر‌پیتز تولید شد.در دهه 60
به دلایلی که خارج از بحث این مقاله است مردم به‌سوی شبکه‌های عصبی
متمایل شدند و تنها در دهه 80 دانشمندان توانایی‌های واقعی شبکه‌های عصبی
را دیدند.

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

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

دندريتها که بصورت درخت گونه پخش هستند اطلاعات دريافتی بشکل سيگنال را
دريافت نموده و و آن را به هسته سلول هدايت ميکنند، يک عمل جمع ساده از
کل سيگنالها بسته به وزن و شدت هريک در هسته انجام ميگردد و نتيجه توسط
اکسون هدايت ميشود و بسته به شدت آن ممکن است پالس الکتريکی را ازسيناپس
با شدت بيشتر يا با شدت کمترعبور دهند و يا ممکن است با دليل ضعيف بودن
بار الکتريکی آن را عبور ندهند.

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


ساختار یک نرون مصنوعی

وقتی ورودی های ترکیب شده به حد آستانه ای خاصی برسند٬ سلول عصبی تحریک
شده و سیگنال خروجی تولید می کند. با مقایسه جواب خروجی شبکه با مقدار
مطلوب مورد نظر بردار خطا محاسبه شده و این بردار با استفاده از الگوریتم
های مختلف از آخر به سمت ابتدای شبکه پخش شده٬ به طوری که در سیکل بعد
خطا کاهش یابد.
انسان و سلول های عصبی مصنوعی- در جستجوی شباهت ها-چگونه مغز انسان می آموزد ؟
مسائل زیادی راجع به این که مغز چگونه خود را برای پردازش اطلاعات آموزش
می دهد، نا شناخته باقی مانده است بنابر این تئوری های فراوانی وجود
دارد. در مغز انسان یک سلول سیگنال ها را از دیگران از طریق یک گروه از
ساختار های ریز به نام dendrites جمع آوری می کند سلول عصبی جهش سریع
فعالیت الکتریکی را در طول یک پایه بلند و نازک که axon نامیده میشود ،
می فرستد که به داخل هزاران شاخه گسترش می یابد و کشیده می شود . در
انتهای هر شاخه ، ساختاری که synapse نامیده می شود این فعالیت را ازaxon
به اثرات الکتریکی تبدیل می کند که فعالیت یکaxon به صورت اثرات
الکتریکی فعال کننده یا غیر فعال کننده تبدیل می شود که این کار باعث
برانگیخته شدن یا آرام شدن سلول های عصبی مرتبط می شود. وقتی یک سلول
عصبی پیام های فعال کننده را در یافت می کند، که بطور قانع کننده و وسیعی
با پیام های ورودی غیر فعال کننده اش مقایسه شده باشد ،در این زمان این
سلول نیز یک جهش از فعالیت الکتریکی را به داخل axon خودش می فرستد.
بررسی سلولهای مغزی افراد:
تحقیق درباره سلولهای مغزی افراد و همچنین شناخت Neuron ها یا رشته‌های
مغزی وبیان یک راه نسبتا متفاوت که یک سیستم هوشمند را بنا می‌کند شروع
شد. مغز بشر متشکل از میلیونها نرون عصبی منحصر بفرد است واین رشته‌های
عصبی به اشکال و اندازه‌های مختلف تغییر می‌کنند.. هر نرون عموما یک هسته
دارد و یک‌سری سلولهای عصبی Axon (آکسون)ـ که علائم خروجی را به سلولهای
عصبی نرون دیگر حمل می‌کنندـ و Dendrite ها (شاخه‌های سلولهای عصبی).
علائم در سلولهای عصبی میان شاخه‌های سلولهای عصبی ونواحی خروجی جریان
دارند.
در اینجا برای حالت برانگیزش باید آشفتگی از یک حدی تجاوز کند که آستانه
یا سرحد نامیده می‌شود و پس از برانگیزش نرون‌ها پیامهایی برای نرون‌های
دیگر می‌فرستند و خود را برای دریافت و پاسخ به اطلاعات عمومی آماده
می‌کنند.

شبکه عصبی چيست؟
يک برنامه نرم افزاری يا تراشه نیمه هادی است که بتواند همانند مغز انسان
عمل نمايد، به گونه ای که:
الف- به مرور زمان و تعامل بیشتر با محيط، کارآزموده تر گردد.
ب-علاوه بر انجام محاسبات قادر به نتیجه گیری منطقی باشد.
ج- در شرايط جديد راهکار مناسب را ارائه دهد. (قابلیت تعمیم)
د-بتواند الگو ها را طبقه بندی کند.
ه-به اندازه کافی کوچک باشد تا از نظر فیزیکی واقع گرایانه باشد


شبکه‌های عصبی شبیه به مغز انسان اطلاعاتی را پردازش می‌کنند. شبکه‌ از
تعداد زیادی سلولهای عصبی(Neuron ها) تشکیل شده با پردازشی بسیار بزرگ و
به‌هم پیوسته که در حل موازی مسائل ویژه مشغول به کارند.
یادگیری شبکه‌های عصبی از طریق مثالهاست. آنها برای انجام یک کار خاص
برنامه‌ریزی نشده‌اند. مثالها باید با دقت بسیار بالایی انتخاب شوند والا
زمان مفید هدر خواهد رفت و یا حتی ممکن است شبکه به طور ناقص دایر شود و
در اینجا راهی برای فهمیدن اینکه سیستم معیوب است یا خیر وجود ندارد مگر
اینکه خطایی رخ دهد.
شبکه‌های عصبی مصنوعی یک ترکیبی از مجموعه نرون‌هاست و البته نرونهای
مصنوعی‌ای که بسیار شبیه به نرونهای زیستی کار می‌کنند. و بدین گونه است
که ورودیهای زیادی با وزنهای مختلف می‌گیرد و یک خروجی که به ورودی
وابسته است تولید می‌کند. نرونهای زیستی می‌توانند در حال برانگیزش باشند
یا نباشند. ( وقتی یک نرون برانگیخته می‌شود ضربه علائم خروجی آن مقداری
کمتر از 100 هرتز است)
شبکه‌های عصبی استفاده وسیعی در شناسایی الگوها دارند زیرا از خودشان
قابلیت آن را دارند که بطور عمومی به ورودی‌های غیر منتظره نیز پاسخ
دهند. در طول ساخت نرونها می‌آموزند که چگونه الگوهای ویژه گوناگون را
تشخیص دهند. اگر الگویی پذیرفته شود در حالی که در طول اجرا ورودی با
خروجی مرتبط نباشد، نرون از مجموعه‌ای از الگوهایی که سابقا آموخته
خروجیی را که شبیه به الگو می‌باشد وکمترین تفاوت را با ورودی دارد
انتخاب می‌کند. این روال عموما فراخوانی می‌شود.
مثال:
وقتی که ورودی نرون 1111 باشد چهار ورودی بر حسب برانگیزش مرتب شده‌اند و
وقتی ورودی‌های 0000 را داریم نرون برای برانگیزش مرتب نیست. قاعده عمومی
این است که نرونها مایلند برانگیخته شوند وقتی که ورودی‌ها 0111 ، 1011 ،
1101 ، 1110 یا 1111 باشند و در صورتی که ورودی آنها 1000 ، 0001 ، 0010
، 0100 یا 0000 باشند مایل به برانگیخته شدن نیستند.
شناسایی الگوهای پیچیده سطح بالا می‌تواند به وسیله شبکه‌ای از نرونها
انجام شود و بدین ترتیب نام آن را شبکه‌های عصبی مصنوعی گذاشتند. اکنون
شبکه‌های عصبی کاربردهای زیادی دارند(درمنطق وکلام و شناسایی عکسها)البته
شناسایی الگوهامی‌تواند به‌طور موفقیت آمیز بر روی کامپیوترهای عمومی
انجام شود. این شبکه‌های عمومی که برای شناسایی الگوها استفاده می‌شوند
Feed-Forward نامیده می‌شدند زیرا آنها یک بازخورد (Feed-Back) داشتند.
آنها به‌طور ساده ورودی‌ها را با خروجی‌ها می‌آمیختند. اما شناسایی
الگوها به تدریج کاملتر شد به‌طوریکه بر روی کامپیوترهای عمومی با سیستم
خاص خودشان به‌سختی انجام می‌شد پس برای شناسایی الگوها شبکه‌های
Feed-Forward کافی نبودند.
در شبکه‌های عصبی خروجی هر نرون به ورودی نرونهای مجاورش متصل شده است.
شبکه‌های عصبی نمی‌توانند معجزه کنند اما اگر به درستی استفاده شوند
نتایج شگفت‌انگیزی خواهند داشت.

مشخصات مسائل در خور شبکه‌های عصبی مصنوعی :

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


معرفی ANN ها:

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

در این حافظه یا شبکه ی عصبی node ها دارای دو حالت فعال(on یا 1)
وغیرفعال( off یا 0) اند و هر یال (سیناپس یا ارتباط بین node
ها)دارای یک وزن می باشد.یالهای با وزن مثبت ،موجب تحریک یا فعال کردن
node غیر فعال بعدی می شوند و یالهای با وزن منفی node متصل بعدی را غیر
فعال یا مهار(در صورتی که فعال بوده باشد) می کنند.


مبانی ANN ها:

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

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

مقایسه ی مدل سازی کلاسیک و مدل سازی شبکه ی عصبی:


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

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

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

FeedForward topology


فرآیند یادگیری شبکه:
وظیفه ی شبکه های عصبی یادگیری است.تقریبا چیزی شبیه به یادگیری کودک خردسال.

انواع آموزش شبکه:
یادگیری تحت نظارت(یا supervised ) :
با تمرکز روی یک موضوع خاص و ارائه ی مثالهای مختلفی از آن صورت می
گیرد .شبکه اطلاعات ورودی و مثال ها را تجزیه و تحلیل خواهد کرد به طوری
که پس از مدتی قادر خواهد بود یک نوع جدید از آن دسته مثال ها را که قبلا
هرگز ندیده بود شناسایی کند.
در الگوريتم يادگيري با ناظر مجموعه‏اي از زوج‏هاي داده‏ها به داده‏هاي
يادگيري موسوم هستند پس از اعمال ورودي X به شبكه عصبي خروجي حاصل از
شبكه y با مقدار ايده آل مقايسه شده و خطا براي تنظيم پارامتر هاي شبكه
نظير w محاسبه مي‏شود به گونه‏اي كه اگر دفعه بعد به شبكه همان ورودي X
اعمال شود خروجي شبكه به y همگرا شده باشد.
یادگیری بدون نظارت(یا unsupervised ) :
یادگیری سطح بالاتری است که کاربرد آن امروزه کمتر است. در يادگيري بدون
ناظر يا يادگيري خود سازمان‏ده (Self - Organized) بردار جواب مطلوب به
شبكه اعمال نمي‏شود. در واقع هنگامي كه تعداد لايه‏ها و نرون‏ها افزايش
مي‏يابد كار يادگيري در ا لگوريتم‏هاي با ناظر بسيار كند پيش‏مي‏رود و
اين ايراد اساسي اين دسته از الگوريتم‏هاست .
در الگوريتم‏هاي بدون ناظر جواب بدست آمده در حافظه بلند مدت ذخيره شده و
از همان ابتدا ورودي‏ها دسته‏بندي مي‏شوند و با استفاده از حافظه مشاركتي
بين آنها ارتباط برقرار مي‏شود.

ایده ی اصلی عملکرد شبکه های عصبی مصنوعی:
هر گره دارای دو وضعيت فعال و غيرفعال است(صفر يا يك) و هر يال نيز دارای
يك وزن میباشد . يالهای با وزن مثبت بين دو گره تا گره فعال ديگری را
تحريك میكنند و يالهای با وزن منفی بين دو گره، گره فعال ديگری را غير
فعال میسازند.
نحوه عملكرد شبكه بدين صورت است كه ابتدا يك گره به تصادف انتخاب میشود.
اگر يك يا بيشتر از همسايههای آن گره فعال بودند جمع وزندار يالهای منتهی
به آن گرهها حساب میشود. اگر اين جمع مثبت بود گره فعال میشود و در غير
اين صورت گره مذكور غيرفعال باقی خواهد ماند. سپس مجددا يك گره ديگر به
تصادف انتخاب شده و همين عمليات آنقدر تكرار میشود تا شبكه به يك حالت
پايدار برسد.
تز اصلی هاپفيلد : از هر حالت ابتدايی و با هر وزنی از يالها كه شروع
كنيم، شبكه در نهايت به حالت پايدار خواهد رسيد.


مهم ترین تفاوت حافظه ی انسان و حافظه ی کامپیوتر:

يكی از مهمترين تفاوتهای حافظه انسان با حافظه كامپيوتر در نوع آدرس دهی
اين دو نوع حافظه میباشد. در حافظه كامپيوتر اساس كار بر پايه آدرس
خانههای حافظه يا آدرس اطلاعات بر روی حافظه دائم میباشد. به عنوان مثال
برای دستيابی به يك تصوير يا متن خاص، بايد آدرس حافظه يا فايل مربوط به
آن تصوير يا متن را داشته باشيد. اما با داشتن خود تصوير يا متن
نمیتوانيد به سادگی آدرس حافظه مربوطه را بيابيد (البته به اين معنی كه
اين كار با يك قدم قابل انجام نيست، وگرنه میتوانيد تصوير يا متن مورد
نظر را با تمام موارد موجود در حافظه مقايسه كرده و در صورت تطبيق آدرس
را بيابيد. ناگفته پيداست كه انجام چنين كاری بسيار زمان بر و پر هزينه
میباشد).
اما به سازوكار همين عمل در ذهن انسان دقت كنيد. با ديدن يك تصوير ناقص
اغلب بلافاصله كامل آنرا به خاطر میآوريد يا با ديدن تصوير يك شخص سريعا
نام او را میگوييد، يا با خواندن يك متن سريعا تمامی مطالب مربوط به آن
را به ذهن میآوريد. در واقع ذهن انسان يك نوع حافظه آدرسدهی شده بر اساس
محتواست (Content Addressable Memory). همانگونه كه از اين نام مشخص است
در اين نوع حافظه، با دادن محتوای يك خانه حافظه، بلافاصله آدرس آن به
عنوان خروجی داده میشود.


شبکه های عصبی در مقابل کامپیوترهای معمولی:

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

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

مزایا و معایب ANN ها:

شبكه هاي عصبي توان بالقوه‏اي براي حل مسائلي دارد كه شبيه سازي آنها
استاندارد نرم افزاري مشكل است.
اين تكنيك قادر است در مواقعي كه داده ها در شرايط عدم اطمينان اعم از
آنكه داده‏هافازي باشند ويا به طور ناقص و توام با نويز دريافت شده باشند
جواب منطقي ارائه دهد
به دليل پيشرفت‏هاي تكنيكي از سرعت پردازش بالايي برخوردار شده است.
محاسبه‏گرهاي عصبي در مواقعي كه شرايط تغييرميكند بسيار منعطف هستند.
همچنين نگهداري آنها بسيار ساده است.
با وجود برتری هایی که شبکه های عصبی نسبت به سیستم های مرسوم دارند،
معایبی نیز دارند که پژوهشگران این رشته تلاش دارند که آن ها را به حداقل
برسانند، از جمله:
قواعد یا دستورات مشخصی برای طراحی شبكه جهت یك كاربرد اختیاری وجود ندارد.
در مورد مسایل مدل‌سازی، نمی‌توان صرفاً با استفاده از شبكه عصبی به
فیزیك مسأله پی برد. به عبارت دیگر مرتبط ساختن پارامترها یا ساختار شبكه
به پارامترهای فرآیند معمولاً غیرممكن است.
دقت نتایج بستگی زیادی به اندازه مجموعه آموزش دارد.
آموزش شبكه ممكن است مشكل یا حتی غیرممكن باشد.
پیش‌بینی عملكرد آینده شبكه ( عمومیت یافتن ) آن به سادگی امكان‌پذیر
نیست.یادگیری انطباق پذیر: قابلیت یاد گیری نحوه انجام وظایف بر پایه
اطلاعات داده شده برای تمرین و تجربه های مقدماتی .
سازماندهی توسط خود: یک ANN می تواند سازماندهی یا ارائه اش را ، برای
اطلاعاتی که در طول دوره یادگیری در یافت می کند، خودش ایجاد کند.
عملکرد بهنگام(Real time ) : محاسبات ANN می تواند بصورت موازی انجام
شود، و سخت افزارهای مخصوصی طراحی و ساخته شده است که می تواند از این
قابلیت استفاده کند.
تحمل اشتباه بدون ایجاد وقفه در هنگام کد گذاری اطلاعات : خرابی جزئی یک
شبکه منجر به تنزل کارایی متناظر با آن می شود اگر چه تعدادی از قابلیت
های شبکه ممکن است حتی با خسارت بزرگی هم باقی بماند.

معرفي نرم افزارهاي پژوهشي: شبكه هاي عصبي مصنوعي:

انسان امروز همواره در تلاش است تا با طراحي سيستمهاي جديد، هر چه بيشتر
به دستيابي به شبكه هاي عصبي مشابه مغز و سيستم عصبي انسان نزديكتر شود.
يكي از پيشرفتهاي نوين در اين زمينه، طراحي شبكههاي عصبي مصنوعي (ANN)
است.
ساختار كلي اين شبكه ها، مشابه شبكه هاي نوروني و سيناپسي انسان است،
بدين نحو كه مشابه با سيناپس عصبي انسان، اين شبكه ها نيز از تعداد
بيشماري سيناپس تشكيل يافته است كه تجزيه و تحليل اطلاعات ورودي به اين
سيناپسها، درآنها به انجام رسيده و نتايج آن به سيناپس هاي بعدي منتقل
ميگردد.
بر اين اساس، يك شبكه عصبي مصنوعي ساده داراي سه جزء يا لايه است:
1- لايه ورود اطلاعات (Input Layer):
در اين لايه، اطلاعات اوليه كه همان مقادير مربوط به متغيرهاي مستقل و
وابسته طرح ميباشند، وارد شبكه ميگردند.
لايه يا لايه هاي محاسباتي (Analyze Layer):
اين لايه كه بر مبناي پيچيدگي تحليلها، تعداد آنها نيز افزايش مييابد،
وظيفه ايجاد روابط منطقي ميان متغيرهاي مستقل و وابسته اوليه و يافتن
فرمول بين اين متغيرها را بر عهده دارد.
3- لايه خروجي (Output Layer)
در اين لايه، رابطه يا فرمول بين متغيرهاي مستقل و وابسته اوليه ارائه ميشود.
در واقع نرم افزار جديد از طريق سيستم فوق، ابتدا با دريافت نمونهاي
محدود از متغيرهاي مستقل و وابسته اوليه، رابطه منطقي را ميان آنها كشف
ميكند و در مرحله بعد، تنها با ارائه سري متغيرهاي مستقل، مقدار متغيرهاي
وابسته را با دقت بسيار بالا پيشبيني و ارائه مينمايد.

در اين قسمت با بيان مثالي علمي، نحوه كاركرد شبكه عصبي مصنوعي را شرح
ميدهيم: فرض كنيد ميخواهيم رابطه ميان مقدار قند خون و درصد گرفتگي عروق
كرونر قلب را بررسي نمايم.
درابتدا تعداد محدودي از مقادير متغيرهاي مستقل (مقدار قند خون) و وابسته
(درصد گرفتگي) را وارد شبكه ميكنيم:

شبكه عصبي، پس از دريافت داده ها، به بررسي رابطه ميان دو نوع متغير
ميپردازد و در مدت زماني بسيار بسيار اندك (چند ثانيه) رابطه منطقي ميان
متغير مستقل و وابسته را با دقتي بسيار بالا كشف ميكند.
در اين مرحله و پس از كشف فرمول ميان متغيرها، با ارائه هر مقدار از قند
خون به شبكه، درصد گرفتگي رگ كرونر محاسبه و پيشبيني ميشود.


کاربردهای شبکه های عصبی مصنوعی:

امروزه شبكههای عصبی در كاربردهای مختلفی نظير مسائل تشخيص
الگو(Pattern Recognition) كه خود شامل مسائلی مانند تشخيص خط(Character
Recognition).شناسايی گفتار(Speech Recognition)، پردازش تصوير(Image
Processing) و مسائلی ازاين دست میشود و نيز مسائل
دستهبندي(Classification) مانند دستهبندی (Classification Problems)متون
و يا تصاوير،به كار میروند.دركنترل يا مدلسازی سيستمهايی كه ساختار داخلی
ناشناخته يا بسيار پيچيدهای دارند نيز به صورت روز افزون از شبكههای عصبی
مصنوعی استفاده میشود . به عنوان مثال میتوان در كنترل ورودی يك موتور از
يك ANN استفاده نمود كه در اين صورت شبكه عصبی خود تابع كنترل را ياد
خواهد گرفت.
پردازش تصویر و دید( Image processing and computer vision )
پردازش علائم( Signal processing ): شامل ریخت‌شناسی و تجزیه و تحلیل
علائم مربوط به زمین‌لرزه‌ها و…
شناسایی الگوها( Pattern recognition ): شامل شناسایی چهره، اثر انگشت،
تشخیص نوع صدا و نوع صحبت کردن، دستخط و …
پزشکی( Medicine ): شامل تجزیه و تحلیل و تشخیص علائم دستگاه ضربان‌نگار
قلب (الکتروکاردیوگرافیک)، تشخیص امراض گوناگون و …
سیستم‌های نظامی( Military systems ): شامل ردیابی مین‌های زیردریایی،
دسته‌بندی صداهای نابه‌هنجار و مخل در رادارها و شناسایی گوینده رزمی.
سیستم‌های تجاری( Financial systems ): شامل تجزیه و تحلیل انبار
مغازه‌ها، ارزیابی واقعی املاک و …
برنامه‌ریزی، کنترل و جستجو( Planning, control, and search ): شامل
اجرای موازی مسائل و کنترل رباتها.
هوش مصنوعی( Artificial intelligence ): شامل برخی سیستم‌های طبی و اجرای
سیستم‌های خبره.
سیستم‌های قدرت( Power systems ): شامل برآورد وضعیت سیستم، ردیابی سریع
و دسته‌بندی ردیابی، ردیابی خطا و ترمیم آن، پیش‌بینی و برآورد تخمین
امنیت

مراجع ومنابع:
1.Why neural networks?
written by Dimitrios Siganos
2.Artificial neural networks
written by Robert J.Schalkoff
3.http://www.wikipedia.com/
4.http://www.dbase.irandoc.ac.ir/

هیچ نظری موجود نیست: