رسانه اجتماعی - تحلیلی بازار سرمایه
...
نوید صدری
@navidsadri
559

عنوان بلاگ : مقدمه ای بر الگوریتم تریدینگ: شبکه های عصبی و الگوریتم ژنتیک
دسته : آموزشی


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

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

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

اسفند ماه سال ۹۰ هوا عجیب سرد بود.بعد از یک پیاده روی مفصل از مترو تا تالار حافظ،پشت میزم نشستم استیشن معاملات را روشن کردم وهمین طور لپ تاپم را.طبق معمول ای میل ها را چک کردم.ای میل که خیلی منتظرش بودم بعد از حدود یک ماه بدستم رسید بود.یک ای میل از طرف جناب اقای جورجیا واردیکو(Georgia Vardikou) از کارمند های بخش فارکس و اوراق مشتقه کومرزبنک(Commerzbank)آلمان.بعد از سال ها تهیه و توسعه سیستم های معاملاتی در فارکس و بورس ایران و حضور در انواع مسابقات طراحی ربات های معامله گر با اعتماد به نفس بالا حاصل دو سال تحقیقاتم که منجر به توسعه یک سیستم معامله(Trading System)شده بود و ماه ها ان را تست کرده بودم برای جورجیا خان میل کردم.قبل از اینکه ای میل را باز کنم تو رویا غرق شده بودم و فک می کردم برای رفتن به المان چی باید بردارم اصلا چی باید بپوشم و....همان طور که می تونید حدس بزنید جواب ای میل چیزی در حد فاجعه بود مودبانه و خلاصه گفته بودند وقت ما را هدر نده ....و جدا از همه سرزنش ها که تو ان میل بود به خلاصه ای از سیستم های در حال توسعه در کومرزبنک اشاره کرده بود که مثل یک کتاب مقدس برای من بود. کلماتی که تو تقریبا تمام سیستم ها مشترک بود الگوریتم ژنتیک(Genetic Algorithm) و شبکه های عصبی(neural network)بود.برای اینکه شما به سرنوشت من دچار نشوید تصمیم دارم این دو مبحث بسیار مهم را در این مقاله تا حدودی توضیح دهم و در یک مقاله دیگر سیستمی بر اساس شبکه عصبی بر روی باندهای بولینگر ایجاد کنیم و با الگوریتم ژنتیک بهینه سازی کنیم تا به طور مفصل به ان ها بپردازیم.

پیدایش شبکه های عصبی مصنوعی

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

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

در راستای شبیه سازی رفتار محاسباتی مغز انسان، از چند دهه گذشته، که کامپیوترها امکان پیاده سازی الگوریتم های محاسباتی را فراهم نمودند، کارهای پژوهشی توسط متخصصین علوم کامپیوتر، مهندسین و ریاضی دان ها شروع شده است، که ما حصل کار آن ها، در شاخه ای از علم هوش مصنوعی، و در زیر شاخه هوش محاسباتی، تحت عنوان موضوع «شبکه های عصبی مصنوعی» یا Artificial Neural Networks (به اختصار: ANNs) طبقه بندی شده است. در مبحث شبکه های عصبی مصنوعی، مدل های ریاضی و نرم افزاری متعددی با الهام گرفتن از مغز انسان پیشنهاد شده اند، که برای حل گستره وسیعی از مسائل علمی، مهندسی و کاربردی، در حوزه های مختلف کاربرد دارند.

انواع شبکه های عصبی مصنوعی

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

پرسپترون چند لایه یا MLP

یکی از پایه ای ترین مدل های عصبی موجود، مدل پرسپترون چند لایه یا Multi-Layer Perceptronبه اختصار MLP است که عملکرد انتقالی مغز انسان را شبیه سازی می کند. در این نوع شبکه عصبی، رفتار شبکه ای مغز انسان و انتشار سیگنال در آن بیشتر مد نظر بوده است و از این رو، گهگاه با نام شبکه های پیشرو (Feedforward Networks) نیز خوانده می شوند. هر یک از سلول های عصبی مغز انسان، موسوم به نورون (Neuron)، پس از دریافت ورودی (از یک سلول عصبی یا غیر عصبی دیگر)، پردازشی روی آن انجام می دهند و نتیجه را به یک سلول دیگر (عصبی یا غیر عصبی) انتقال می دهد. این رفتار تا حصول نتیجه ای مشخص ادامه دارد، که احتمالا منجر به یک تصمیم، پردازش، تفکر و یا حرکت خواهد شد.

