• انجام پرو‍ژه‌های دانشجویی مهندسی برق و کامپیوتر

    ترجمه متون تخصصی

    ADS, C++, CircuitMaker, CodeVisionAVR, EWB, LabVIEW, MATLAB, MAX+PLUS II, ModelSim, OrCAD, Protel DXP, Proteus, SIMULINK, VHDL, Neural Networks, Fuzzy Logic, Signal Processing, Image Processing,...

     

    پرو‍ژه‌های آماده       سفارش پروژه و ترجمه

  • تدریس خصوصی نرم‌افزار مهندسی برق و کامپیوتر

     

    ADS, C++, CircuitMaker, CodeVisionAVR, EWB, LabVIEW, MATLAB, MAX+PLUS II, ModelSim, OrCAD, Protel DXP, Proteus, SIMULINK, VHDL, Neural Networks, Fuzzy Logic, Signal Processing, Image Processing,...

     

    سفارش تدریس

  • دعوت به همکاری در انجام پروژه

     

    VHDL, C++, Cisco Packet Tracer, GNS3, Visual Basic, C#.Net, ASP.Net, Assembly, VB.Net, Delphi

     

    همکاری با ما

مقدمه ای بر شبکه های عصبی مصنوعی (قسمت دوم)

ساختار مغز انسان

مغز انسان به طور مستدل، پيچيده ترين شیء شناخته شده در جهان می باشد. با وجود اينکه مغز انسان در حدود 1.5 گيلو گرم وزن دارد، بيشتر آن را آب تشکيل می دهد و اگر از داخل جمجمه خارج گردد، بطور کامل فروريخته و ويران می شود.

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

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

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

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

نرون ها بر اساس ساختارهايی که بين آنها پيام ها هدايت می شوند، به سه دسته تقسيم می گردند:

1. نرون های حسی که اطلاعات را از ارگان های حسی به مغز و نخاع می فرستند.

2. نرون های محرک که سيگنال های فرمان را از مغز و نخاع به ماهيچه ها و غدد هدايت می

کنند.

3. نرون های ارتباطی که نرون ها را به متصل می کنند.

 

شکل زیر يک نرون بيولوژيکی را نشان می دهد.

 


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

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

مغز انسان چيزی در حدود 100 ميليارد نرون دارد که هر يک ممکن است اتصالات سيناپسی با بيش از 10000 نرون ديگر داشته باشند. اطلاعات به صورت سيگنال های الکتريکی و شيميايی، بصورت پيوسته در مغز انسان جريان دارند. مغز انسان وظيفه پردازش اطلاعات ورودی از حواس پنجگانه، و تفسير آنها را بر عهده دارد و تصميم می گيرد که بر اساس اطلاعات رسيده، چه عملی بايد انجام پذيرد.

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

مقدمه ای بر شبکه های عصبی مصنوعی (قسمت اول)

مقدمه

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

با ظهور کامپيوترها در دهه 1950، اين امکان فراهم گرديد، تا مقدمات تئوری هايی که مدت ها ذهن انسان را به خود مشغول کرده بود، مدل سازی گردد. ناتانال روچستر از لابراتوارهای تحقيقاتی IBM اولين کوشش ها را برای شبيه سازی شبکه های عصبی انجام داد. اولين کوشش با شکست مواجه شد. اما کوشش های بعدی موفقيت آميز بود. در همين زمان بود که کامپيوترهای اوليه شروع به شکوفا شدن کردند و اهميت دادن به محاسبات کامپيوتری، سبب شد، که تحقيقات در ضمينه شبکه های عصبی به حاشيه رفته و به فراموشی سپرده شود.

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

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

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

در سال 1985 انستيتوی فيزيک آمريکا اجلاس ساليانه خود را با نام «شبکه های عصبی برای محاسبات» برگزار کرد. در همين سال انستيتوی مهندسان برق و الکترونيک، اولين کنفرانس بين المللی در ضمينه شبکه های عصبی را برگزار کرد، که در آن بيش از 1800 نفر حضور داشتند.

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

ايجاد شبكه‌هاي عصبي با ابزار GUI

به طور كلي در نرم افزار MATLAB به سه روش مي توان شبكه هاي عصبي را ايجاد كرد:

1- كدنويسي

2- استفاده از سيستم هاي بلوكي(Simulink)

3- استفاده از محيط گرافيكي(GUI)

در اين نوشتار قصد دارم نحوه ي استفاده از GUI در جعبه ابزار شبكه عصبي را به دوستان معرفي كنم البته به دوستان توصيه مي كنم كه ابتدا با كدنويسي آشنا شوند زيرا ممكن است درجايي مجبور به نوشتن كد باشند مگر كساني كه شبكه عصبي، درس تخصصي آنها نبوده و فقط براي انجام قسمتي از پروژه شان مي خواهند از شبكه هاي عصبي استفاده كنند كه استفاده از GUI در اين مورد بسيار ساده و سريع است.

براي شروع nntool را در خط فرمان تايپ و اينتر كنيد و يا از مسير Start >> Toolboxes >> Neural Network >> Neural Network Tool استفاده كنيد پنجره اي مانند شكل زير مشاهده مي كنيد:

آموزش GUI در MATLAB (قسمت چهارم)

در قسمت دوم آموزش GUI ، طراحی یک GUI نسبتا کامل و در ارتباط با آنالیز سیستم های کنترلی را آغاز کردیم. در قسمت سوم آموزش نیز کدنویسی آن را شروع کردیم. حال می خواهیم در این قسمت ادامه ی کدنویسی آن را انجام داده و GUI نهایی را تست کنیم.

به Callback منوی Exit رفته و قطعه کد زیر را وارد کنید:

... ,'?button = questdlg('Do you want to quit the ControlTool

;('Quit the ControlTool','Yes','No','No'

switch button

,'case 'Yes

;('close('ControlTool

,'case 'No

;quit cancel

end

آموزش GUI در MATLAB (قسمت سوم)

طراحی بدنه ی اصلی GUI ، در قسمت دوم آموزش GUI ، شرح داده شد. حال در این مرحله برنامه را Run کرده و با نام ControlTool ذخیره کرده ایم. اینک می خواهیم کدهای آن را بنویسیم.

برای شروع ابتدا به قسمت ControlTool_OpeningFcn بروید تا کدهای بازشدن GUI را بنویسید. کدهای زیر را وارد کنید:

;([g=tf(1,[1 3 2 4

;(step(handles.axes1,g

;(rlocus(handles.axes2,g

;(bode(handles.axes3,g

این کدها نمودارهای سیستمی را که بصورت پیش فرض قرار داده ایم، رسم می کند. تابع تبدیل این سیستم، به قرار زیر است: