چکیده مطلب: این گزارش مقدمه ای بر شبکه های عصبی مصنوعی است. گونه های مختلف شبکه های عصبی توضیح و شرح داده شده است و کاربرد های شبکه های عصبی، نظیر ANN ها در پزشکی بیان شده و همچنین سابقه ای تاریخی از آن بتفضیل آورده شده است. همچنین رابطه بین چیزهای ساختگی و واقعی مورد بررسی قرار گرفته ودر مورد آن توضیح داده شده است و سر انجام به شرح مدل های ریاضی در رابطه با این موضوع می پردازیم. مقدمه یک شبکه عصبی چیست؟ یک شبکه عصبی مصنوعی (Artificial Neural Network (ANN)) ایده ای است برای پردازش اطلاعات که از سیستم عصبی زیستی الهام گرفته شده و مانند مغز به پردازش اطلاعات می پردازد . عنصر کلیدی این ایده ، ساختار جدید سیستم پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پردازشی فوق العاده بهم پیوسته تشکیل شده(neurons)که برای حل یک مسأله با هم هماهنگ عمل می کند.ANN ها ،نظیر انسانها ، با مثال یاد می گیرند . یک ANN برای انجام وظیفهای مشخص ، مانند شناسایی الگو ها و دسته بندی اطلاعات ، در طول یک پروسه یاد گیری ، تنظیم می شود . در سیستم های زیستی یاد گیری با تنظیماتی در اتصالات سیناپسی که بین اعصاب قرار دارد همراه است . این روش ANN ها هم می باشد. سابقه تاریخی به نظر می آید شبیه سازی های شبکه عصبی یکی از پیشرفت های اخیر باشد . اگرچه این موضوع پیش از ظهور کامپیوتر ها بنیان گذاری شده و حداقل یک مانع بزرگ تاریخی و چندین دوره مختلف را پشت سر گذاشته است. خیلی از پیشرفت های مهم با تقلید ها وشبه سازی های ساده و ارزان کامپیوتری بدست آمده است. در پی یک دوره ابتدائی اشتیاق و فعالیت در این زمینه ، یک دوره ی بی میلی و بدنامی راهم پشت سر گذاشته است . در طول این دوره سرمایه گذاری و پشتیبانی حرفه ای از این موضوع در پایین ترین حد خود بود ، پیشرفت های مهمی به نسبت تحقیقات محدود در این زمینه صورت گرفت . که بدین وسیله پیشگامان قادر شدند تا به گسترش تکنولوژی متقاعد کننده ای بپردازند که خیلی برجسته تر از محدودیت هایی بود که توسط Minsky وPapert شناسانده شد. Minsky وPapert ،کتابی را در سال 1969 منتشر کردند که در آن عقیده عمومی را جع به میزان محرومیت شبکه های عصبی را در میان محققان معین کرده بود و بدین صورت این عقیده بدون تجزبه و تحلیل های بیشتر پذیرفته شد. هم اکنون ، زمینه تحقیق شبکه های عصبی از تجدید حیات علایق و متناطر با آن افزایش سرمایه گذاری لذت می برد . اولین سلول عصبی مصنوعی در سال 1943 بوسیله یک neurophysiologist به نلمWarren McCulloch ویک منطق دان به نام Walter Pits ساخته شد . اما محدودیتهای تکنولوژی در آن زمان اجازه کار بیشتر به آنها نداد. چرا از شبکه های عصبی استفاده می کنیم شبکه های عصبی ، با قابلیت قابل توجه آنها در استنتاج معانی از داده های پیچیده یا مبهم ، میتواند برای استخراج الگوها و شناسایی روشهایی که آگاهی از آنها برای انسان و دیگر تکنیک های کامپیوتری بسیار پیچیده و دشوار است به کار گرفته شود. یک شبکه عصبی تربیت یافته می تواند به عنوان یک متخصص در مقوله اطلاعاتی ای که برای تجزیه تحلیل به آن داده شده به حساب آید.از این متخصص می توان برای بر آورد وضعیت های دخواه جدید و جواب سؤال های " چه می شد اگر " استفاده کرد. شباهت با مغز اگرچه مكانيسمهاي دقيق كاركرد مغز انسان (يا حتي جانوران) بهطور كامل شناخته شده نيست، اما با اين وجود جنبههاي شناخته شدهاي نيز وجود دارند كه الهام بخش تئوري شبكههاي عصبي بودهاند. بهعنوان مثال، يكي ازسلولهاي عصبي، معروف به نرون (Neuron) است كه دانش بشري آن را بهعنوان سازنده اصلي مغز ميانگارد. سلولهاي عصبي قادرند تا با اتصال بهيكديگر تشكيل شبكههاي عظيم بدهند. گفته ميشود كه هر نرون ميتواند به هزار تا ده هزار نرون ديگر اتصال يابد (حتي در اين مورد عدد دويست هزار هم به عنوان يك حد بالايي ذكر شده است). قدرت خارقالعاده مغز انسان از تعداد بسيار زياد نرونها و ارتباطات بين آنها ناشي ميشود. ساختمان هر يك از نرونها نيز بهتنهايي بسيار پيچيده است. هر نرون از بخشها و زيرسيستمهاي زيادي تشكيل شده است كه از مكانيسمهاي كنترلي پيچيدهاي استفاده ميكنند. سلولهاي عصبي ميتوانند از طريق مكانيسمهاي الكتروشيميايي اطلاعات را انتقال دهند. برحسب مكانيسمهاي بهكاررفته در ساختار نرونها، آنها را به بيش از يكصدگونه متفاوت طبقهبندي ميكنند. در اصطلاح فني، نرونها و ارتباطات بين آنها، فرايند دودويي(Binary)، پايدار (Stable) يا همزمان (Synchronous) محسوب نميشوند. در واقع، شبكههاي عصبي شبيهسازي شده يا كامپيوتري، فقط قادرند تا بخش كوچكي از خصوصيات و ويژگيهاي شبكههاي عصبي بيولوژيك را شبيهسازي كنند. در حقيقت، از ديد يك مهندس نرمافزار، هدف از ايجاد يك شبكه عصبي نرمافزاري، بيش از آنكه شبيهسازي مغز انسان باشد، ايجاد مكانيسم ديگري براي حل مسائل مهندسي با الهام از الگوي رفتاري شبكههاي بيولوژيك است. روش كار نرونها در شكل يك، نماي ساده شدهاي از ساختار يك نرون بيولوژيك نمايش داده شده است. بهطور خلاصه، يك نرون بيولوژيك، پس از دريافت سيگنالهاي ورودي (به شكل يك پالس الكتريكي) از سلولهاي ديگر، آن سيگنالها را با يكديگر تركيب كرده و پس از انجام يك عمل (operation) ديگر بر روي سيگنال تركيبي، آن را بهصورت خروجي ظاهر ميسازد. همانطور كه در تصوير مشاهده ميكنيد، نرونها از چهار بخش اصلي ساخته شدهاند. دندريتها (Dendrite)، سوما (Soma)، اكسان (Axon) و بالاخره، سيناپس (synapse) دندريتها، همان اجزايي هستند كه بهشكل رشتههاي طويل از مركز سلول به اطراف پراكنده ميشوند. دندريتها نقش كانالهاي ارتباطي را براي انتقالدادن سيگنالهاي الكتريكي به مركز سلول بر عهده دارند. در انتهاي دندريتها، ساختار بيولوژيكي ويژهاي بهنام سيناپس واقع شده است كه نقش دروازههاي اتصالي كانالهاي ارتباطي را ايفا ميكند. در واقع سيگنالهاي گوناگون از طريق سيناپسها و دندريتها به مركز سلول منتقل ميشوند و در آنجا با يكديگر تركيب ميشوند. عمل تركيب كه به آن اشاره كرديم، ميتواند يك عمل جمع جبري ساده باشد. اصولاً اگر چنين نيز نباشد، در مدلسازي رياضي ميتوان آنرا يك عمل جمع معمولي در نظر گرفت كه پس از آن تابع ويژهاي بر روي سيگنال اثر داده ميشود و خروجي به شكل سيگنال الكتريكي متفاوتي از طريق اكسان (و سيناپس آن) به سلولهاي ديگر انتقال داده ميشود. البته تحقيقات جديد نمايانگر اين واقعيت هستند كه نرونهاي بيولوژيك بسيار پيچيدهتر از مدل سادهاي هستند كه در بالا تشريح شد. اما همين مدل ساده ميتواند زيربناي مستحكمي براي دانش شبكههاي عصبي مصنوعي (Artificial Neural Network = ANN) تلقي گردد و متخصصان گرايش شبكههاي عصبي يا هوش مصنوعي ميتوانند با پيگيري كارهاي دانشمندان علوم زيستشناسي، به بنيانگذاري ساختارهاي مناسبتري در آينده دست بزنند. چگونه مغز انسان می آموزد ؟ مسائل زیادی راجع به این که مغز چگونه خود را برای پردازش اطلاعات آموزش می دهد، نا شناخته باقی مانده است بنابر این تئوری های فراوانی وجود دارد. در مغز انسان یک سلول سیگنال ها را از دیگران از طریق یک گروه از ساختار های ریز به نام dendrites جمع آوری می کند سلول عصبی جهش سریع فعالیت الکتریکی را در طول یک پایه بلند و نازک که axon نامیده میشود ، می فرستد که به داخل هزاران شاخه گسترش می یابد و کشیده می شود . در انتهای هر شاخه ، ساختاری که synapse نامیده می شود این فعالیت را ازaxon به اثرات الکتریکی تبدیل می کند که فعالیت یکaxon به صورت اثرات الکتریکی فعال کننده یا غیر فعال کننده تبدیل می شود که این کار باعث برانگیخته شدن یا آرام شدن سلول های عصبی مرتبط می شود. وقتی یک سلول عصبی پیام های فعال کننده را در یافت می کند، که بطور قانع کننده و وسیعی با پیام های ورودی غیر فعال کننده اش مقایسه شده باشد ،در این زمان این سلول نیز یک جهش از فعالیت الکتریکی را به داخل axon خودش می فرستد. یاد گیر ی با تغییر تاثیر synapses اتفاق می افتد در نتیجه تاثیر یک سلول بر دیگران تغییر میکند. انسان و سلول های عصبی مصنوعی- در جستجوی شباهت ها چگونه مغز انسان می آموزد ؟ مسائل زیادی راجع به این که مغز چگونه خود را برای پردازش اطلاعات آموزش می دهد، نا شناخته باقی مانده است بنابر این تئوری های فراوانی وجود دارد. در مغز انسان یک سلول سیگنال ها را از دیگران از طریق یک گروه از ساختار های ریز به نام dendrites جمع آوری می کند سلول عصبی جهش سریع فعالیت الکتریکی را در طول یک پایه بلند و نازک که axon نامیده میشود ، می فرستد که به داخل هزاران شاخه گسترش می یابد و کشیده می شود . در انتهای هر شاخه ، ساختاری که synapse نامیده می شود این فعالیت را ازaxon به اثرات الکتریکی تبدیل می کند که فعالیت یکaxon به صورت اثرات الکتریکی فعال کننده یا غیر فعال کننده تبدیل می شود که این کار باعث برانگیخته شدن یا آرام شدن سلول های عصبی مرتبط می شود. وقتی یک سلول عصبی پیام های فعال کننده را در یافت می کند، که بطور قانع کننده و وسیعی با پیام های ورودی غیر فعال کننده اش مقایسه شده باشد ،در این زمان این سلول نیز یک جهش از فعالیت الکتریکی را به داخل axon خودش می فرستد. شکل١- یک نرون بیولوژیکی یاد گیر ی با تغییر تاثیر synapses اتفاق می افتد در نتیجه تاثیر یک سلول بر دیگران تغییر میکند از سلول های عصبی انسانی تا سلول های عصبی مصنوعی ما این شبکه های عصبی را با تلاش اولیه در جهت یافتن خصوصیات اساسی سلول های عصبی و اتصالات آنها ، هدایت می کنیم. سپس بطور معمول یک کامپیوتر را برای شبیه سازی این خصوصیات برنامه ریزی می کنیم .اگر چه بدلیل اینکه دانش ما از سلول های عصبی ناقص است و قدرت محاسبات ما محدود است ، مدل های ما لزوما آرمان های خام و ناقصی از شبکه های واقعی سلول های عصبی است . شکل٢- نمایی از یک شبکه عصبی مصنوعی آشنايي با شبكههاي عصبي (Neural Networks): شبكههاي عصبي را ميتوان با اغماض زياد، مدلهاي الكترونيكي از ساختار عصبي مغز انسان ناميد. مكانيسم فراگيري و آموزش مغز اساساً بر تجربه استوار است. مدلهاي الكترونيكي شبكههاي عصبي طبيعي نيز بر اساس همين الگو بنا شدهاند و روش برخورد چنين مدلهايي با مسائل، با روشهاي محاسباتي كه بهطور معمول توسط سيستمهاي كامپيوتري در پيش گرفته شدهاند، تفاوت دارد. ميدانيم كه حتي سادهترين مغزهاي جانوري هم قادر به حل مسائلي هستند كه اگر نگوييم كه كامپيوترهاي امروزي از حل آنها عاجز هستند، حداقل در حل آنها دچار مشكل ميشوند. به عنوان مثال، مسائل مختلف شناسايي الگو، نمونهاي از مواردي هستند كه روشهاي معمول محاسباتي براي حل آنها به نتيجه مطلوب نميرسند. درحاليكه مغز سادهترين جانوران بهراحتي از عهده چنين مسائلي بر ميآيد. تصور عموم كارشناسان IT بر آن است كه مدلهاي جديد محاسباتي كه بر اساس شبكههاي عصبي بنا ميشوند، جهش بعدي صنعت IT را شكل ميدهند. تحقيقات در اين زمينه نشان داده است كه مغز، اطلاعات را همانند الگوها (pattern) ذخيره ميكند. فرآيند ذخيرهسازي اطلاعات بهصورت الگو و تجزيه و تحليل آن الگو، اساس روش نوين محاسباتي را تشكيل ميدهند. اين حوزه از دانش محاسباتي (computation) به هيچ وجه از روشهاي برنامهنويسي سنتي استفاده نميكند و بهجاي آن از شبكههاي بزرگي كه بهصورت موازي آرايش شدهاند و تعليم يافتهاند، بهره ميجويد. در ادامه اين نوشته به اين واژگان كه در گرايش شبكههاي عصبي، معاني ويژهاي دارند، بيشتر خواهيم پرداخت. یک شبکه عصبی چیست؟ یک شبکه عصبی مصنوعی (Artificial Neural Network (ANN)) ایده ای است برای پردازش اطلاعات که از سیستم عصبی زیستی الهام گرفته شده و مانند مغز به پردازش اطلاعات می پردازد . عنصر کلیدی این ایده ، ساختار جدید سیستم پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پرداز شی فوق العاده بهم پیوسته تشکیل شده (neurons)که برای حل یک مسأله با هم هماهنگ عمل می کند.ANN ها ،نظیر انسانها ، با مثال یاد می گیرند . یک ANN برای انجام وظیفه های مشخص ، مانند شناسایی الگو ها و دسته بندی اطلاعات ، در طول یک پروسه یاد گیری ، تنظیم می شود . در سیستم های زیستی یاد گیری با تنظیماتی در اتصالات سیناپسی که بین اعصاب قرار دارد همراه است . این روش ANN ها هم می باشد. کاربردهای شبکه های عصبی : سیستم آنالیز ریسک کنترل هواپیما بدون خلبان ردیابی انحراف هواپیما شبیه سازی مسیر سیستم راهنمایی اتوماتیک اتومبیل سیستمهای بازرسی کیفیت آنالیز کیفیت جوشکاری پیش بینی کیفیت آنالیز کیفیت کامپیوتر آنالیز عملیاتهای آسیاب آنالیز طراحی محصول شیمیایی آنالیز نگهداری ماشین پیشنهاد پروژه مدیریت و برنامه ریزی کنترل سیستم فرایند شیمیایی و دینامیکی طراحی اعضای مصنوعی بهینه سازی زمان پیوند اعضا کاهش هزینه بیمارستان بهبود کیفیت بیمارستان آزمایش اتاق اورژانس اکتشاف روغن و گاز کنترل مسیر در دستگاههای خودکار , ربات , جراثقال سیستمهای بصری تشخیص صدا اختصار سخن کلاسه بندی صوتی آنالیز بازار سیستمهای مشاوره ای محاسبه هزینه موجودی اختصار اطلاعات و تصاویر خدمات اطلاعاتی اتوماتیک مترجم لحظه ای زبان سیستمهای پردازش وجه مشتری سیستمهای تشخیص ترمز کامیون زمانبندی وسیله نقلیه سیستمهای مسیریابی کلاسه بندی نمودارهای مشتری/بازار تشخیص دارو بازبینی امضا تخمین ریسک وام شناسایی طیفی ارزیابی سرمایه کلاسه بندی انواع سلولها , میکروبها و نمونه ها پیش بینی فروشهای آینده پیش بینی نیازهای محصول پیش بینی وضعیت بازار پیش بینی شاخصهای اقتصادی پیش بینی ملزومات انرژی پیش بینی واکنشهای دارویی پیش بینی بازتاب محصولات شیمیایی پیش بینی هوا پیش بینی محصول پیش بینی ریسک محیطی پیش بینی جداول داوری مدل کردن کنترل فرآیند آنالیز فعالیت گارانتی بازرسی اسناد تشخیص هدف تشخیص چهره انواع جدید سنسورها دستگاه کاشف زیر دریایی بوسیله امواج صوتی , رادار پردازش سیگنالهای تصویری شامل مقایسه اطلاعات پیگیری هدف هدایت جنگ افزارها تعیین قیمت وضعیت فعلی جلوگیری از پارازیت شناسایی تصویر /سیگنال چیدمان یک مدار کامل بینایی ماشین مدل کردن غیر خطی ترکیب صدا کنترل فرآیند ساخت آنالیز مالی پیش بینی فرآیندهای تولید ارزیابی بکارگیری یک سیاست بهینه سازی محصول تشخیص ماشین و فرآیند مدل کردن کنترل سیستمها مدل کردن ساختارهای شیمیایی مدل کردن سیستمهای دینامیکی مدل کردن سیگنال تراکم مدل کردن قالبسازی پلاستیکی مدیریت قراردادهای سهام مدیریت وجوه بیمه مدیریت سهام تصویب چک بانکی اکتشاف تقلب در کارت اعتباری ثبت نسیه بازبینی امضا از چکها پیش بینی ارزش نسیه مدیریت ریسک رهن تشخیص حروف و اعداد تشخیص بیماری چرا از شبکه های عصبی استفاده می کنیم شبکه های عصبی ، با قابلیت قابل توجه آنها در استنتاج معانی از داده های پیچیده یا مبهم ، میتواند برای استخراج الگوها و شناسایی روشهایی که آگاهی از آنها برای انسان و دیگر تکنیک های کامپیوتری بسیار پیچیده و دشوار است به کار گرفته شود. یک شبکه عصبی تربیت یافته می تواند به عنوان یک متخصص در مقوله اطلاعاتی ای که برای تجزیه تحلیل به آن داده شده به حساب آید.از این متخصص می توان برای بر آورد وضعیت های دخواه جدید و جواب سؤال های " چه می شد اگر " استفاده کرد. مزیتهای دیگر آن شامل موارد زیر می شود : 1. یادگیری انطباق پذیر: قابلیت یاد گیری نحوه انجام وظایف بر پایه اطلاعات داده شده برای تمرین وتجربه های مقدماتی . 2. سازماندهی توسط خود: یک ANN می تواند سازماندهی یا ارائه اش را ، برای اطلا عاتی که در طول دوره یادگیری در یافت می کند، خودش ایجاد کند. 3. عملکرد بهنگام(Real time ) : محاسبات ANN می تواند بصورت موازی انجام شود، و سخت افزارهای مخصوصی طراحی و ساخته شده است که می تواند از این قابلیت استفاده کند. 4. تحمل اشتباه بدون ایجاد وقفه در هنگام کد گذاری اطلاعات : خرابی جزئی یک شبکه منجر به تنزل کارایی متناظر با آن می شود اگر چه تعدادی از قابلیت های شبکه ممکن است حتی با خسارت بزرگی هم باقی بماند. شبکه های عصبی در مقابل کامپیوتر های معمولی شبکه های عصبی نسبت به کامپیوتر های معمولی مسیر متفاوتی را برای حل مسئله طی می کنند . کامپیوتر های معمولی یک مسیر الگوریتمی را استفاده می کنند به این معنی که کامپیوتر یک مجموعه از دستور العمل ها را به قصد حل مسئله پی می گیرد. بدون اینکه، قدم های مخصوصی که کامپیوتر نیاز به طی کردن دارد، شناخته شده باشند کامپیوتر قادر به حل مسئله نیست. این حقیقت قابلیت حل مسئله ی کامپیوتر های معمولی را به مسائلی ،محدود می کند که ما قادر به درک آنها هستیم و می دانیم چگونه حل میشوند. اما اگر کامپیوتر ها می توانستند کار هایی را انجام دهند که ما دقیقا نمیدانیم چگونه انجام دهیم ، خیلی پر فایده تر بودند. شبکه های عصبی اطلاعات را به روشی مشابه با کاری که مغز انسان انجام می دهد پردازش می کنند. آنها از تعداد زیادی از عناصر پردازشی(سلول عصبی) که فوق العاده بهم پیوسته اند تشکیل شده است که این عناصر به صورت مواز ی باهم برای حل یک مسئله مشخص کار می کنند .شبکه های عصبی با مثال کار می کنند و نمی توان آنها را برای انجام یک وظیفه خاص برنامه ریزی کرد مثال ها می بایست با دفت انتخاب شوند در غیر این صورت زمان سودمند، تلف می شود و یا حتی بدتر از این شبکه ممکن است نا درست کار کند. امتیاز شبکه عصبی این است که خودش کشف می کند که چگونه مسئله را حل کند ، عملکرد آن غیر قابل پیش گویی است. از طرف دیگر ، کامپیوتر های معمولی از یک مسیر مشخص برای حل یک مسئله استفاده می کنند . راه حلی که مسئله از آن طریق حل می شود باید از قبل شناخته شود و به صورت دستورات کوتاه و غیر مبهمی شرح داده شود. این دستورات سپس به زبا ن های برنامه نویسی سطح بالا برگردانده می شود و بعد از آن به کدهایی که کامپیوتر قادر به درک آنها است تبدیل می شود. به طور کلی این ماشین ها قابل پیش گویی هستند و اگر چیزی به خطا انجام شود به یک اشتباه سخت افزاری یا نرم افزاری بر می گردد. شبکه های عصبی و کامپیوتر های معمولی با هم در حال رقابت نیستند بلکه کامل کننده یکدیگرند . وظایفی وجود دارد که بیشتر مناسب روش های الگوریتمی هستند نظیر عملیات محاسباتی و وظایفی نیز وجود دارد که بیشتر مناسب شبکه های عصبی هستند . حتی فراتر از این ، مسائلی وجود دارد که نیازمند به سیستمی است که از تر کیب هر دو روش بدست می آید (بطور معمول کامپیوتر های معمولی برای نظارت بر شبکه های عصبی به کار گرفته می شوند ) به این قصد که بیشترین کاریی بدست آید. شبکه های عصبی معجزه نمی کنند اما اگر خردمندانه به کار گرفته شوند نتایج شگفت آوری را خلق میکنند. انسلن و سلول های عصبی مصنوعی- در جستجوی شباهت ها مدل رياضي در متون فني براي نمايش مدل سادهاي كه در بالا تشريح گرديد، بهطور معمول از شكلي مشابه شكل 2 استفاده ميشود. در اين شكل كلاسيك، از علامت p براي نشان دادن يك سيگنال ورودي استفاده ميشود. در واقع در اين مدل، يك سيگنال ورودي پس از تقويت (يا تضعيف) شدن به اندازه پارامتر w، بهصورت يك سيگنال الكتريكي با اندازه pw وارد نرون ميشود. بهجهات سادهسازي مدل رياضي، فرض ميشود كه در هسته سلول عصبي، سيگنال ورودي با سيگنال ديگري به اندازه b جمع ميگردد. در واقع سيگنال b خود به معني آن است كه سيگنالي به اندازه واحد در پارامتري مانند b ضرب (تقويت يا تضعيف) ميشود. مجموع حاصل، يعني سيگنالي به اندازه pw b، قبل از خارج شدن از سلول تحت عمل يا فرآيند ديگري واقع ميشود كه در اصطلاح فني به آن تابع انتقال (Transfer Function) ميگويند. اين موضوع در شكل بهوسيله جعبهاي نمايش داده شده است كه روي آن علامت f قرار داده شده است. ورودي اين جعبه همان سيگنال pw b است و خروجي آن يا همان خروجي سلول، با علامت a نشانه گذاري شده است. در رياضي، بخش آخر مدلسازي توسط رابطه (a = f(pw b نمايش داده ميشود. پارامتر w يا همان ضريبي كه سيگنال ورودي p در آن ضرب ميشود، در اصطلاح رياضي به نام پارامتر وزن يا weight نيز گفته ميشود. زمانيكه از كنار هم قرار دادن تعداد بسيار زيادي از سلولهاي فوق يك شبكه عصبي بزرگ ساخته شود، شبكهاي در دست خواهيم داشت كه رفتار آن علاوه بر تابع خروجي f، كاملاً به مقادير w و b وابسته خواهد بود. در چنين شبكه بزرگي، تعداد بسيار زيادي از پارامترهاي w و b بايد توسط طراح شبكه مقداردهي شوند. اين پروسه از كار، در اصطلاح دانش شبكههاي عصبي، به فرآيند يادگيري معروف است. در واقع در يك آزمايش واقعي، پس از آنكه سيگنالهاي ورودي چنين شبكه بزرگي اتصال داده شدند، طراح شبكه با اندازهگيري خروجي و با انتخاب پارامترهايw و b بهگونهاي كه خروجي مطلوب بهدست آيد، شبكه را <آموزش> ميدهد. به اين ترتيب پس از آنكه چنين شبكه به ازاي مجموعهاي از وروديها براي ساختن خروجيهاي مطلوب <آموزش> ديد، ميتوان از آن براي حل مسائلي كه از تركيب متفاوتي از وروديها ايجاد ميشوند، بهره برد. تابع f ميتواند بر حسب كاربردهاي گوناگون بهطور رياضي، به شكل هاي متفاوتي انتخاب شود. در برخي از كاربردها، پاسخ مسائل از نوع دودويي است. مثلاً مسأله بهگونهاي است كه خروجي شبكه عصبي بايد چيزي مانند <سياه> يا <سفيد> (يا <آري> يا <نه>) باشد. در واقع چنين مسائلي نياز به آن دارند كه وروديهاي دنياي واقعي به مقادير گسسته مانند مثال فوق تبديل شوند. حتي ميتوان حالاتي را در نظر گرفت كه خروجي دودويي نباشد، اما همچنان گسسته باشد. به عنوان مثال، شبكهاي را در نظر بگيريد كه خروجي آن بايد يكي از حروف الفبا، مثلاً از بين كاراكترهاي اسكي (يا حتي يكي از پنجاه هزار كلمه متداول زبان انگليسي) باشد. در چنين كاربردهايي، روش حل مسئله نميتواند صرفاً بر جمع جبري سيگنالهاي ورودي تكيه نمايد. در اين كاربردها، ويژگيهاي خواسته شده فوق، در تابع خروجي يا تابع انتقال f گنجانيده ميشوند. مثلاً اگر قرار باشد خروجي فقط يكي از مقادير صفر يا يك را شامل شود، در اين صورت ميتوان تابع خروجي شبكه عصبي را به شكل بخش a شكل شماره 3 انتخاب كرد. در اين حالت، خروجي چنين شبكهاي فقط ميتواند بر حسب وروديهاي متفاوت، مقدار يك يا صفر باشد. در گروه ديگري از مسائلي كه حل آنها به شبكههاي عصبي واگذار ميشود، خروجي شبكه عصبي الزاماً بين مقادير معلوم و شناخته شده واقع نميشود. مسائلي از نوع شناسايي الگوهاي تصويري، نمونهاي از چنين مواردي محسوب ميشوند. شبكههاي عصبي در اين موارد، بايد بهگونهاي باشند كه قابليت توليد مجموعه نامتناهي از پاسخها را داشته باشند. رفتار حركتي يك روبات نمونهاي از <هوشي> است كه چنين شبكههاي عصبي ميتوانند فراهم آورند. اما در چنين شبكههايي هم لازم خواهد بود كه خروجي بين مقادير مشخصي محدود شده باشد (موضوع محدود شدن خروجي بين دو مقدار حدي ماكزيمم و مينيمم را در اينجا با موضوع قبلي اشتباه نگيريد. در اين مورد خروجي مسأله اساساً گسسته نيست و حتي در بين چنين مقادير حدي، ميتوان به تعداد نامتناهي خروجي دست يافت). اهميت اين موضوع زماني آشكار ميشود كه از مثال واقعي كمك گرفته شود. فرض كنيد قراراست از شبكه عصبي براي كنترل حركت بازوي يك روبات استفاده شود. در صورتيكه خروجي يك شبكه عصبي براي كنترل نيروي حركتي بهكار گرفته شود، طبيعي خواهد بود كه اگر خروجي شبكه محدود نشده باشد، ممكن است بازوي روبات بر اثر حركت بسيار سريع، به خود و يا محيط اطراف آسيب برساند. در چنين مواردي ممكن است از تابع انتقال بهشكل بخش b شكل شماره 3 استفاده شود. قبل از آنكه به بخش ديگري از موضوع شبكههاي عصبي بپردازيم، بايد يك نكته را يادآوري كنيم كه همانطور كه در ابتداي اين بخش تشريح شد، سلولهاي عصبي داراي وروديهاي متعددي هستند و خروجي آنها نيز الزاماً محدود به يك خروجي نيست. بر اين اساس زماني كه بخواهيم از مدلسازي رياضي براي مدل كردن يك سلول عصبي استفاده كنيم، بهجاي آنكه همانند شكل 2 از يك ورودي p و يك خروجي a استفاده كنيم، از يك بردار p و يك بردار a سخن ميگوييم. بدين ترتيب بدون آنكه نياز به اعمال تغييري در اين تصوير داشته باشيم، ميتوانيم از آن براي مدلسازي سلولي با n ورودي (p1,p2,p3 . . . pn) و به همين ترتيب m خروجي (a1,a2,am) استفاده كنيم. توجه داشته باشيد كه در اين صورت، تعداد عناصر b و w نيز به تناسب افزايش مييابند و هر يك به n عدد افزايش مييابند. پيادهسازيهاي الكترونيكي نرونهاي مصنوعي نرمافزارهايي كه در آنها از شبكههاي عصبي استفاده شده است، نرونهاي شبكه را المان پردازنده (Processing element) مينامند. بهطور معمول در محصولات نرمافزاري، المانهاي پردازنده قابليت بسيار بيشتري از نمونه سادهشدهاي كه در بخشهاي پيشين تشريح كرديم، دارند. در شكل شماره 4، نمايي با جزئيات بيشتر از يك نرون مصنوعي را نشان ميدهد. در اين مدل، وروديها در نخستين گام، در ضريب وزني (weighting factor) متناظر خود ضرب ميشوند. در مرحله بعد، وروديهايي كه تغيير مقياس دادهاند وارد واحدي ميشوند كه در آن سيگنالهاي ورودي با هم تركيب ميشوند. بهطور معمول عمل تركيب در اين واحد همان عمل جمع جبري است، اما در اصول، ميتوان در اين واحد، وروديها را به روشهاي ديگري علاوه بر عمل جمع معمولي نيز با يكديگر تركيب كرد. مثلاً ميتوان بهجاي عمل جمع، از عمل متوسط گيري، انتخاب بزرگترين، انتخاب كوچكترين، عمل OR يا AND منطقي هم استفاده كرد. در واقع هدف نهايي در اين واحد آن است كه از تعداد n ورودي، يك سيگنال خروجي براي ارائه به بخشهاي بعدي فرايند، بهدست آيد. انتخاب نوع <عمل> در اين واحد، موضوع دقيقي است كه كاملاً به كاربرد مسأله وابسته است. بهطور معمول در نرمافزارهاي تجاري، امكان انتخاب و حتي ساختن توابع گوناگون براي اين واحد، از طرف نرمافزار به كاربران داده ميشود. حتي ميتوان كاربردهايي يافت كه در آنها، عمل تركيب در اين واحد، وابسته به زمان باشد و در زمانهاي گوناگون پردازش مسأله، عمليات مختلفي براي تركيب كردن وروديها بهكار برده شوند. در هر صورت، پس از آنكه وروديها با يكديگر تركيب شدند، سيگنال حاصل به واحد ديگري كه در آن تابع انتقال يا Transfer Function به سيگنال اعمال ميشود، هدايت ميگردد. خروجي اين بخش، سيگنالهاي حقيقي خواهند بود. بدين ترتيب جعبهاي در دست خواهيم داشت كه تعداد n عدد سيگنال ورودي را به m عدد سيگنال خروجي تبديل ميكند. در عمل توابع انتقالي كه در بخش انتهايي نمودار شكل 4 بهكار برده ميشوند، معمولاً يكي از توابع سينوسي، تانژانت هذلولي، sigmoid و نظاير اينها است. در تصوير شماره 5، نمونهاي از يك تابع انتقال از نوع sigmoid نمايش داده شده است. همانطور كه در اين شكل مشاهده ميكنيد، اين تابع انتقال، سيگنال خروجي واحد تركيب را به سيگنال خروجي تبديل ميكند كه مقدار (يا اندازه آن) بين صفر و يك ميتواند باشد. در عمل، سيگنالِ خروجي يك المان پردازنده ميتواند برحسب نوع كاربرد، به المانهاي پردازشي ديگر و يا به اتصالات ديگر خارج از شبكه عصبي هدايت شود. در واقع تمامي شبكههاي عصبي بر اساس ساختار المانهاي پردازشي فوق كار ميكنند. در قسمت بعدي اين مقاله به تشريح عمليات در شبكههاي عصبي و آموزش اين شبكهها ميپردازيم. عمليات شبكههاي عصبي تا اينجا تمام توجه ما معطوف ساختار دروني يك نرون مصنوعي يا المان پردازشي بود. اما بخش مهم ديگري در مراحل طراحي يك شبكه عصبي نيز وجود دارد. در واقع هنر يك طراح شبكههاي عصبي ميتواند در چگونگي تركيب نرونها در يك شبكه (neuran Clustering)، متجلي شود. شكل 1 علوم بيولوژي نشان دادهاند كه كلاسترينگ نرونها در شبكه عصبي مغز ما بهگونهاي است كه ما را قادر ميسازد تا اطلاعات را به صورتي پويا، تعاملي و خودسامان (Selforganizing) پردازش كنيم. در شبكههاي عصبي بيولوژيك، نرونها در ساختاري سه بعدي به يكديگر اتصال يافتهاند. اتصالات بين نرونها در شبكههاي عصبي بيولوژيك آنقدر زياد و پيچيدهاست كه به هيچ وجه نميتوان شبكه مصنوعي مشابهي طراحي كرد. تكنولوژي مدارات مجتمع امروزي به ما امكان ميدهد كه شبكههاي عصبي را در ساختارهاي دو بعدي طراحي كنيم. علاوه بر اين، چنين شبكههاي مصنوعي داراي تعداد محدودي لايه و اتصالات بين نرونها خواهند بود. بدين ترتيب، اين واقعيات و محدوديتهاي فيزيكي تكنولوژي فعلي، دامنه كاربردهاي شبكههاي عصبي مبتنيبر تكنولوژي سيليكوني را مشخص ميسازند. ساختار شبكههاي عصبي امروزي، از لايههاي نروني تشكيل شده است. در چنين ساختاري، نرونها علاوه بر آنكه در لايه خود به شكل محدودي به يكديگر اتصال داده شدهاند، از طريق اتصال بين لايهها نيز به نرونهاي طبقات مجاور ارتباط داده ميشوند. در شكل 1 نمونهاي از ساختار لايهاي يك شبكه عصبي مصنوعي نمايش داده شده است (تعداد اتصالات ممكن بين نرونها را در چنين ساختاري با تعداد اتصالات بين نرونهاي مغز انسان، مقايسه كنيد). در اين توپولوژي، گروهي از نرونها از طريق وروديهاي خود با جهان واقعي ارتباط دارند. گروه ديگري از نرونها نيز از طريق خروجيهاي خود، جهان خارج را ميسازند. در واقع اين <جهان خارج> تصويري است كه شبكه عصبي از ورودي خود ميسازد يا ميتوان چنين گفت كه جهان خارج <تصوري> است كه شبكه عصبي از ورودي خود دارد. خلاصه آنكه در توپولوژي فوق، مابقي نرونها از ديد پنهان هستند. تلاش محققان در زمينه شبكههاي عصبي نشان داده است كه شبكههاي عصبي، چيزي بيشتر از يك مشت نرون كه به يكديگر اتصال داده شدهاند، هستند. حتي گروهي از محققان سعي داشتهاند كه از اتصالات تصادفي براي ارتباط دادن نرون به يكديگر استفاده كنند كه در اين زمينه به نتايج جالب توجهي دست نيافتند. امروزه مشخص شده است كه در سادهترين مغزهاي بيولوژيك مانند مغز مارها هم ارتباطات بين نرونها بسيار ساختيافته است. در حال حاضر يكي از سادهترين روشهاي ارتباط دهي نرونها در شبكههاي عصبي، آن است كه ابتدا نرونها در گروههاي مشخصي به صورت لايههاي نروني سازماندهي ميشوند و پس از تامين ارتباطات بيننروني در هر لايه، ارتباطات بين لايهها نيز برقرار ميشوند. اگرچه در كاربردهاي مشخصي ميتوان با موفقيت از شبكههاي عصبي تك لايه استفاده كرد، اما رسم بر آن است كه شبكههاي عصبي حداقل داراي سه لايه باشند (همانطور كه قبلاً اشاره شد، لايه ورودي، لايه خروجي و نهايتاً لايه پنهان يا لايه مياني). در بسياري از شبكههاي عصبي، اتصالات بيننروني به گونهاي است كه نرونهاي لايههاي مياني، ورودي خود را از تمام نرونهاي لايه پاييني خود (به طور معمول لايه نرونهاي ورودي) دريافت ميكنند. بدين ترتيب در يك شبكه عصبي، سيگنالها به تدريج از يك لايه نروني به لايههاي بالاتر حركت ميكنند و در نهايت به لايه آخر و خروجي شبكه ميرسند. چنين مسير در اصطلاح فني feed forward ناميده ميشود. ارتباطات بيننروني در شبكههاي عصبي از اهميت بسيار زيادي برخوردار هستند و به نوعي قدرت يك شبكه عصبي را تعيين ميكنند. قاعده آن است كه ارتباطات بين نروني را به دو گروه تقسيمبندي ميكنند. يك نوع از ارتباطات بين نروني، بهگونهاي هستند كه باعث جمع شدن سيگنال در نرون بعدي ميشوند. گونه دوم ارتباطات بين نروني باعث تفريق سيگنال در نرون بعدي ميشوند. در اصطلاح محاورهاي گروهي از ارتباطات انگيزش ايجاد ميكنند و گروه ديگر ممانعت به عمل ميآورند. در مواردي، نرون مشخصي از شبكه عصبي تمايل دارد كه سيگنال ديگر نرونهاي لايه خود را ناديده بگيرد. چنين حالتي بهطور معمول در لايه خروجي ايجاد ميشود. به عنوان مثال، در كاربردهاي تشخيص متن (OCR)، فرض كنيد كه احتمال آنكه كاراكتر مورد شناسايي، حرف P باشد برابر با 85 درصد تعيين شده است و به همين ترتيب احتمال آنكه كاراكتر مورد نظر حرف F باشد، 65 درصد تخمين زده است. در اين وضعيت، سيستم بايد كاراكتري را برگزيند كه داراي درصد احتمال بزرگتر است. در نتيجه در اين شبكه عصبي، نرونهايي كه خروجي F را تجويز ميكنند، بايد ناديده گرفته شوند يا inhibit شوند. به چنين فرايندي، lateral inhibition گفته ميشود. نوع ديگري از ارتباط بين نروني در شبكههاي عصبي به ارتباط بازخورد يا feedback معروف است. در اين نوع از ارتباطات، خروجي يك لايه نروني به لايه قبلي (يا به لايهاي كه چند مرحله پايينتر است) اتصال داده ميشود. در شكل 2 نمونهاي از يك شبكه عصبي نمايش داده شده كه در آن از ارتباط بازخوردي استفاده شده است. در نرمافزارهاي پيشرفته شبكههاي عصبي، كاربر و طراح شبكه عصبي ميتواند نوع ارتباطات بين نرونها و لايههاي آنها را تعيين كند. آموزش شبكههاي عصبي تا اينجا از ساختار شبكههاي عصبي صحبت كرديم. گفتيم كه شبكههاي عصبي ميتوانند بر اساس طراحي خود سيگنالهاي ورودي را پردازش كنند و به سيگنالهاي خروجي مورد نظر تبديل نمايند. به طور معمول، پس از آنكه يك شبكه عصبي طراحي و پيادهسازي شد، بايد پارامترهاي w و b (كه قبلاً معرفي كرديم) به ازاي مجموعههايي از سيگنالهاي ورودي، بهگونهاي تنظيم شوند كه سيگنالهاي خروجي شبكه خروجي مطلوب را تشكيل دهند. چنين فرايندي را آموزش ديدن شبكه عصبي مينامند (در نخستين مرحله آموزش، مقادير w و b بهطور تصادفي انتخاب ميشوند. زيرا تا اين پارامترها مقدار نداشته باشند، شبكه عصبي قابل استفاده نخواهد بود) در حين آموزش ديدن شبكه عصبي (يعني به تدريج همزمان با افزايش دفعاتي كه مقادير پارامترها براي رسيدن به خروجي مطلوبتر، تنظيم ميشوند) مقدار پارامترها به مقدار حقيقي و نهايي خود نزديكتر ميشوند. بهطور كلي دو روش براي آموزش دادن شبكههاي عصبي وجود دارد. روش supervised و روش unsupervised. روش نخست، شامل مراحلي است كه در بخش قبل، بهطور مختصر تشريح شد. اما در روش unsupervised، شبكه عصبي بايد بدون كمك گرفتن از جهان خارج، بتواند كار آموزش را انجام دهد. واقعيت آن است كه در عمل از روش supervised و يا حداكثر از روشهاي تركيبي استفاده ميشود و فرايند آموزش unsupervised به شكل خالص تنها وعدهاي است كه شايد در آينده بتواند تحقق يابد. در حال حاضر و در كاربردهاي پيشرفته، از روش آموزش unsupervised براي ايجاد تنظيمات اوليه بر روي سيگنالهاي ورودي شبكههاي عصبي استفاده ميشود و باقي مراحل آموزش شبكه به روش supervised ادامه مييابد. همانطور كه قبلاً اشاره كرديم، در روش معمول آموزش شبكههاي عصبي، از مجموعه شناختهشدهاي از دادههاي ورودي و خروجيهاي متناظر آنها (training set data) براي آموزش دادن شبكه استفاده ميشود. در چنين فرايندي، پس از اعمال مجموعههاي دادههاي آموزشي، پارامترهاي شبكه به تدريج به سمت مقادير نهايي خود همگرا ميشوند. بستههاي نرمافزاري پيشرفته توليد و طراحي شبكههاي عصبي، داراي ابزارهايي هستند كه بر روند آموزش شبكه مديريت ميكنند. چنين ابزارهايي ميتوانند سرعت همگرايي پارامترهاي شبكه را زير نظر بگيرند و به عنوان مثال، اجازه دهند كه پارامترهاي يك شبكه مشخص، در طول چندين روز به دقت كافي و مورد نظر طراحان خود برسد. در مواردي ممكن است كه شبكه عصبي اصولاً موفق به فراگيري نشود. بدين معني كه پارامترهاي شبكه پس از زمانهاي طولاني به مقدار مشخصي همگرا نشود. ر شبكههاي عصبي قادر به يافتن الگوهايي در اطلاعات هستند كه هيچكس، هيچگاه از وجود آنها اطلاع نداشته است. چنين مواردي ممكن است بر اثر ناكافي بودن دادههاي آموزشي و يا اصولاً نقص طراحي شبكه ايجاد شوند. حتي مواردي در عمل وجود دارند كه شبكه عصبي مشخصي، بر اثر آموزش بيش از حد، اصطلاحا over trained شود. توجه داشته باشيد كه فرايند آموزش شبكههاي عصبي فقط به ازاي زير مجموعهاي از دادههايي كه قرار شبكه آنها را در كاربرد حقيقي خود پردازش كند، آموزش داده ميشوند. درصورتيكه تعداد دادههاي آموزشي يك شبكه عصبي بيش از اندازه زياد باشد (در واقع از تمامي دادههاي مسئله براي آموزش دادن به شبكه استفاده شود)، شبكه عصبي به جاي آنكه آموزش ببيند، به حالتي ميرسد كه به آن حفظ كردن اطلاعات ميگويند. در واقع به جاي آنكه يك شبكه عصبي براي حل مسئله از هوش خود كمك بگيرد، از محفوظات خود استفاده ميكند! پس از آنكه يك شبكه عصبي به اندازه كافي آموزش ديد، طراح يا كاربر شبكه ميتواند پارامترهاي شبكه را قفل كند (هر چند كه در مواردي پارامترهاي شبكه آزاد گذارده ميشوند تا در طول كاربرد واقعي بازهم شبكه آموزش ببيند). در اين مرحله شبكه عصبي براي كاربرد واقعي خود و حل مسائل آماده خواهد بود. در برخي از ابزارهاي توليد و طراحي شبكههاي عصبي، كل شبكه عصبي به همراه پارامترهاي قفل شده آن، تبديل به نرمافزار مستقلي (مثلاً يك فايل dll) ميشوند كه ميتوان از آن در پروژههاي مشخصي استفاده كرد. در برخي از موارد ديگر، چنين شبكههايي پس از آموزش ديدن، به شكل سختافزاري در قالب يك مدار مجتمع (IC) به توليد انبوه يا نيمه انبوه ميرسند. آموزش unsupervised يا تطبيقي (Adaptive) در مورد اين روش آموزش گفتيم كه شبكه عصبي بدون در اختيار داشتن دادههاي خروجي، در معرض آموزش قرار ميگيرد. در واقع سيستم به تنهايي و بدون كمك خارجي بايد با توجه به شكل سيگنالهاي خروجي خود، درباره درستي و نادرستي آنها تصميمگيري نمايد. در دنياي واقعي شرايط بسيار زيادي وجود دارند كه در آنها مجموعه اطلاعات كافي براي آموزش دادن به سيستم فراهم نيستند. تحقيقات نظامي يكي از گرايشهايي است كه به اين موضوع توجه دقيقي دارد. به عنوان مثال گفته ميشود كه شرايط جنگي به دليل فراواني پارامترها و تكنيكهاي نظامي متغير و پيشرفتهاي تكنولوژي نظامي، از نمونه مواردي است كه در آنها به هيچ وجه نميتوان مجموعه دادههاي آموزشي كافي به دست آورد. در اين زمينه يكي از محققان شبكههاي عصبي، به نام Tuevo Kohonen (از دانشگاه هلسينكي) فعاليتي جدي دارد. كوهنن با تحقيقات در ساختارهاي عصبي غيرمتعارف، به پژوهش در اين زمينه ادامه ميدهد. كوهنن، نرونهاي شبكهعصبي را فيلدهاي مختلفي تقسيمبندي ميكند. در روش كوهنن، نرونهاي هر فيلد <مرتب توپولوژيك> يا Topologically ordered محسوب ميشوند (توپولوژي نام شاخهاي از رياضيات است كه در آن نگاشت از يك فضا به فضاي ديگر بدون تغيير مشخصههاي هندسي، مورد بررسي قرار ميگيرد). گروهبنديهاي سهبعدي كه در ساختار مغز پستانداران يافت شده است، نمونهاي از مرتبسازي توپولوژيك محسوب ميشوند. كوهنن معتقد است كه فقدان ملاحظات توپولوژيك در مدلهاي عصبي امروزي، باعث ميشود كه شبكههاي عصبي امروزي، مدلهاي ساده شدهاي از شبكههاي عصبي واقعي موجود در مغز محسوب شوند. در هر صورت اين حوزه از مبحث شبكههاي عصبي، هنوز در مرحله تحقيقات آزمايشگاهي قرارداد و كاربرد واقعي نيافته است. تفاوتهاي شبكههاي عصبي با روشهاي محاسباتي متداول و سيستمهاي خبره گفتيم كه شبكههاي عصبي روش متفاوتي براي پردازش و آناليز اطلاعات ارائه ميدهند. اما نبايد اين گونه استنباط شود كه شبكههاي عصبي ميتوانند براي حل تمام مسائل محاسباتي مورد استفاده واقع شوند. روشهاي محاسباتي متداول همچنان براي حل گروه مشخصي از مسائل مانند امور حسابداري، انبارداري و محاسبات عددي مبتني بر فرمولهاي مشخص، بهترين گزينه محسوب ميشوند. جدول 1، تفاوتهاي بنيادي دو روش محاسباتي را نشان ميدهد. مشخصه روش محاسباتي متداول (شامل سيستمهاي خبره) شبكههاي عصبي مصنوعي روش پردازش ترتيبي موازي توابع منطقي (left brained) (estault (right brained روش فراگيري به كمك قواعد (didactically) با مثال (Socratically) كاربرد حسابداري، واژه پردازي، رياضيات، ارتباطات ديجيتال پردازش حسگرها، تشخيص گفتار، نوشتار، الگو جدول 1 سيستمهاي خبره، انشعابي از روش محاسباتي متداول محسوب ميشود و در مواردي هم به آن نسل پنجم محاسبات نام دادهاند (نسل اول از كليد و سيمبندي استفاده ميكرد، نسل دوم با اختراع ترانزيستور ايجاد شد، نسل سوم از فناوري مدارات مجتمع استفاده ميكرد، نسل چهارم با به وجود آمدن زبانهاي سطح بالا آغاز شد و نسل پنجم شامل هوش مصنوعي ميشود). به طور معمول، يك سيستم خبره شامل دو بخش عمده ميشود. يك بخش يا موتور استنتاجي و يك پايگاه دانايي (Knowledge base). موتور استنتاجي، بخشي است كه رابط كاربر را مديريت ميكند و بر فايلها و دسترسي به برنامهها و برنامهريزي كنترل دارد. پايگاه دانايي شامل اطلاعاتي در ارتباط با يك مسئله مشخص است. اين پايگاه به متخصصان اجازه ميدهد كه قواعد فرايند مشخصي را تعريف نمايد. چنين متخصصي نيازي به دانستن روشهاي برنامهنويسي نخواهد داشت. او تنها بايد كاري كه از كامپيوتر ميخواهد را درك كند و شناخت كافي از روش عمل سيستم داشته باشد. درواقع پوسته سيستم بخشي است كه به كامپيوتر ميگويد چهكار بايد انجام دهد. برنامه لازم براي حل مسئله توسط خود سيستم توليد خواهد شد. تلاشهايي كه براي اجرايي كردن سيستمهاي خبره به كار گرفته شدهاند، با مشكلات مشتركي مواجه بودهاند. با افزايش سطح پيچيدگي سيستمها، منابع كامپيوتري مورد نياز سيستم به شدت افزايش مييابند و سيستم با كندي بيش از حد روبرو ميشود. در حقيقت تجربه نشان داده است كه در وضعيت فعلي، سيستمهاي خبره تنها ميتوانند در مواقعي مفيد واقع شوند كه هدف محدود و مشخصي تعيين شده باشد. شبكههاي عصبي در مسيري گام برميدارند كه ابزارها توانايي فراگيري و برنامهريزي خود را داشته باشند. ساختارشبكههاي عصبي به گونهاي است كه قابليت حل مسئله را بدون كمك فرد متخصص و برنامهريزي خارجي داشته باشند. شبكههاي عصبي قادر به يافتن الگوهايي در اطلاعات هستند كه هيچكس، هيچگاه از وجود آنها اطلاع نداشته است. درحاليكه سيستمهاي خبره در عمل به موفقيتهاي بسياري دست يافتهاند، شبكههاي عصبي در كاربردهايي همچون ديد مصنوعي، تشخيص و توليد پيوسته گفتار، فراگيري ماشيني و نظاير آن با مشكلاتي روبرو بودهاند. در حال حاضر شبكههاي عصبي كاملاً وابسته به سرعت پردازنده سيستم اجرا كننده هستند. یک روش مهندسی یک سلول عصبی ساده یک سلول عصبی مصنوعی دستگاهی است با تعداد زیادی ورودی و یک خروجی . سلول عصبی دو گونه عمل دارد ; حالت یادگیری پرورشی و حالت کاربردی . در حالت یادگیری سلول می آموزد که برای حالت خاصی فعال و بر انگسخته شود ( یا برای همان حالت بر انگیخته نشود). و در حالت کاربردی و استفاده وقتی الگوی ورودی آموزش یافته ای در ورودی شناسایی شود خروجی مرتبط با آن خروجی کنونی سلول می شود . اگر الگوی ورودی به لیست الگو های ورودی ای کا از پیش به سلول آموزش داده شده نباشد ، قوانین فعال سازی سلول خروجی سلول را تعیین می کند که آیا فعال کننده باشد یا نه. قوانین فعال سازی قانون فعال سازی مفهوم مهمی در شبکه های عصبی است و مسئول انعطاف پذیری بالای دستگاه می باشد . قانون فعال سازی تعیین میکند که چگونه یک واحد محاسبه کند که آیا یک سلول عصبی باید برای هر الگوی ورودی واکنش فعال سازی را انجام دهد. این قانون برای کلیه الگو ها شرح داده می شود نه فقط برای آنهایی که گره عصبی برایش پرورش یافته است. یک قانون فعال سازی ساده بوسیله تکنیک فاصله Hamming قابل اجرا است قواننین به صورت زیر اجرا میشود: یک مجموعه از الگو های آموزشی را برای یک گره عصبی انجام دهید، تعدادی از این الگوها سبب فعالسازی (مجموعه الگوهای آموزشی با حاصل 1) و باقی که از فعالیت آن جلوگیری می کنند (مجموعه الگوهای آموزشی با حاصل0 ) سپس الگو های خارج از مجموعه ای سبب فعال سازی گره عصبی می شوند که عناصر مشترک بیشتری با نزدیکترین الگو در مجموعه آموزشی 1 دارند تا با نزدیکترین الگو در مجموعه آموزشی 0 . اگر در این بین گرهای وجود داشته باشد الگوی مورد نظر در وضعیت غیر تعریف شده باقی می مانند. بعنوان مثال ، یک سلول عصبی با 3 ورودی در نظر بگیرید که آموزش یافته تا خروجی 1 را زمانی بدهد که ورودی (x1 ،x2 وx3) 111 یا 101 است و خروجی 0 را زمانی داشته باشد که ورودی 000و001 است. پس قبل از اعمال قانون فعال سازی ، جدول درستی به صورت زیر است: X1: 0 0 0 0 1 1 1 1 X2: 0 0 1 1 0 0 1 1 X3: 0 1 0 1 0 1 0 1 OUT: 0 0 0/1 0/1 0/1 1 0/1 1 010 را بعنوان مثالی که در آن قوانین فعال سازی اعمال می شود در نظر بگیرید. این ورودی با ورودی 000 در یک عنصر و با ورودی001 در دو عنصر متفاوت است ، با 101 در سه عنصر وبا 111 در دو عنصر متفاوت است . بنابر این نزدیکترین الگو به آن 000 است که به الگوهای آموزشی با حاصل0 تعلق دارد . در نتیجه قوانین فعال سازی لازم می داند زمانی که ورودی 001 است تا سلول عصبی فعالیتی نکند . از طرف دیگر ، 011 در فاصله ای برابر بین در دسته الگو های آموزشی است که دارای خروجی های متفاوتی هستند بنابراین خروجی این الگو بدون تعریف می ماند (1/0). با اعمال قوانین فعال سازی تمام ستون های جدول درستی زیر به دست آمده است: X1: 0 0 0 0 1 1 1 1 X2: 0 0 1 1 0 0 1 1 X3: 0 1 0 1 0 1 0 1 OUT: 0 0 0 0/1 0/1 1 1 1 تفاوت بین دو جدول عمومیت دادن سلول عصبی نامیده می شود بنابر این قوانین فعالسازی به سلول عصبی حس تشخیص شباهت ها را می دهد و آنها را قادر می کند تا هوشمندانه به الگو هایی که در طول تمرین آنها را ندیده اند جواب بدهد. الگوشناسی- یک مثال یکی از کاربردهای شبکه های عصبی تشخیص الگو است.الگوشناسی با استفاده از شبکه های عصبی که ازپیش (مانند شکل 1) تغذیه شده اند و مطابق با موضوع پرورش یافته اند قابل اجرا است.وقتی از شبکه استفاده می کنیم خودش الگو های ورودی را شناسایی می کند و سعی می کند تا خروجی متناسب با آن الگو را بدهد . توان شبکه های عصبی زمانی خودش را نشان می دهد که الگویی به عنوان ورودی به آن داده شود که از قبل خروجی مرتبط با آن را نداشته ، در یان وضعیت خروجی متناسب است با یک الگوی ورودی که داری حداقل اختلاف با الگوی داده شده است. بعنوان مثال: شبکه عصبی در شکل 1 برای شناسایی الگوهای حروف T وH آموزش داده شده اند.همانگونه که شکل نشان می دهد الگوهای مرتبط بترتیب تماما سیاه و تماما سفید هستند . اگر ما مربع های سیاه را با 0 و مربع های سفید را با با 1 نمایش دهیم بنابراین جدول درستی برای سه سلول عصبی بعد از عمومیت دادن (با قانون فعال سازی ) به صورت زیر است. X11: 0 0 0 0 1 1 1 1 X12: 0 0 1 1 0 0 1 1 X13: 0 1 0 1 0 1 0 1 OUT: 0 0 1 1 0 0 1 1 خروجی سلول بالایی X21: 0 0 0 0 1 1 1 1 X22: 0 0 1 1 0 0 1 1 X23: 0 1 0 1 0 1 0 1 OUT: 1 0/1 1 0/1 0/1 0 0/1 0 خروجی سلول میانی X21: 0 0 0 0 1 1 1 1 X22: 0 0 1 1 0 0 1 1 X23: 0 1 0 1 0 1 0 1 OUT: 1 0 1 1 0 0 1 0 خروجی سلول پایینی می توان موضوعات تداعی شده زیر را از جداول بالا است استخراج کرد. در این مورد ، این کاملا واضح است که خروجی می تواند تماما سیاه باشد زمانی که الگوی ورودی تقریبا شبیه الگوی T است. این جا هم کاملا آشکار است که خروجی کاملا سفید خواهد بود زمانی که الگوی ورودی تقریبا شبیه الگوی H است. دراینجا، ردیف بالایی با دو اشتباه از الگوی T وبا سه تا اشتباه از الگوی H دور است بنابراین خروجی بالایی سیاه . ردیف میانی با یک اشتباه از هر دو الگوی TوH دور است.بنابراین خروجی بصورت اتفاقی انتخاب می شود. ردیف پایینی با یک اشتباه از الگوی T و با دو اشتباه از الگوی H دور است. بنابراین خروجی سیاه است. کل خروجی شبکه هنوز به نفع شکل Tاست. یک سلول عصبیی کمی پیچده تر سلول عصبی قبلی کاری که کامپیوتر های متعارف انجام ندهند را انجام نمی دهد . سلول عصبی کمی پیچیده تر مدل McCulloch و Pitts (MCP)است. فرق آن با مدل قبلی این است که ورودی ها وزن دار هستند، تاثیری که هر ورودی در گرفتن تصمیم دارد بستگی به وزن یک ورودی خاص دارد.وزن یک ورودی عددی است ، زمانی که این عدد در وردی ضرب می شود ورودی وزندار را می دهد. این ورودی های وزندار سپس با هم جمع می شود و اگر مجموع آنها از ارزش آستانه ای از پیش تنظیم شده تجاوز کند سلول فعال می شود . در موارد دیگر سلول فعال نمی شود. (شکل 2) به بیان ریاضی ، سلول عصبی فعال می شود اگر و فقط اگر: X1W1 + X2W2 + X3W3 + ... > T افزایش وزن های ورودی و بوسیله ی آستانه ارزش این سلول عصبی را یک سلول منعطف و قدرتمند می کند . سلول ها MCP قابلیت سازگاری با وضعیتی خاص را بکمک تغییر وزن ها و یا آستانه ارزش، دارد. الگوریتم های گوناگونی وجود دارد که سبب سازگاری سلول عصبی می شود ، پر استفاده ترین آنها قانون دلتا( Delta )است و روش پخش اشتباه گذشته(back error propagation)است . قالبی که در شبکه های از پیش تغذیه شده وبعد از آن در شبکه های بازخوردی استقاده شده است. معماری شبکه های عصبی شبکه های عصبی از قبل تغذیه شده شبکه های از قبل تغدیه شده (شکل 1) به سیگنال ها اجازه می دهند تنها از مسیر یکطرفه عبور کنند، یعنی از ورودی تا خروجی. بنابراین باز خوردی( حلقه ها) وجود ندارد به این معنی که خروجی هر لایه تاثیری بر همان لایه ندارد . این گونه سازماندهی ازپایین به بالا واز بالا به پایین هم نام برده می شوند. شبکه های عصبی بازخوردی شبکه های بازخوردی می توانند سیگنال هایی داشته باشند که در هر دو مسیر با استفاده از حلقه های درست شده ،حرکت کنند . شبکه های بازخوردی خیلی قدرتمند هستند و می توانند به شدت پیچیده شوند. شبکه های بازخوردی پویا هستند ، وضعیت آنها پیوسته در حال تغییر است تا آنها به یک نقطه تعادل برسند.آنها در این وضعیت تعادل باقی می مانند تا زمانی که ورودی تغییر کند و نیاز باشد تا تعادل تازهای پیدا شود. معماری های بازخوردی ، بر هم کنشی(interactive) وبازگشت کننده (recurrent) هم نامیده می شوند، اگر چه این لفظ آخری بسشتر برای مشخص کردن اتصالات بازخوردی در سازماندهی های تک لایه به کار می رود . شبکه های عصبی(neural networks) مطمئن هستم که تا به حال چیزهایی راجع به شبکه های عصبی شنیده ، یا خوانده اید چون این شبکه ها در حوزه ای میان ریاضیات ، علوم کامپیوتر و AI قرار دارند مطلب زیر را با بضاعت اندک خود از آدرس زیر ترجمه کردم . خواندن با حوصله این مقاله را که در چند بخش ارائه می شود ، به شما توصیه می کنم بدون شک در پایان دید نسبتا خوبی نسبت به موضوع پیدا خواهید کرد.حتی اگر برگردان فارسی یک دانشجوی کم سواد را قبول ندارید خواندن متن اصلی و جستجو در موتور های جستجو راجع به آن را به تمامی علاقه مندان توصیه میکنم چگونه يك شبكه عصبي هوشمند بسازيم؟ - مثالي از برنامهنويسي شيءگرا در شبكههاي عصبي و هوش مصنوعي قدرت و سرعت كامپيوترهاي امروزي به راستي شگفت انگيز است؛ زيرا كامپيوترهاي قدرتمند ميتوانند ميليونها عمليات را در كمتر از يك ثانيه انجام دهند. شايد آرزوي بسياري از ما انسانها اين باشد كه اي كاش ميشد ما نيز مانند اين دستگاهها كارهاي خود را با آن سرعت انجام ميداديم، ولي اين نكته را نبايد ناديده بگيريم كه كارهايي هستند كه ما ميتوانيم آنها را به آساني و در كمترين زمان ممكن انجام دهيم، ولي قويترين كامپيوترهاي امروزي نيز نميتوانند آنها را انجام دهند و آن قدرت تفكري است كه مغز ما انسانها دارد. حال تصور كنيد كه دستگاهي وجود داشته باشد كه علاوه بر قدرت محاسبه و انجام كارهاي فراوان در مدت زمان كوتاه، قدرت تفكر نيز داشته باشد يا به قول معروف هوشمند باشد!اين تصور در حقيقت هدف فناوري هوش مصنوعي يا Artificial Intelligence) AI) است. يكي از راهحلهاي تحقق اين هدف، شبكههاي عصبي است. شبكههاي عصبي در واقع از شبكههاي عصبي و سيستم عصبي انسان الگوبرداري ميكنند. برخي از محققان براين باورند كه هوش مصنوعي و شبكههاي عصبي دو راهحل متفاوت و در دو جهت مختلف هستند، ولي اين باور را نميتوان كاملاً صحيح دانست؛ چرا كه در حقيقت علم شبكههاي عصبي و هوشمصنوعي وابسته به هم هستند. بدينمعنا كه قبل از اينكه Symbolها بتوانند توسط هوش مصنوعي شناسايي شوند، بايد مراحلي طي شود. مثلاً تصور كنيد كه Symbolهايي مانند خانه، انسان يا ميز وجود دارند. قبل از اين كه AI بتواند هر كدام از اين Symbolها را شناسايي كند، بايد از تواناييها و صفات هر كدام از اينها اطلاع كامل حاصل كند. مثلاً تصور كنيد كه يك روبات كه هوش مصنوعي دارد، يك انسان را ميبيند، ولي از كجا ميفهمد كه اين جسم يك انسان است؟ مثلاً بر اساس مشخصاتي مثل داشتن دو پا، دست، صورت، دهان و قدرت تكلم. اما شما وقتي يك انسان ديگر را ميبينيد، نيازي نداريد كه اول تعداد پاهاي او را بشماريد و بعد بگوييد كه اين جسم، انسان است. مغز انسانها ميتواند با ديدن يك جسم فقط براي يك بار ياد بگيرد و اگر مجدداً آن جسم را مشاهده كرد، ميتواند سريع تشخيص دهد و قسمتهاي مختلف مغز ميتوانند به صورت همزمان فعاليت كنند و از اطلاعات درون مغز استفاده نمايند. شبكههاي عصبي در بسياري از پروژههاي هوش مصنوعي به كار گرفته ميشود. مثلاً براي برنامههاي تشخيص و الگوبرداري، شناسايي تصوير و كاراكتر، روباتها و برنامههاي فيلترينگ اطلاعات. اين شبكهها امروزه حتي در اتومبيلهاي بيسرنشين نيز كاربرد دارد. به طوريكه با ديدن و بررسي رانندگي انسانها، ميتوانند رانندگي كنند. در اين مقاله اصول شبكههاي عصبي در برنامهنويسي شيءگرا مورد بررسي قرار ميگيرد. با استفاده از زبان #C و انجام دادن عمليات X-OR ساده ميتوانيد اولين برنامه ساده هوش مصنوعي خود را بنويسيد. لازم به ذكر است كه مثالي كه در اين مقاله از آن استفاده شده، از مقاله Matthew Cochran (سي شارپ كورنر) اقتباس شده است. براي يادگيري بيشتر شبكههاي عصبي بهتر است اين شبكهها را با شبكههاي عصبي مغز خود مقايسه كنيم. در حقيقت هر نورون در مغز ما يك ورودي دارد كه از نورونهاي ديگر ميآيد و يك خروجي كه به نورون يا نورونهاي بعدي ميرود. براي اينكه بتوانيم اين كار را دقيقاً در برنامه خود شبيهسازي كنيم، لازم است يك كلاس مانند شكل 1 قسمت اول طراحي كنيم كه ضمن داشتن مشخصههاي خاص، يك خروجي داشته باشد. البته همانطور كه در قسمت دوم نيز مشاهده ميكنيد (شكل 1)، هر نورون ميتواند داري چندين ورودي نيز باشد. همانطور كه در شكل 1 مشاهده ميكنيد، نورونها به صورت گروهي لايهبندي ميشوند. شكل 1 وقتي سيگنال يا پالسي به يك لايه ارسال ميشود، اين سيگنال از لايه بالايي شروع به فعاليت ميكند و توسط نورونهاي آن لايه بررسي و اصلاح ميگردد. در حقيقت هر نورون قدرت سيگنال را بالا ميبرد و آن پالس را به لايه بعدي انتقال ميدهد. (شكل 2) حال كه تقريباً با كار يك لايه عصبي آشنا شديد، ميتوانيم شبكههاي پيچيدهتر را مورد بررسي قرار دهيم. براي اين كار حداقل به سه گروه از نورونهايي كه در شكل 2 ميبينيد، نياز داريم. شكل 2 همانطور كه در شكل 3 مشاهده ميكنيد، اين شبكه داراي سه لايه است. لايه 1 يا لايه بالايي اين شبكه كه در حقيقت لايه ورودي است، پارامترهاي پالس را تنظيم ميكند و اين مقادير را همراه سيگنال يا پالس به لايههاي بعدي پاس ميدهد، ولي نورونهاي لايه 3 يا لايه خروجي كه در پايينترين سطح شبكه قرار دارد، هيچ سيگنالي را به لايه ديگري نميفرستند و در واقع فقط خروجي دارند. شكل 3 حال قسمت اصلي كار شبكه فرا ميرسد؛ يعني آموختن به شبكه عصبي. ب راي اينكه به شبكه عصبي موجود توانايي آموختن بدهيم، بعد از اينكه سيگنال از لايه اول شبكه به لايه پاييني شبكه ميرود، بايد اطلاعات هر نورون را كه روي سيگنال ما اثر ميگذارد، بروزآوري و اصلاح كنيم. اين رويه را به اصطلاح BP يا Back Propagation ميگويند. شكل 3 در حقيقت با اين كار يعني مقايسه خروجياي كه خودمان محاسبه كردهايم با خروجي شبكه، ميتوانيم مقدار اشتباهاتي كه شبكه ما انجام ميدهد را به دست آوريم. مثلاً تصور كنيد كه در يك سلول نورون در لايه آخر شبكه يا لايه خروجي اشتباهي داريم، هر نورون در واقع ركورد تمامي نورونهايي كه سيگنال از آن عبور ميكند را نگهداري مينمايد و ميداند كه كدام يك از نورونهاي قبلي يا به اصطلاح نورونهاي والد باعث اين اشتباه ميشوند. همچنين ميدانيم كه هر كدام از اين نورونهاي شبكه يك مقدار اشتباه را محاسبه كردهاند و از اين طريق شبكه ما ميتواند ياد بگيرد و اگر مقدار ديگري نيز به آن داده شد، ميتواند توانايي محاسبه داشته باشد. شكل 4 حال كه كمي در مورد شبكههاي عصبي صحبت كرديم، ميتوانيم برنامه سيشارپ خود را شروع كنيم. اولين كاري كه بايد انجام دهيم، ايجاد يك اينترفيس ساده است كه بعداً آن را عملياتي ميكنيم. همانطور كه در كدهاي شكل 4 ميبينيد، يك اينترفيس به نام Interface 1 ساختهايم. اين اينترفيس در واقع حركت يك سيگنال را در شبكه ما تعريف ميكند. وقتي اين كار را انجام داديم، به يك اينترفيس ديگر نياز داريم كه ورودي نورون را تعريف كند. براي اين كار بايد از يك دايركتوري عمومي استفاده كنيم. اين دايركتوري كليد سيگنال يا همان پالس است و خروجي يك كلاس است كه پارامتر Weight پالس را مشخص ميكند. (كدهاي شكل 5). شكل 5 حال نوبت به نوشتن كدهاي كلاس اصلي برنامه ميرسد. نام اين كلاس را NeuralFactor ميناميم (كدهاي شكل 6). شكل6 در كدهاي اين كلاس ميبينيد كه دو مقدار Private به نامهاي Mywight و MyDelta نوع double و جود دارد. كار اصلي اين كلاس، دادن و گرفتن مقادير نورون است و در واقع تغييرات در ورودي نورونها و وزن آنها را نگهداري ميكند. حال ميتوانيم يك اينترفيس براي خود نورون درست كنيم. از آن جايي كه هر نورون هم مشخصات سيگنال و هم Receptor را دارد، بايد از دو اينترفيسي كه قبلاً در شكل هاي 5 و 4 توضيح داده شد، استفاده كند. همچنين هر نورون چيزي مانند يك ورودي ديگر نيز دارد كه به آن Bias ميگوييم. اضافه براين، بايد دو متد براي انجام كار در شبكه درست كنيم: يكي براي انجام Pulse و ديگري براي يادگيري نورون. كدهاي شكل 7 تمامي اين اينترفيس را مشخص كرده است. شكل7 در قسمت پايين اين كدها يك اينترفيس ديگر به نام INeuralLayer مشاهده ميكنيد. اين اينترفيس براي لايههاي نورونهاي شبكه است و براي انتقال پالس از يك لايه به لايه ديگر و توانايي يادگيري در يك لايه به كار گرفته ميشود. و بالاخره آخرين اينترفيس ما خود شبكه را تعريف ميكند. از تواناييهاي اين اينترفيس ميتوان، قابليت نگهداري لايههاي شبكه، انتقال پالس و قابليت يادگيري شبكه را نام برد. اكنون كه با اينترفيسهاي اين شبكه ساده آشنا شديد، نوبت به ساختن اجزاي اصلي برنامه ميرسد. اولين كاري كه بايد در اين قسمت انجام دهيم، ساختن كلاس اصلي نورون است كه بايد آن را بر اساس اينترفيسهايي كه ساختهايم، درست كنيم. شكل 8 ساختار اصلي اين كلاس را نشان ميدهد. شكل8 همانطور كه در اين شكل مشاهده مينماييد، اين كلاس تعدادي متغير و چندين متد دارد. در اين كلاس دو متد اصلي وجود دارد: متد Sigmoid و متد Pulse كدهاي شكل 9 اين دو متد را نشان ميدهد. شكل 9 اگر كمي به كدهاي شكل 9 و متد Pulse دقت كنيد، متوجه ميشويد كه اين متد جمع هر ورودي يا هر خروجي كه به نورون داده ميشود را دريافت ميكند و در Weight مربوطه كه در دايركتوري است ضرب ميكند و آخرين خروجي آخرين را به متد Sigmoid انتقال ميدهد و در نتيجه خروجي آخر ما عددي بين 0 و 1 خواهد بود. حال دو كلاس مهم از اين شبكه باقيمانده است: اولين كلاس، كلاس اصلي شبكه يا NeuralNet است و ديگريNeuralLayer، كلاس لايههاي شبكه ما است. اين دو كلاس در شكل 10 به صورت مشخص نشان داده شده است، اما نكته بسيار مهم اين است كه كلاس NuralLayer در حقيقت مسئول نگهداري نورونهاي انتقالدهنده يا فراخوانكننده متد Pulse است. کلاس اصلي شبکه کلاس لايههاي شبکه شكل 10 در اين كلاس از فهرست نورونها استفاده شده است و اين كلاس در اصل نورونها را در خود جا ميدهد. در اين كلاس دو متد كه هيچ مقدار برگشتي ندارند، به نامهاي Pulse و ApplyLearning وجود دارد. اين متدها در حقيقت كار فرستادن پالس و يادگيري لايهها را به عهده دارند. كدهاي شكل 11 اين دو متد را نشان ميدهد. شكل 11 كلاس NeuralNet (شكل 12) همانطور كه قبلاً توضيح داده شد، يكي از مهمترين كلاسهاي برنامه ما است. در اين كلاس سه متد بسيار مهم وجود دارد: Initialize ،Train و BackProgation متد Initialize در واقع شبكه ما و كامپوننتهاي آن را آماده ميكند. اين متد در واقع متد Factory ما است. در اين متد مقادير عددي نورونهاي ورودي، نورونهاي مخفي و نورونهاي خارجي مشخص ميگردند. شكل 12 متد BackProgation يكي ديگر از متدهاي اين كلاس است. اين متد ابتدا خطاهاي خروجي نورونها را با محاسبه اختلاف عددي بين مقدار مورد انتظار ما و خروجي نورونها محاسبه ميكند و وقتي كه خروجي همه نورونها بروز گرديد، اين متد خطاهاي نورونهاي پنهان را نيز محاسبه ميكند. شكل 13 وقتي اين متد توسط برنامه انجام شد، برنامه با استفاده از متد، ()Train و با استفاده از خروجيهاي قبلي ميتواند توانايي يادگيري داشته باشد. اگر بخواهيم شبكه خود را آموزش دهيم كه عمليات X-OR را انجام دهد، بايد ابتدا يك شبكه بسازيم كه دو نورون ورودي، دو نورون پنهان و يك نورون خروجي داشته باشد. مثلاً ميتوانيم شبكه خود را طوري آموزش دهيم كه بتواند عمليات مشخصشده در جدول 1 را انجام دهد: خروجي ورودي دوم ورودي اول 1 0 1 0 1 1 0 0 0 1 1 0 جدول 1 كل 13 روند اجرايي برنامه را نشان ميدهد. ميتوانيد سورس كدهاي اين برنامه را از قسمت دريافت فايل سايت ماهنامه شبكه دريافت كنيد و قدم به قدم و با استفاده از راهنماييهايي كه در آن نوشته شده است، تغييراتي در كدها انجام دهيد و اولين برنامه هوش مصنوعي خود را بنوسيد. الگوریتم ژنتیک : الگوریتم ژنتیک که بعنوان یکی از روشهای تصادفی بهینه یابی شناخته شده, توسط جان هالند در سال 1967 ابداع شده است. بعدها این روش با تلاشهای گلدبرگ 1989, مکان خویش را یافته و امروزه نیز بواسطه توانایی های خویش , جای مناسبی در میان دیگر روشها دارد. روال بهینه یابی در الگوریتم ژنتیک براساس یک روند تصادفی- هدایت شده استوار می باشد. این روش , بر مبنای نظریه تکامل تدریجی و ایده های بنیادین داروین پایه گذاری شده است.در این روش , ابتدا برای تعدادی ثابت که جمعیت نامیده می شود مجموعه ای از پارامترهای هدف بصورت اتفاقی تولید می شود , پس از اجرای برنامه شبیه ساز عددی را که معرف انحراف معیار و یا برازش آن مجموعه از اطلاعات است را به آن عضو از جمعیت مذکور نسبت می دهیم . این عمل را برای تک تک اعضای ایجاد شده تکرار می کنیم , سپس با فراخوانی عملگرهای الگوریتم ژنتیک از جمله لقاح , جهش و انتخاب نسل بعد را شکل می دهیم و این روال تا ارضای معیار همگرایی ادامه داده خواهد شد.(شکل 1) بصورت متداول سه معیار بعنوان معیار توقف شمرده می شود: I. زمان اجرای الگوریتم II. تعداد نسلهایی که ایجاد می شوند III. همگرایی معیار خطا کاربرد های الگوریتم ژنتیک : روندیابی هیدرولوژیکی رواناب جاری در شبکه رودخانه خشک کمک در حل مسایل تصمیم گیری چند معیاره بهینه سازی چند هدفه در مدیریت منابع آبی الگوریتم مورچگان : سیستم مورچه CE یک سیستم هوشمند پر ازدحام (مانند کندوی زنبوران) است و رفتار کاوش آذوقه مورچگان را تقلید می کند که شامل تعداد زیادی عامل با رفتارهای ساده است که بطور غیر مستقیم و غیر همزمان با هم ارتباط برقرار می کنند . همه عاملها مأموریت جستجوی مسیرهای حلقه ای و گزارش کیفیت مسیر که بوسیله مفهوم " عملکرد مسیر " تعریف می شود , را دارند. کاربردهای الگوریتم مورچگان : ایجاد و نگهداری اتصال مسیرهای اولیه و پشتیبانی از هم گسیخته . حل مسایل مربوط به پیدا کردن و نگهداری مسیرهای مجازی در یک شبکه ارتباطات با تغییر شرایط. ساختار اتوماتیک سایتهای پرتال در وب . استفاده در مسیریاب های نرم افزاری و عاملهای موبایل ( مثال زیر ) . مثال : مورچگان بین منبع غذا و لانه یک مسیر را حفظ می کنند. نکات کلی : لانه مورچه در کامپیوتر میزبان است. مورچگان عاملهای موبایل هستند. هدف : جلوگیری از بکارگیری اتصالات متراکم . پاکتهای داده در هر مسیریاب , مسیریابی می شوند. مسیریاب : پاکتهای داده با کلیک مسیریابی می شوند. کد مورچه در Java VM اجرا می شود. دو زیر سیستم اطلاعاتشان مورد نیازشان را با هم رد و بدل می کنند. میزبانان : مورچگان و تست ترافیک تولید می شوند . آمار نرخ پاکتها برای هر اتصال . تست انطباق : تمام اتصالات بین مسیریابها دارای ظرفیت 50 پاکت در ثانیه اند. ابتدا , دو اتصال بدون ترافیک ایجاد می شود. پس از مدتی , اتصال 1 شروع به فرستادن ترافیک CBR تقویت شده با نرخ 40 پاکت در ثانیه می کند. نتیجه اتصال 2 : در ابتدا , کوتاهترین مسیر ترجیح داده می شود. ترافیک ناشی از اتصال 1 منجر به افزایش هزینه می شود. اکنون مسیر دیگری کمترین هزینه را خواهد داشت. سیستم به مسیر منتخب سویچ می کند. ارزیابی : این الگوریتم برای پیاده سازی مسیریابهای نرم افزاری و عاملهای موبایل موجه است. عملکرد محدود است. پیاده سازی بر پایه سیستم عامل موبایل است. برای اجرای سیستم در شبکه بزرگتر , عملکرد باید بهبود یابد.
ادامه مطلب