شبکه های عصبی شعاعی یا RBF

مشابه با الگوی شبکه های عصبی MLP، نوع دیگری از شبکه های عصبی وجود دارند که در آن ها، واحدها پردازنده، از نظر پردازشی بر موقعیت خاصی متمرکز هستند. این تمرکز، از طریق توابع شعاعی یا Radial Basis Functions (به اختصار RBF) مدل سازی می شود. از نظر ساختار کلی، شبکه های عصبی RBF تفاوت چندانی با شبکه های MLP ندارند و صرفا نوع پردازشی که نورون ها روی ورودهایشان انجام می دهند، متفاوت است. با این حال، شبکه های RBF غالبا دارای فرایند یادگیری و آماده سازی سریع تری هستند. در واقع، به دلیل تمرکز نورون ها بر محدوده عملکردی خاص، کار تنظیم آن ها، راحت تر خواهد بود.

ماشین های بردار پشتیبان یا SVM

در شبکه های عصبی MLP و RBF، غالبا توجه بر بهبود ساختار شبکه عصبی است، به نحوی که خطای تخمین و میزان اشتباه های شبکه عصبی کمینه شود. اما در نوع خاصی از شبکه عصبی، موسوم به ماشین بردار پشتیبان یا Support Vector Machine (به اختصار SVM)، صرفا بر روی کاهش ریسک عملیاتی مربوط به عدم عملکرد صحیح، تمرکز می شود. ساختار یک شبکه SVM، اشتراکات زیادی با شبکه عصبی MLP دارد و عملا تفاوت اصلی آن، در شیوه یادگیری است.

الگوریتم ژنتیک

الگوریتم های ژنتیک به انگلیسی: Genetic Algorithm، با نماد اختصاریGA تکنیک جستجویی در علم رایانه برای یافتن راه حل تقریبی برای بهینه سازی و مسائل جستجو است. الگوریتم ژنتیک نوع خاصی از الگوریتم های تکامل است که از تکنیک های زیست شناسی فرگشتی مانند وراثت و جهش استفاده می کند. این الگوریتم برای اولین بار توسط جان هلند معرفی شد.

در واقع الگوریتم های ژنتیک از اصول انتخاب طبیعی داروین برای یافتن فرمول بهینه جهت پیش بینی یا تطبیق الگو استفاده می کنند. الگوریتم های ژنتیک اغلب گزینه خوبی برای تکنیک های پیش بینی بر مبنای رگرسیون هستند. در هوش مصنوعی الگوریتم ژنتیک (یا GA) یک تکنیک برنامه نویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مسئله استفاده می کند. مسئله ای که باید حل شود دارای ورودی هایی می باشد که طی یک فرایند الگوبرداری شده از تکامل ژنتیکی به راه حلها تبدیل می شود سپس راه حلها بعنوان کاندیداها توسط تابع ارزیاب (Fitness Function) مورد ارزیابی قرار می گیرند و چنانچه شرط خروج مسئله فراهم شده باشد الگوریتم خاتمه می یابد. الگوریتم ژنتیک بطور کلی یک الگوریتم مبتنی بر تکرار است که اغلب بخش های آن به صورت فرایندهای تصادفی انتخاب می شوند.

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

الف) معرفی جواب های مسئله به عنوان کروموزوم

ب) معرفی تابع فیت نس

ج) جمع آوری اولین جمعیت

د) معرفی عملگرهای انتخاب

ه) معرفی عملگرهای تولید مثل

