Sunday, March 7, 2010

شبکه عصبی

شبكه عصبي
در مورد شبکه های عصبی چیزی شنیدید؟ این شبکه ها چیزی نیستند جز چند تا ماتریس که می تونند یاد بگیرند و تصمیم گیری کنند. از این شبکه ها می تونید در کار هایی که از یک الگوریتم دقیق پیروی نمی کنند استفاده کنید پس ادامه مطلب رو بخونید
مقدمه.
پياده سازی ويژگی های شگفت انگيز مغز انسان در يک سيستم مصنوعی از ديرباز وسوسه انگيز و مورد توجه بود است. برای افرادی که با مبانی شبکه های عصبی کمتر آشنا هستند، ممکن است پاسخ به سئوالاتی نظير ذيل جالب باشد.
شبکه عصبی چيست؟
چرا از شبکه عصبی استفاده ميشود؟
رويای جايگزينی ويژگی های مغز در يک سيستم مصنوعی چقدر ممکن گرديده و در چه زمينه هايي از رشته تحصيلی ما بکارگرفته شده است؟
مراحل اصلی ايجاد يک شبکه عصبی کدامند؟
و شايد ده ها سئوال جذاب ديگر مطرح گردد. هدف از اين نوشتار معرفی بسيار اجمالی شبکه های عصبی و آشنايي با مبانی آن است. بديهی است ايجاد يک شبکه عصبی با توجه به ماهيت مسئله، نياز به حوصله و صرف وقت بيشتر برای کسب دانش اصول معماری و آموزش شبکه دارد.
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 براي حل مسائل و پردازش داده‏ها با روش مستدل مناسب نيست.

No comments:

Post a Comment