شبكه عصبي
در مورد شبکه های عصبی چیزی شنیدید؟ این شبکه ها چیزی نیستند جز چند تا ماتریس که می تونند یاد بگیرند و تصمیم گیری کنند. از این شبکه ها می تونید در کار هایی که از یک الگوریتم دقیق پیروی نمی کنند استفاده کنید پس ادامه مطلب رو بخونید
مقدمه.
پياده سازی ويژگی های شگفت انگيز مغز انسان در يک سيستم مصنوعی از ديرباز وسوسه انگيز و مورد توجه بود است. برای افرادی که با مبانی شبکه های عصبی کمتر آشنا هستند، ممکن است پاسخ به سئوالاتی نظير ذيل جالب باشد.
شبکه عصبی چيست؟
چرا از شبکه عصبی استفاده ميشود؟
رويای جايگزينی ويژگی های مغز در يک سيستم مصنوعی چقدر ممکن گرديده و در چه زمينه هايي از رشته تحصيلی ما بکارگرفته شده است؟
مراحل اصلی ايجاد يک شبکه عصبی کدامند؟
و شايد ده ها سئوال جذاب ديگر مطرح گردد. هدف از اين نوشتار معرفی بسيار اجمالی شبکه های عصبی و آشنايي با مبانی آن است. بديهی است ايجاد يک شبکه عصبی با توجه به ماهيت مسئله، نياز به حوصله و صرف وقت بيشتر برای کسب دانش اصول معماری و آموزش شبکه دارد.
2. شبکه عصبی چيست؟
يک برنامه نرم افزاری يا تراشه نیمه هادی است که بتواند همانند مغز انسان عمل نمايد، به گونه ای که:
الف- به مرور زمان و تعامل بیشتر با محيط، کارآزموده تر گردد.
ب-علاوه بر انجام محاسبات قادر به نتیجه گیری منطقی باشد.
ج- در شرايط جديد راهکار مناسب را ارائه دهد. (قابلیت تعمیم).
3. چرا شبکه عصبی
علی رغم آنکه نرم افزارهای موجود بخوبی محاسبات ساده و پيچيده را انجام می دهند و برای تصميم گيری در حيطه های مختلف به مديران کمک می کنند، سئوال آنست که چرا رویکرد برنامه نویسی و طراحی سخت افزار باید مطابق الگو و عملکرد مغز انسان متحول شوند؟
هرچند امروزه فنآوری های طراحی، ساخت و توليد رايانه ها و نرم افزارها پيشرفت قابل توجهی نموده است، اما به دلايل ذيل بايد در منطق طراحی و ساخت رایانه ها و همچنين نرم افزارهای موجود متحول گردد:
افزايش سرعت
برنامه ای برای تشخيص چهره يک فرد را با ساختار رايانه ها و نرم افزارهای موجود در نظر بگيريد:
– به طور یقين برنامه شامل حلقه هايی است که ده ها بار بايد بطور سریال و پی در پی تکرار شود.
– در هر تکرار خصوصیت خاصی از صورت را ذخیره نموده و با الگو مقایسه نماید.
– بعد از تست کلیه خصوصیات، چهره را تشخیص دهد.
سلسله عمليات مزبور، بارها تکرر شده و مدتها وقت دستگاه را ميگيرد، اما آيا تشخيص چهره توسط مغز انسان نيز چنين است. در سيستم مغز، در آن واحد ده ها واحد پردازش (که به نرون موسوم است) در عصب بينايی بطور موازی بکار می افتد و بدليل پردازش موازی ( و نه پی در پی) در زمان بسيار کوتاه چهره تشخيص داده ميشود.
نتيجه آنکه : تحول در منطق برنامه نويسی به گونه ای که بجای پردازش سريال، پردازش موازی جایگزین شود، در آينده طراحی رايانه ها بايد مورد توجه قرار گيرد.
حساسيت بالا به رخداد اشتباه
بروز اشتباه در فرمت و علائم برنامه نویسی منجر به اتلاف ساعتها وقت در ردیابی، شناسایی و اصلاح برنامه ميگردد. همچنين رخداد اشتباه در منطق برنامه اعم از آنکه یک زیر برنامه یا قسمتی از آن درست کار نکند، منجربه آن خواهد شد که نتیجه حاصله کاملا نادرست گردد، در حالی که عدم عملکرد صحيح قسمتی از نرون ها منجر به از کارافتادگی کامل مغز نميگردد و امکان اتخاذ تصميم صحيح در اين حالت نيز وجود دارد.
رایانه ها و نرم افزارهای موجود قادر نيستند از تجربيات گذشته استفاده نمايند.
بازبينی و به هنگام نمودن برنامه های نرم افزاری در دوره های زمانی مختلف اجتناب ناپذير است، در حالی که مغز بطور پيوسته در حال يادگيری و انطباق با محيط است. صرف وقت زياد برای بازبينی و اصلاح دوره ای سیستم های موجود رايانه ای ممکن است منجر به بازيابی و سلامت سيستم نگردد.
عدم ارائه پاسخ مناسب در شرایط جديد
با تغيير وروده های برنامه های نرم افزاری، از آنها انتظار نميرود پاسخی ارائه دهند، در حالی که مغز ممکن است علی رغم نداشتن تجربه ای مشخص، هنگاميکه در شرايط جديد قرار ميگيرد، پاسخ مناسبی ارائه دهد.
نتيجه:
ساختار سخت افزارها و منطق نرم افزارها باید با رويکرد جديدی مبتنی بر مغز انسان بازبينی و اصلاح شوند. برای اين منظور لازم است ساختار مغز مطالعه شود.
4. رويای جايگزينی ويژگی های مغز در يک سيستم مصنوعی چقدر ممکن گرديده ؟
در حال حاضر بسياري از سيستمها در قالب هوش مصنوعي و شبكههاي عصبي شبيهسازي شدهاند اما مانع اصلي آنست كه گرچه هريک از نرونهاي بيولوژيكي به تنهايي در مقايسه با نرونهاي مصنوعي كه توسط مدارهاي الكتريكي ساخته ميشوند بسيار كندتر هستند، اما از آنجا که در نرون های بيولوژيکی دسته يا دسته هايي از نرون ها بطور همزمان بکار مافتند، عملكرد مغز بسيار سريعتر است. امروزه مدارهای خاصی با ساختار عملکرد موازی طراحی ميگردد که سرعت آن ها ده ها برابر بيش از رايانه هاي پيشرفته فعلی است. اما هنوز از نظر سرعت با عملکرد مغز فاصله بسياری وجود دارد. ساير خصوصياتی که در بند سوم ذکر گرديد تا حدود زيادی برآورده شده است. [1]
5. بررسی اجمالی ساختار مغز
همانند بسياری از اختراعات که الهام گرفته از طبيعت ميباشد، برای شبيه سازی سيستم مزبور نيز، ساختار مغز مورد تحليل واقع شد. در سال 1911 Segal نرون را کشف نمود و بر اساس در دهه 40 ميلادی يعنی حدود 65 سال قبل اولين شبکه عصبی توسط Culloch و Pitts طراحی شد. شبکه مزبور قادر به محاسبه توابع منطقی بود. امروزه حداقل بيش از 50 نوع شبکه عصبی طراحی گرديده است که در علوم مختلف از جمله مهندسی صنايع کاربرد بسياری دارند که در قسمت ششم به آن پرداخته خواهد شد.
نرون کوچکترين واحد مستقل پردازش اطلاعات است که متشکل از دندريت، اکسون است که با فاصله های کوچک موسوم به سيناپس از يکديگر جدا ميشوند.
دندريتها که بصورت درخت گونه پخش هستند اطلاعات دريافتی بشکل سيگنال را دريافت نموده و و آن را به هسته سلول هدايت ميکنند، يک عمل جمع ساده از کل سيگنالها بسته به وزن و شدت هريک در هسته انجام ميگردد و نتيجه توسط اکسون هدايت ميشود و بسته به شدت آن ممکن است پالس الکتريکی را از سيناپس با شدت بيشتر يا با شدت کمتر عبور دهند و يا ممکن است با دليل ضعيف بودن بار الکتريکی آن را عبور ندهند.
با این ديد اجمالی از نحوه عملکرد نرون، بايد سيستمی طراحی گردد که حاوی تعدادی ورودی بوده که بسته به اهميت هريک آنها را با يکديگر جمع ساده جبری نمايد و توسط يک تابع موسوم به تابع تبديل انان را به نرون های ديگر ارسال نمايد.
1. طراحی سيستم
شکل ذيل الگويي از يک واحد پردازش شبکه عصبی با توجه به نحوه کارکرد يک نرون، ارائه ميدهد. همانگونه که مشاهده ميگردد، اکسون را ميتوان به خروجی، وزن را به شدت بار و ورودی ها را به دندريت تشبيه نمود.
بنابراين اجزاي يك شبكه عصبي عبارتند از:
ورودي ها:
وروديها كه بابردار X نشان داده شدهاند ميتوانند خروجي ساير لايهها بوده و با آنكه به حالت خام در اولين لايه و به صورتهاي ذيل باشد:
الف - دادههاي عددي و رقمي
ب) متون ادبي، فني و …
ج) تصوير و يا شكل
مثال : در تصميمگيري اعطاي وام ورودي بردار X ميتواند شامل سه متغير: سطح درآمد، سن و ميزان اعتبار متقاضي باشد.
بردار وزن
ميزان تاثير ورودي xi بر خروجي y توسط مشخصه وزن اندازهگيري ميشود. به طور مثال به هنگام اعطاي وام اهميت و تاثير درآمد متقاضي و يا سن وي توسط مولفه وزن آنها بر اتخاذ تصميم برآورد ميشود. Wi ها قابل تنظيم بوده و براساس تابع تبديل و نوع الگوريتم يادگيري ( كه در ادامه به توضيح آنها پرداخته شده است.) تعيين ميشوند.
v تابع جمع
در شبكههاي تك نروني ، تابع جمع در واقع خروجي مسئله را تا حدودي مشخص ميكنند و در شبكههاي چند نروني نيز تابع جمع ميزان سطح فعاليت نرون j در لايههاي دروني را مشخص ميسازد.
تابع تبدبل
بديهي است كه تابع جمع پاسخ مورد انتظار شبكه نيست، به طور مثال به هنگام اعطاي وام تابع جمع يك عدد خواهد شد كه بايد به پاسخ بلي يا خير بيان گردد و يا آنكه ارتباط بين سطح داخلي شبكه و جواب لزومآ خطي نيست و ميتواند به شكل غير خطي باشد. بنابراين تابع تبديل عصوي ضروري در شبكههاي عصبي محسوب ميگردد. انواع و اقسام متفاوتي از توابع تبديل وجود دارد كه بنا به ماهيت مسئله كاربرد دارند برخي از آنها عبارتند از:
توابع تبديل در شبكههاي عصبي چند لايه (در ذيل توضيح داده خواهدشد) ميتوانند منحصر به فرد بوده و با يكديگر متفاوت باشند.
خروجي
منظور از خروجي، پاسخ مسئله است.
1. شبكههاي عصبي چند لايه
در شبكههاي تك لايه درجه آزادي براي تنظيم پارامترهاي شبكه نظير w اندك بوده و توانايي تقريب مسئله پائين ميآيد. در حالي كه در شبكه هاي چند لايه با توجه به درجه آزادي مناسب براي تنظيم پارامترها ميتوان توانايي شبكه را بالا برد. به طور مثال شبكههاي پيشخور دو لايه با توابع زيگموئيد در لايه اول قادرند توابع بسيار زيادي را با دقت دلخواه تقريب بزنند در حالي كه شبكههاي عصبي تك لايه از چنين توانايي برخوردار نيستند.
ميگردد. در واقع تعداد وروديها و خروجيهاي شبكه بر اساس ماهيت مسئله بدست ميآيند، به عبارت ديگر اين دو پارامتر جزء پارامترهاي آزاد طرح نيستند. همانگونه كه قبلا نيز ذكر شد خروجي بر نوع تابع تبديل موثر است. نمونهاي از يك شبكه عصبي دو لايه در ذيل نشان داده شده است:
1. انواع شبكهها از نظر برگشت پذيري
شبكههاي پيشخور (Feed Forward)
با توجه به مباحث بند ششم، در شبكههاي تك لايه - بردار ورودي X توسط نرونها را ميتوان طبق رابطه ذيل نشان داد :
y = f ( W *X = b )
به بردار خروجي مرتبط ميشود. اين شبكه شكل سادهاي از شبكههاي پيشخور است كه مسير پاسخ همواره رو به جلو پردازش ميشود و به نرونهاي لايه ( لايههاي قبل ) باز نميگردد. اگر ايده شبكههاي feed forward را به چند لايه تعميم دهيم، هر لايه ماتريس وزن W و بردار ورودي X و بردار خروجي مختص خود را دارد.
شبكه هاي برگشتي (Recurrent)
تفاوت شبكههاي برگشتي يا Recurrent با شبكههاي پيشخور در آن است كه در شبكههاي برگشتي حداقل يك سيگنال برگشتي از يك نرون به همان نرون يا نرونهاي همان لايه يا لايههاي قبل وجود دارد. شبكههاي Recurrent بهتر ميتوانند رفتار مربوط به ويژهگيهاي زماني و پويايي سيستمها را نشان دهند. در اين نوع شبكه ها كه با توجه به ماهيت پوياي مسئله طراحي ميشوند بعد از مرحله يادگيري شبكه نيز پارامترها تغيير كرده و تصحيح مي شوند ( به طور مثال در پيشبيني ها بعد از گذر زمان مقايسه انجام شده و پارامترهاي آزاد شبكه تنظيم ميشوند) نوع خاصی از شبكههاي برگشت پذير به شبکه های هاپفيلد (Hopfield Network) موسوم هستند. در شبكههاي هاپفيلد نرونها نخست توسط ورودي مقدار اولبيه ميگيرند و شبكه به گونهاي خود را تكرار ميكند كه نتيجه آن همگرايي به سمت الگوي مرجع است. در اين شبكه همه نرونها شبيه به يكديگر عمل كرده و هيچ كدام از نرونها به عنوان ورودي يا خروجي از هم متمايز نميشوند. در تشكيل ساختارها يعني تعداد سلولهاي عصبي و لايهها و همچنين شرايط اوليه مسئله بايد دقت نمود كه موارد عملي و پيچيده به يك يا حتي تعداد بيشتري لايه مخفي ورودي و خروجي و تعداد زيادي وزن براي عوامل ورودي احتياج دارند. بسياري از ANN هاي تجاري شامل 4 و يا حتي 5 لايه هستند كه هر كدام شامل 10 تا 1000 المان پردازشي هستند. برخي از ANN ها حاوي ميليونها المان پردازشي هستند.
1. مراحل طراحی شبکه
به طور خلاصه مراحل طراحی يک شبکه عصبی عبارتند از:
طرح معماری شبکه شامل:
تعيين نوع اتصالات است که ميتواند، اتصال کامل و يا اتصال جزیی باشد. همچنين برگشت پذیری شبکه بايد بررسی گردد شبکه های feedforward network معمولا برای محاسبه فرمول های رياضی ساده بدون پويایی بکار گرفته ميشوند. recurrent network در اغلب مسائل پويا کاربرد دارند.
تعيين نوع تابع تبديل
آموزش شبکه: یعنی تنظیم پارامترهای آزاد طراحی مثل وزن اتصالات و ورودیها، وزن ترم بایاس
ب راي يادگيري ابتدا لازم است الگوريتم يادگيري انتخاب شود. مهمترين عاملي كه بايد به آن توجه نمود به كارگيري يك الگوريتم مناسب براي آموزش شبكه است. لازم به ذكر است بيش از 100 نوع الگوريتم يادگيري تا كنون به وجود آمده است كه يك نوع طبقهبندي اين انواع توسط Lippman ارائه شده استكه براساس شكل ورود اطلاعات است و به صورت ذيل ميباشد.
الف) الگوريتمهاي يادگيري نظارت شده يا با ناظر (Supervised)
در الگوريتم يادگيري با ناظر مجموعهاي از زوجهاي دادهها به دادههاي يادگيري موسوم هستند پس از اعمال ورودي X به شبكه عصبي خروجي حاصل از شبكه y با مقدار ايده آل مقايسه شده و خطا براي تنظيم پارامتر هاي شبكه نظير w محاسبه ميشود به گونهاي كه اگر دفعه بعد به شبكه همان ورودي X اعمال شود خروجي شبكه به y همگرا شده باشد
ب) الگوريتمهاي يادگيري نظارت نشده يا بدون ناظر (UNSupervised)
در يادگيري بدون ناظر يا يادگيري خود سازمانده (Self - Organized) بردار جواب مطلوب به شبكه اعمال نميشود. در واقع هنگامي كه تعداد لايهها و نرونها افزايش مييابد كار يادگيري در ا لگوريتمهاي با ناظر بسيار كند پيشميرود و اين ايراد اساسي اين دسته از الگوريتمهاست .
در الگوريتمهاي بدون ناظر جواب بدست آمده در حافظه بلند مدت ذخيره شده و از همان ابتدا وروديها دستهبندي ميشوند و با استفاده از حافظه مشاركتي بين آنها ارتباط برقرار ميشود. يك نوع الگوريتم خود سازمانده كه توسط كوهنن ابداع شده به صورت ذيل است:
- ابتدا نرون برنده I تعيين ميشود
- سپس بردارهاي وزني متناظر با تمامي نرونهايي كه در يك همسايگي خاص از نرون برنده قرار دارند طبق فرمول تنظيم ميشوند
- پس از اعمال ورودي X بردارهاي وزن نرون برنده و تمامي نرونهاي همجوار ( همجوار به شعاع d ) به سمت بردار ورودي X حركت خواهند كرد.
- پس از تعداد زيادي تكرار و ارائه وروديهاي مختلف به شبكه، نرونهاي همجوار، بردارهايي را كه شبيه به هم هستند را ياد خواهند گرفت.
2. نرمافزارها و سخت افزارهاي شبكههاي عصبي
ANN ها عمدتا به صورت نرمافزارهاي كاربردي ارائه ميشوند و همانند هر Application يك ANN ميتواند با يك زبان برنامه نويسي يا ابزار برنامه نويسي و يا هر دو برنامه نويسي شود. قسمت اعظم فعاليتهاي برنامه نويسي به الگوريتمهاي آموزشي توابع تبديل و توابع جمع در شبكه هاي عصبي احتصاص دارد. برخي برنامه هاي نرمافزاري نيز وجود دارند كه برايايجاد استقرار ANN ها ميتوانند مفيد باشند همانند: Neuralyst , Nnet sheet . پيشرفتهايي كه در تكنولوژيهاي مربوط به سختافزاري حاصل شده است از مزاياي پردازش موازي بزرگ استفاده ميكند، به عبارت ديگر عمل پردازش به طور همزمان در نرونها انجام ميشود. براي افزايش سرعت محاسبات، يكي از 4 روش ذيل را ميتوان به كاربرد:
¨ كامپيوترهاي عمومي مثل PC ها
¨ پردازشگر هاي موازي IBMSP _2
¨ چيپهاي عصبي، چيپهاي خاصي كه توانايي محاسبات خيلي سريعي را دارد و در برد دستگاه نصب ميشوند، نظير intel 80 170 NX يا ETANN
¨ بردهاي شتاب دار
3. مزايا و محدوديت هاي شبكه عصبي
× شبكه هاي عصبي توان بالقوهاي براي حل مسائلي دارد كه شبيه سازي آنها از طريق منطقي، تكنيكهاي تحليلي سيستمهاي خبره و تكنولوژيهاي استاندارد نرم افزاري مشكل است.
× اين تكنيك قادر است در مواقعي كه داده ها در شرايط عدم اطمينان اعم از آنكه دادههافازي باشند ويا به طور ناقص و توام با نويز دريافت شده باشند جواب منطقي ارائه دهد
× به دليل پيشرفتهاي تكنيكي از سرعت پردازش بالايي برخوردار شده است.
× محاسبهگرهاي عصبي در مواقعي كه شرايط تغييرميكند بسيار منعطف هستند. همچنين نگهداري آنها بسيار ساده است.
× سيستمهاي شبكههاي عصبي قادر به توضيح منطق و قاعده كار نيستند و اثبات درستي نتايج بسيار دشوار است چرا كه در بسياري از مسائل وزنهاي تعديل شده قابل تفسير نيستند. بنابراين منطقي كه پشت تصميم نهفته است را نميتوان روشن نموده و اثبات كرد.
× محاسبات شبكههاي عصبي معمولا محتاج مقادير زيادي داده براي آموزش و تست مدل است.
× در حالت كلي شبكههاي عصبي براي برخي مسائل كارايي ندارند. به طور مثال ANN براي حل مسائل و پردازش دادهها با روش مستدل مناسب نيست.