مثلاً فرض کنید گونه خاصی از افراد، هوش بیشتری از بقیه افرادِ یک جامعه یا کولونی دارند. در شرایط کاملاً طبیعی، این افراد پیشرفت بهتری خواهند کرد و رفاه نسبتاً بالاتری خواهند داشت و این رفاه، خود باعث طول عمر بیشتر و باروری بهتر خواهد بود (توجه کنید شرایط، طبیعیست نه در یک جامعه سطح بالا با ملاحظات امروزی؛ یعنی طول عمر بیشتر در این جامعه نمونه با زاد و ولد بیشتر همراه است). حال اگر این خصوصیت (هوش) ارثی باشد بالطبع در نسل بعدی همان جامعه تعداد افراد باهوش به دلیل زاد و ولد بیشترِ این گونه افراد، بیشتر خواهد بود. اگر همین روند را ادامه دهید خواهید دید که در طی نسل های متوالی دائماً جامعه نمونه ما باهوش و باهوش تر می شود. بدین ترتیب یک مکانیزم ساده طبیعی توانسته است در طی چند نسل عملاً افراد کم هوش را از جامعه حذف کند علاوه بر اینکه میزان هوش متوسط جامعه نیز دائماً در حال افزایش است.

موتور الگوریتم ژنتیک یک جمعیت اولیه از فرمول ایجاد می کند. هر فرد در برابر مجموعه ای از داده های مورد آزمایش قرار می گیرند و مناسبترین آنها (شاید ۱۰ درصد از مناسبترین ها) باقی می مانند؛ بقیه کنار گذاشته می شوند. مناسبترین افراد با هم جفتگیری (جابجایی عناصر دی ان ای) و تغییر (تغییر تصادفی عناصر دی ان ای) کرده اند. مشاهده می شود که با گذشت از میان تعداد زیادی از نسلها، الگوریتم ژنتیک به سمت ایجاد فرمول هایی که دقیقتر هستند، میل می کنند. در حالی که شبکه های عصبی هم غیرخطی و غیرپارامتریک هستند، جذابیت زیاد الگوریتم های ژنتیک این است نتایج نهایی قابل ملاحظه ترند. فرمول نهایی برای کاربر انسانی قابل مشاهده خواهد بود، و برای ارائه سطح اطمینان نتایج می توان تکنیک های آماری متعارف را بر روی این فرمول ها اعمال کرد. فناوری الگوریتم های ژنتیک همواره در حال بهبود است و برای مثال با مطرح کردن معادله ویروس ها که در کنار فرمول ها و برای نقض کردن فرمول های ضعیف تولید می شوند و در نتیجه جمعیت را کلاً قویتر می سازند.

مختصراً گفته می شود که الگوریتم ژنتیک یک تکنیک برنامه نویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مسئله استفاده می کند. مسئله ای که باید حل شود ورودی است و راه حلها طبق یک الگو کدگذاری می شوند که تابع fitness نام دارد و هر راه حل کاندید را ارزیابی می کند که اکثر آنها به صورت تصادفی انتخاب می شوند.

نتیجه گیری

در این مقاله سعی شد نگاه اجمالی بر دو موضوع بسیار مهم و روز دنیا که در تقریبا تمام سیستمهای معاملاتی اثری از انها دیده می شود داشته باشیم.در مقاله بعدی با توسعه یک سیستم معاملاتی شبکه عصبی باندهای بولینگر در زبان MQL۵ این مباحث را در عمل مورد ازمایش قرار خواهیم داد.زبان MQL۵ به این دلیل انتخاب شده است که امکان تست سیستم بر روی بازار ایران وجود داشته باشد.

منابع:
  • Fogel, David B (2006), Evolutionary Computation: Toward a New Philosophy of Machine Intelligence, IEEE Press, Piscataway, NJ. Third Edition
  • نظام‌الدین فقیه, الگوریتم ژنتیک در برنامه‌ریزی ۹۶۴-۸۵۶۹-۱۹-۳:شابک
  • Schmitt, Lothar M (2004), Theory of Genetic Algorithms II: models for genetic operators over the string-tensor representation of populations and convergence to global optima for arbitrary fitness function under scaling, Theoretical Computer Science (310)
  • Whitley, D. (1994). A genetic algorithm tutorial. Statistics and Computing 4, 65–85

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

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

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

