آموزش شبکه‌ عصبی در متلب

چندی پیش بود که در طول مقالاتی از متلب آنالیز به آموزش مقدماتی زبان برنامه نویسی متلب پرداختیم و با ذکر مثال‌هایی، شیوه کار با این برنامه پر کاربرد را فرا گرفتیم. در این بین مدتی را نیز برای آموزش زبان برنامه نویسی گمز (GAMS) اختصاص دادیم و اکنون دوباره تصمیم داریم تا به سوی زبان برنامه نویسی متلب بازگردیم. اما در این سری از مقالات به صورت تخصصی‌تر وارد موضوع خواهیم شد و به آموزش شبکه‌های عصبی خواهیم پرداخت. پس تا انتهای مقاله همراه متلب آنالیز باشید.

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

بر اساس اطلاعاتی که بازار بورس تهران از سایت رسمی خود ارایه داده است، در هر روز کاری، هر سهم دارای ویژگی‌ها و شرایط زیر است: ۱- حجم سهم ۲- ارزش سهم ۳- تعداد سهام داران ۴- بیشترین قیمت سهام ۵- کمترین قیمت سهام ۶- میانگین قیمت سهم ۷- قیمت ابتدای سهم ۸- آخرین قیمت سهم ۹- تغییر قیمت سهم ۱۰ – بهترین قیمت خرید ۱۱- بهترین قیمت فروش ۱۲- تعداد خریداران سهم

بر اساس این بخش‌هایی که هر سهم به صورت آنلاین اطلاعات خود را به‌روز می‌کند، شاخصی تحت عنوان درجه بندی کلاس توسط فعالان بازار به دست می‌آید. هدف از این کلاس بندی (بخش بندی) این است که سهام مورد نظر در آینده چه شرایطی خواهد داشت. در این حالت از پژوهش نظرات یک عضو ساده بازار به عنوان یک معیار کلاس بندی شده است و سهام‌دار با توجه به داده‌های گذشته و در نظر گرفتن جو بازار، تصمیم به درجه بندی آن سهم برای خرید آینده می‌کند. در یک شرایط عادی، کلاس بندی‌ها همانند تصویر زیر هستند.

۱

در هر پژوهش از ۴۱۶ جفت دیتا (داده) استفاده می‌شود که در تصویر زیر می‌‌توانید برای مثال یک نمونه از آن‌ها را مشاهده کنید:

۲

در زبان برنامه نویسی متلب، همه دیتا‌ها در فایل Matfile با نام BurseDATAsi قرار گرفته‌اند و این فایل شامل ۲ متغیر با نام‌های Train و Test است. در مثال زیر می‌توانید هرچه بیشتر با این موضوع آشنا شوید:

Train:  ۳۱۲*۱۳   train data

Test:  ۱۰۴*۱۳   test data

در این مثال، اولین ستون در هر یک از ماتریس‌ها برابر با عدد کلاس مربوط به ۱۲ ستون بعدی (ستون مربوط به ویژگی‌ها) است. البته باید بدین نکته نیز توجه داشت که عدد مذکور عددی صحیح بین ۱ تا ۵ خواهد بود. دیتای مربوط به این مثال نیز به شرح زیر است:

۳

البته ساختار دیتای تست نیز به صورت زیر خواهد بود:

۴

باید توجه داشت که هدف از انجام این پژوهش این است که با استفاده از داده‌ها (دیتا)، یک شبکه عصبی مصنوعی را به گونه‌ای آموزش دهیم که بتواند نظم موجود در طبقه بندی داده‌های بورس را تشخیص دهد و البته قادر باشد در دیتاهای تست، به خوبی و درست طبقه بندی‌ها را انجام دهد.

اما شبکه عصبی چیست؟

همان طور که احتمالا تاکنون مطلع شده‌اید، در این مقاله از متلب آنالیز به آموزش شبکه عصبی در زبان برنامه نویسی متلب پرداختیم اما باید به این سوال نیز پاسخ داد که حقیقتا شبکه عصبی چیست؟ گفته می‌شود از قرن نوزدهم نروفیزیولوژیستها و ریاضی دانان تلاش کردند تا سیستم یادگیری را تجزیه و تحلیل کنند و مدلی ریاضی بسازند که بتواند قابلیت فراگیری و تجزیه مسائل را داشته باشد. این تحقیقات برای اولین بار در شبیه سازی از طریق یک مدل منطقی نتیجه داد که مربوط به مک کلوک و واتر پیتز بود. گفتنی است که این مدل، فرضیه‌هایی را در مورد عملکرد نرونها ارایه می‌دهد و ساختار و عملکرد آن نیز بدین صورت است که ورودی‌ها را جمع کرده و یک خروجی ایجاد می‌کند. در این بین اگر مجموع ورودی‌ها از مقدار آستانه بیشتر باشد، نرون برانگیخته خواهد شد. گفتنی است که نتیجه این مدل نیز اجرای توابع ساده منطقی مثل OR و AND است. البته باید بدین نکته نیز توجه داشت که در کنار نروفیزیولوژیستها، روانشناسان و مهندسان نیز در پیشرفت شبیه سازی‌های عصبی تاثیر داشته‌اند. گفتنی است که در سال ۱۹۵۸ شبکه عصبی پرسپترون توسط روزنلات معرفی شد و البته این شبکه همانند واحد‌های مدل شده‌ی قبلی بود. باید توجه داشت که پرسپترون دارای سه لایه به همراه یک لایه وسط است که به عنوان لایه پیوند شناخته می‌شود. سیستم یاد شده قادر است یاد بگیرد که به ورودی داده شده، خروجی تصادفی متناظر را اعمال کند. البته در این بین سیستم دیگری نیز وجود دارد که مدل خط تطبیقی نرون یا Adalaline نامیده می‌شود و در سال ۱۹۶۰ توسط ویدرو و هاف در دانشگاه استنفورد به وجود آمده است و گفته می‌شود که این مدل اولین شبکه عصبی به کار گرفته شده در مسائل واقعی بوده است.

مدل خط تطبیقی نرون یا Adalaline یک دستگاه الکترونیکی بود که اجزای ساده‌ای داشت و البته روشی که برای آموزش آن به کار گرفته می‌شد، با پرسپترون تفاوت داشت.

گفته می‌شود در سال ۱۹۶۹ مینسکی و پاپرت کتابی نوشتند که محدودیت‌های سیستم‌های تک لاله و چند لایه پرسپترون را ترشیح می‌کرد. نتیجه به عمل آمده از این کتاب نیز پیش داوری و قطع سرمایه گذاری برای تحقیقات در زمینه شبیه سازی شبکه‌های عصبی بود. این افراد با طرح کردن این موضوع که پرسپترون نمی‌تواند مسائل جالبی را حل کند، تحقیقات در این زمینه را برای چند سالی متوقف کردند.

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