|
خرد و بینش و آگاهی دانشمندان ره سر منزل مقصود به ما آموزد
|
|
||||||
|
با ما در ارتباط باشید Z_blackhole@yahoo.com |
|
چگونه يك شبكه عصبي هوشمند بسازيم؟ - مثالي از برنامهنويسي شيءگرا در شبكههاي عصبي و هوش مصنوعي | |||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||
براي اينكه بتوانيم اين كار را دقيقاً در برنامه خود شبيهسازي كنيم، لازم است يك كلاس مانند شكل 1 قسمت اول طراحي كنيم كه ضمن داشتن مشخصههاي خاص، يك خروجي داشته باشد. البته همانطور كه در قسمت دوم نيز مشاهده ميكنيد (شكل 1)، هر نورون ميتواند داري چندين ورودي نيز باشد. همانطور كه در شكل 1 مشاهده ميكنيد، نورونها به صورت گروهي لايهبندي ميشوند.
حال كه تقريباً با كار يك لايه عصبي آشنا شديد، ميتوانيم شبكههاي پيچيدهتر را مورد بررسي قرار دهيم. براي اين كار حداقل به سه گروه از نورونهايي كه در شكل 2 ميبينيد، نياز داريم. همانطور كه در شكل 3 مشاهده ميكنيد، اين شبكه داراي سه لايه است. لايه 1 يا لايه بالايي اين شبكه كه در حقيقت لايه ورودي است، پارامترهاي پالس را تنظيم ميكند و اين مقادير را همراه سيگنال يا پالس به لايههاي بعدي پاس ميدهد، ولي نورونهاي لايه 3 يا لايه خروجي كه در پايينترين سطح شبكه قرار دارد، هيچ سيگنالي را به لايه ديگري نميفرستند و در واقع فقط خروجي دارند.
حال قسمت اصلي كار شبكه فرا ميرسد؛ يعني آموختن به شبكه عصبي. ب راي اينكه به شبكه عصبي موجود توانايي آموختن بدهيم، بعد از اينكه سيگنال از لايه اول شبكه به لايه پاييني شبكه ميرود، بايد اطلاعات هر نورون را كه روي سيگنال ما اثر ميگذارد، بروزآوري و اصلاح كنيم. اين رويه را به اصطلاح BP يا Back Propagation ميگويند. در حقيقت با اين كار يعني مقايسه خروجياي كه خودمان محاسبه كردهايم با خروجي شبكه، ميتوانيم مقدار اشتباهاتي كه شبكه ما انجام ميدهد را به دست آوريم. مثلاً تصور كنيد كه در يك سلول نورون در لايه آخر شبكه يا لايه خروجي اشتباهي داريم، هر نورون در واقع ركورد تمامي نورونهايي كه سيگنال از آن عبور ميكند را نگهداري مينمايد و ميداند كه كدام يك از نورونهاي قبلي يا به اصطلاح نورونهاي والد باعث اين اشتباه ميشوند. همچنين ميدانيم كه هر كدام از اين نورونهاي شبكه يك مقدار اشتباه را محاسبه كردهاند و از اين طريق شبكه ما ميتواند ياد بگيرد و اگر مقدار ديگري نيز به آن داده شد، ميتواند توانايي محاسبه داشته باشد.
در كدهاي اين كلاس ميبينيد كه دو مقدار Private به نامهاي Mywight و MyDelta نوع double و جود دارد. كار اصلي اين كلاس، دادن و گرفتن مقادير نورون است و در واقع تغييرات در ورودي نورونها و وزن آنها را نگهداري ميكند. حال ميتوانيم يك اينترفيس براي خود نورون درست كنيم. از آن جايي كه هر نورون هم مشخصات سيگنال و هم Receptor را دارد، بايد از دو اينترفيسي كه قبلاً در شكل هاي 5 و 4 توضيح داده شد، استفاده كند. همچنين هر نورون چيزي مانند يك ورودي ديگر نيز دارد كه به آن Bias ميگوييم. اضافه براين، بايد دو متد براي انجام كار در شبكه درست كنيم: يكي براي انجام Pulse و ديگري براي يادگيري نورون. كدهاي شكل 7 تمامي اين اينترفيس را مشخص كرده است.
اكنون كه با اينترفيسهاي اين شبكه ساده آشنا شديد، نوبت به ساختن اجزاي اصلي برنامه ميرسد. اولين كاري كه بايد در اين قسمت انجام دهيم، ساختن كلاس اصلي نورون است كه بايد آن را بر اساس اينترفيسهايي كه ساختهايم، درست كنيم. شكل 8 ساختار اصلي اين كلاس را نشان ميدهد.
اگر كمي به كدهاي شكل 9 و متد Pulse دقت كنيد، متوجه ميشويد كه اين متد جمع هر ورودي يا هر خروجي كه به نورون داده ميشود را دريافت ميكند و در Weight مربوطه كه در دايركتوري است ضرب ميكند و آخرين خروجي آخرين را به متد Sigmoid انتقال ميدهد و در نتيجه خروجي آخر ما عددي بين 0 و 1 خواهد بود. حال دو كلاس مهم از اين شبكه باقيمانده است: اولين كلاس، كلاس اصلي شبكه يا NeuralNet است و ديگريNeuralLayer، كلاس لايههاي شبكه ما است. اين دو كلاس در شكل 10 به صورت مشخص نشان داده شده است، اما نكته بسيار مهم اين است كه كلاس NuralLayer در حقيقت مسئول نگهداري نورونهاي انتقالدهنده يا فراخوانكننده متد Pulse است.
در اين كلاس از فهرست نورونها استفاده شده است و اين كلاس در اصل نورونها را در خود جا ميدهد. در اين كلاس دو متد كه هيچ مقدار برگشتي ندارند، به نامهاي Pulse و ApplyLearning وجود دارد. اين متدها در حقيقت كار فرستادن پالس و يادگيري لايهها را به عهده دارند. كدهاي شكل 11 اين دو متد را نشان ميدهد.
متد BackProgation يكي ديگر از متدهاي اين كلاس است. اين متد ابتدا خطاهاي خروجي نورونها را با محاسبه اختلاف عددي بين مقدار مورد انتظار ما و خروجي نورونها محاسبه ميكند و وقتي كه خروجي همه نورونها بروز گرديد، اين متد خطاهاي نورونهاي پنهان را نيز محاسبه ميكند.
وقتي اين متد توسط برنامه انجام شد، برنامه با استفاده از متد، ()Train و با استفاده از خروجيهاي قبلي ميتواند توانايي يادگيري داشته باشد.
كل 13 روند اجرايي برنامه را نشان ميدهد. ميتوانيد سورس كدهاي اين برنامه را از قسمت دريافت فايل سايت ماهنامه شبكه دريافت كنيد و قدم به قدم و با استفاده از راهنماييهايي كه در آن نوشته شده است، تغييراتي در كدها انجام دهيد و اولين برنامه هوش مصنوعي خود را بنوسيد. منابع: | |||||||||||||||||||||||||||||||||||||||||||||||||
برگرفته ازhttp://www.shabakeh-mag.com
|
كدام زبان برنامهنويسي را انتخاب كنيم؟ | ||
|
| ||
|
كدام زبان برنامهنويسي را انتخاب كنم؟ از كدام نوع ديتابيس استفاده كنم؟ اينها سؤالات قديمي و تاحدودي كليشهاي هستند. با اين حال خواندن يكي دو مقاله جالب در اينترنت باعث شد، طرح مجدد اين موضوع هميشگي را خالي از فايده ندانم. برنامهنويسي وب برنامهنويسي سيستمهاي بزرگ سازمانهاي متوسط و كوچك برنامهنويسي براي موبايل زبانهاي ديگر بر گرفته ازhttp://news.parseek.com/Science/ | ||