اسفند ماه سال ۹۰ هوا عجیب سرد بود.بعد از یک پیاده روی مفصل از مترو تا تالار حافظ،پشت میزم نشستم استیشن معاملات را روشن کردم وهمین طور لپ تاپم را.طبق معمول ای میل ها را چک کردم.ای میل که خیلی منتظرش بودم بعد از حدود یک ماه بدستم رسید بود.یک ای میل از طرف جناب اقای جورجیا واردیکو(Georgia Vardikou) از کارمند های بخش فارکس و اوراق مشتقه کومرزبنک(Commerzbank)آلمان.بعد از سال ها تهیه و توسعه سیستم های معاملاتی در فارکس و بورس ایران و حضور در انواع مسابقات طراحی ربات های معامله گر با اعتماد به نفس بالا حاصل دو سال تحقیقاتم که منجر به توسعه یک سیستم معامله(Trading System)شده بود و ماه ها ان را تست کرده بودم برای جورجیا خان میل کردم.قبل از اینکه ای میل را باز کنم تو رویا غرق شده بودم و فک می کردم برای رفتن به المان چی باید بردارم اصلا چی باید بپوشم و....همان طور که می تونید حدس بزنید جواب ای میل چیزی در حد فاجعه بود مودبانه و خلاصه گفته بودند وقت ما را هدر نده ....و جدا از همه سرزنش ها که تو ان میل بود به خلاصه ای از سیستم های در حال توسعه در کومرزبنک اشاره کرده بود که مثل یک کتاب مقدس برای من بود. کلماتی که تو تقریبا تمام سیستم ها مشترک بود الگوریتم ژنتیک(Genetic Algorithm) و شبکه های عصبی(neural network)بود.برای اینکه شما به سرنوشت من دچار نشوید تصمیم دارم این دو مبحث بسیار مهم را در این مقاله تا حدودی توضیح دهم و در یک مقاله دیگر سیستمی بر اساس شبکه عصبی بر روی باندهای بولینگر ایجاد کنیم و با الگوریتم ژنتیک بهینه سازی کنیم تا به طور مفصل به ان ها بپردازیم.

پیدایش شبکه های عصبی مصنوعی

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

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

در راستای شبیه سازی رفتار محاسباتی مغز انسان، از چند دهه گذشته، که کامپیوترها امکان پیاده سازی الگوریتم های محاسباتی را فراهم نمودند، کارهای پژوهشی توسط متخصصین علوم کامپیوتر، مهندسین و ریاضی دان ها شروع شده است، که ما حصل کار آن ها، در شاخه ای از علم هوش مصنوعی، و در زیر شاخه هوش محاسباتی، تحت عنوان موضوع «شبکه های عصبی مصنوعی» یا Artificial Neural Networks (به اختصار: ANNs) طبقه بندی شده است. در مبحث شبکه های عصبی مصنوعی، مدل های ریاضی و نرم افزاری متعددی با الهام گرفتن از مغز انسان پیشنهاد شده اند، که برای حل گستره وسیعی از مسائل علمی، مهندسی و کاربردی، در حوزه های مختلف کاربرد دارند.

انواع شبکه های عصبی مصنوعی

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

پرسپترون چند لایه یا MLP

یکی از پایه ای ترین مدل های عصبی موجود، مدل پرسپترون چند لایه یا Multi-Layer Perceptronبه اختصار MLP است که عملکرد انتقالی مغز انسان را شبیه سازی می کند. در این نوع شبکه عصبی، رفتار شبکه ای مغز انسان و انتشار سیگنال در آن بیشتر مد نظر بوده است و از این رو، گهگاه با نام شبکه های پیشرو (Feedforward Networks) نیز خوانده می شوند. هر یک از سلول های عصبی مغز انسان، موسوم به نورون (Neuron)، پس از دریافت ورودی (از یک سلول عصبی یا غیر عصبی دیگر)، پردازشی روی آن انجام می دهند و نتیجه را به یک سلول دیگر (عصبی یا غیر عصبی) انتقال می دهد. این رفتار تا حصول نتیجه ای مشخص ادامه دارد، که احتمالا منجر به یک تصمیم، پردازش، تفکر و یا حرکت خواهد شد.

شبکه های عصبی شعاعی یا RBF

مشابه با الگوی شبکه های عصبی MLP، نوع دیگری از شبکه های عصبی وجود دارند که در آن ها، واحدها پردازنده، از نظر پردازشی بر موقعیت خاصی متمرکز هستند. این تمرکز، از طریق توابع شعاعی یا Radial Basis Functions (به اختصار RBF) مدل سازی می شود. از نظر ساختار کلی، شبکه های عصبی RBF تفاوت چندانی با شبکه های MLP ندارند و صرفا نوع پردازشی که نورون ها روی ورودهایشان انجام می دهند، متفاوت است. با این حال، شبکه های RBF غالبا دارای فرایند یادگیری و آماده سازی سریع تری هستند. در واقع، به دلیل تمرکز نورون ها بر محدوده عملکردی خاص، کار تنظیم آن ها، راحت تر خواهد بود.

ماشین های بردار پشتیبان یا SVM

در شبکه های عصبی MLP و RBF، غالبا توجه بر بهبود ساختار شبکه عصبی است، به نحوی که خطای تخمین و میزان اشتباه های شبکه عصبی کمینه شود. اما در نوع خاصی از شبکه عصبی، موسوم به ماشین بردار پشتیبان یا Support Vector Machine (به اختصار SVM)، صرفا بر روی کاهش ریسک عملیاتی مربوط به عدم عملکرد صحیح، تمرکز می شود. ساختار یک شبکه SVM، اشتراکات زیادی با شبکه عصبی MLP دارد و عملا تفاوت اصلی آن، در شیوه یادگیری است.

الگوریتم ژنتیک

الگوریتم های ژنتیک به انگلیسی: Genetic Algorithm، با نماد اختصاریGA تکنیک جستجویی در علم رایانه برای یافتن راه حل تقریبی برای بهینه سازی و مسائل جستجو است. الگوریتم ژنتیک نوع خاصی از الگوریتم های تکامل است که از تکنیک های زیست شناسی فرگشتی مانند وراثت و جهش استفاده می کند. این الگوریتم برای اولین بار توسط جان هلند معرفی شد.

در واقع الگوریتم های ژنتیک از اصول انتخاب طبیعی داروین برای یافتن فرمول بهینه جهت پیش بینی یا تطبیق الگو استفاده می کنند. الگوریتم های ژنتیک اغلب گزینه خوبی برای تکنیک های پیش بینی بر مبنای رگرسیون هستند. در هوش مصنوعی الگوریتم ژنتیک (یا GA) یک تکنیک برنامه نویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مسئله استفاده می کند. مسئله ای که باید حل شود دارای ورودی هایی می باشد که طی یک فرایند الگوبرداری شده از تکامل ژنتیکی به راه حلها تبدیل می شود سپس راه حلها بعنوان کاندیداها توسط تابع ارزیاب (Fitness Function) مورد ارزیابی قرار می گیرند و چنانچه شرط خروج مسئله فراهم شده باشد الگوریتم خاتمه می یابد. الگوریتم ژنتیک بطور کلی یک الگوریتم مبتنی بر تکرار است که اغلب بخش های آن به صورت فرایندهای تصادفی انتخاب می شوند.

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

الف) معرفی جواب های مسئله به عنوان کروموزوم

ب) معرفی تابع فیت نس

ج) جمع آوری اولین جمعیت

د) معرفی عملگرهای انتخاب

ه) معرفی عملگرهای تولید مثل

مثلاً فرض کنید گونه خاصی از افراد، هوش بیشتری از بقیه افرادِ یک جامعه یا کولونی دارند. در شرایط کاملاً طبیعی، این افراد پیشرفت بهتری خواهند کرد و رفاه نسبتاً بالاتری خواهند داشت و این رفاه، خود باعث طول عمر بیشتر و باروری بهتر خواهد بود (توجه کنید شرایط، طبیعیست نه در یک جامعه سطح بالا با ملاحظات امروزی؛ یعنی طول عمر بیشتر در این جامعه نمونه با زاد و ولد بیشتر همراه است). حال اگر این خصوصیت (هوش) ارثی باشد بالطبع در نسل بعدی همان جامعه تعداد افراد باهوش به دلیل زاد و ولد بیشترِ این گونه افراد، بیشتر خواهد بود. اگر همین روند را ادامه دهید خواهید دید که در طی نسل های متوالی دائماً جامعه نمونه ما باهوش و باهوش تر می شود. بدین ترتیب یک مکانیزم ساده طبیعی توانسته است در طی چند نسل عملاً افراد کم هوش را از جامعه حذف کند علاوه بر اینکه میزان هوش متوسط جامعه نیز دائماً در حال افزایش است.

موتور الگوریتم ژنتیک یک جمعیت اولیه از فرمول ایجاد می کند. هر فرد در برابر مجموعه ای از داده های مورد آزمایش قرار می گیرند و مناسبترین آنها (شاید ۱۰ درصد از مناسبترین ها) باقی می مانند؛ بقیه کنار گذاشته می شوند. مناسبترین افراد با هم جفتگیری (جابجایی عناصر دی ان ای) و تغییر (تغییر تصادفی عناصر دی ان ای) کرده اند. مشاهده می شود که با گذشت از میان تعداد زیادی از نسلها، الگوریتم ژنتیک به سمت ایجاد فرمول هایی که دقیقتر هستند، میل می کنند. در حالی که شبکه های عصبی هم غیرخطی و غیرپارامتریک هستند، جذابیت زیاد الگوریتم های ژنتیک این است نتایج نهایی قابل ملاحظه ترند. فرمول نهایی برای کاربر انسانی قابل مشاهده خواهد بود، و برای ارائه سطح اطمینان نتایج می توان تکنیک های آماری متعارف را بر روی این فرمول ها اعمال کرد. فناوری الگوریتم های ژنتیک همواره در حال بهبود است و برای مثال با مطرح کردن معادله ویروس ها که در کنار فرمول ها و برای نقض کردن فرمول های ضعیف تولید می شوند و در نتیجه جمعیت را کلاً قویتر می سازند.

مختصراً گفته می شود که الگوریتم ژنتیک یک تکنیک برنامه نویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مسئله استفاده می کند. مسئله ای که باید حل شود ورودی است و راه حلها طبق یک الگو کدگذاری می شوند که تابع fitness نام دارد و هر راه حل کاندید را ارزیابی می کند که اکثر آنها به صورت تصادفی انتخاب می شوند.

نتیجه گیری

در این مقاله سعی شد نگاه اجمالی بر دو موضوع بسیار مهم و روز دنیا که در تقریبا تمام سیستمهای معاملاتی اثری از انها دیده می شود داشته باشیم.در مقاله بعدی با توسعه یک سیستم معاملاتی شبکه عصبی باندهای بولینگر در زبان MQL۵ این مباحث را در عمل مورد ازمایش قرار خواهیم داد.زبان MQL۵ به این دلیل انتخاب شده است که امکان تست سیستم بر روی بازار ایران وجود داشته باشد.

منابع:
  • Fogel, David B (2006), Evolutionary Computation: Toward a New Philosophy of Machine Intelligence, IEEE Press, Piscataway, NJ. Third Edition
  • نظام‌الدین فقیه, الگوریتم ژنتیک در برنامه‌ریزی ۹۶۴-۸۵۶۹-۱۹-۳:شابک
  • Schmitt, Lothar M (2004), Theory of Genetic Algorithms II: models for genetic operators over the string-tensor representation of populations and convergence to global optima for arbitrary fitness function under scaling, Theoretical Computer Science (310)
  • Whitley, D. (1994). A genetic algorithm tutorial. Statistics and Computing 4, 65–85
1394/10/13 از تهران
0
/
22
یک دقیقه وقت دارید؟
شما تنها یک قدم با به اشتراک گذاشتن اولین ایده خود فاصله دارید. برای انتشار مطالب خود در ارشن، لطفا ثبت‌نام خود را تکمیل کرده و شماره‌ی همراه خود را فعال نمایید.
تکمیل پروفایل
نمایش {{content.commentsTotal - content.comments.length}} نظر قبلی
علت امتیاز منفی

×
بله
خیر
تغییرات شاخص
شاخص کل
{{tepix.change}}
{{tepix.index}}
وضعیت بازار : {{closedTitle(tepix.isClosed)}}
شاخص کل
{{tepix.change}}
{{tepix.index}}
فرابورس
{{absValueChange(tepix.faraBourseChange)}}
{{tepix.faraBourseIndex}}
شاخص 50 شرکت
{{absValueChange(tepix.companyFiftyChange)}}
{{tepix.companyFiftyIndex}}
شاخص آزاد شناور
{{absValueChange(tepix.freeFloatChange)}}
{{tepix.freeFloatIndex}}
شاخص مالی
{{absValueChange(tepix.financialChange)}}
{{tepix.financialIndex}}
شاخص صنعت
{{absValueChange(tepix.indastryChange)}}
{{tepix.indastryIndex}}
2222
33333