شبکه های عصبی آسان ساخته شده اند (قسمت 2): آموزش و آزمایش شبکه

  • 2022-03-10

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

1. تعریف مشکل

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

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

Fractals

اگر به نمودار قیمت نگاه کنید ، تمایل طبیعی اجرای عملیات معاملاتی در قله های Price است که می تواند توسط شاخص استاندارد Fractal Bill Williams نشان داده شود. مشکل این نشانگر این است که قله ها را با 3 شمعدان تعیین می کند و همیشه سیگنال را با تاخیر 1 شمعدان تولید می کند ، که می تواند یک سیگنال مخالف داشته باشد. اگر شبکه عصبی را برای تعیین نقاط محوری قبل از تشکیل شمعدان سوم تنظیم کنیم ، چه می شود؟این رویکرد حداقل یک شمعدان قبلی از حرکت در جهت تجارت را ارائه می دهد.

این به مجموعه آموزش اشاره دارد:

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

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

حال باید تعیین کنیم که کدام داده ها باید به شبکه عصبی ما وارد شوند. آیا به یاد دارید وقتی سعی می کنید وضعیت بازار را بر اساس نمودار ارزیابی کنید ، چه کاری انجام می دهید؟

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

روش محبوب دیگر برای تعیین روند استفاده از شاخص های نوسان ساز است. استفاده از چنین شاخص ها راحت است زیرا شاخص ها داده های عادی را خروجی می کنند. من تصمیم گرفتم برای آزمایش چهار شاخص استاندارد استفاده کنم: RCI ، CCI ، ATR و MACD ، همه با پارامترهای استاندارد. من هیچ تجزیه و تحلیل اضافی برای انتخاب شاخص ها و پارامترهای آنها انجام ندادم.

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

برای اینکه بتوانیم پویایی بازار را ارزیابی کنیم ، کل اطلاعات را در یک دوره تاریخی خاص به شبکه عصبی وارد خواهیم کرد.

2. پروژه مدل شبکه عصبی

2. 1تعیین تعداد نورون ها در لایه ورودی

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

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

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

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

علاوه بر این ، بیایید اطلاعات مربوط به حجم را درج کنیم. اگر کارگزار شما داده هایی را در مورد حجم واقعی ارائه می دهد ، این حجم ها را نشان دهید. در غیر این صورت حجم تیک را مشخص کنید.

بنابراین ، ما برای توصیف هر شمعدان به 12 نورون نیاز داریم. با ضرب این تعداد توسط عمق تاریخ تجزیه و تحلیل شده ، اندازه لایه ورودی شبکه عصبی را دریافت خواهید کرد.

2. 2طراحی لایه های پنهان

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

در مقاله اول به روش «5-چرا» اشاره کردم. اکنون پیشنهاد می کنم این آزمایش را ادامه دهیم و یک شبکه با 4 لایه پنهان ایجاد کنیم. من تعداد نورون ها را در اولین لایه پنهان برابر با 1000 قرار دادم. با این حال، ممکن است بتوان مقداری وابستگی به عمق دوره تحلیل شده نیز تنظیم کرد. با استفاده از قانون پارتو، تعداد نورون های هر لایه بعدی را 70 درصد کاهش می دهیم. علاوه بر این، از محدودیت زیر استفاده می شود: تعداد نورون های لایه پنهان نباید کمتر از 20 باشد.

2. 3. تعیین تعداد نورون ها در لایه خروجی

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

برای مورد ما، من پیشنهاد می کنم 2 نوع شبکه عصبی ایجاد کنیم و کاربرد آنها را برای مشکل خود در عمل ارزیابی کنیم. در حالت اول، لایه خروجی یک نورون خواهد داشت. مقادیر در محدوده 0. 5. 1. 0 با فراکتال خرید، -0. 5 مطابقت دارد.-1. 0 به سیگنال فروش و مقادیر در محدود ه-0. 5 مطابقت دارد. 0. 5 به این معنی است که سیگنالی وجود ندارد. در این راه حل، مماس هذلولی به عنوان تابع فعال سازی استفاده می شود - می تواند مقادیر خروجی در محدود ه-1. 0 تا +1. 0 داشته باشد.

در حالت دوم، 3 نورون در لایه خروجی ایجاد می شود (خرید، فروش، بدون سیگنال). در این نوع، ما شبکه عصبی را برای به دست آوردن نتیجه ای در محدوده 0. 0 آموزش می دهیم. 1. 0. در اینجا، نتیجه احتمال ظهور فراکتال است. سیگنال با توجه به حداکثر احتمال تعیین می شود و جهت آن با توجه به شاخص نورون با بیشترین احتمال تعیین می شود.

3. برنامه نویسی

3. 1. کار مقدماتی

اکنون زمان برنامه نویسی است. ابتدا کتابخانه های مورد نیاز را اضافه کنید:

  • NeuroNet. mqh - کتابخانه ای برای ایجاد یک شبکه عصبی از مقاله قبلی
  • SymbolInfo. mqh - کتابخانه استاندارد برای دریافت داده های نماد
  • TimeSeries. mqh - کتابخانه استاندارد برای کار با سری های زمانی
  • Volumes. mqh - کتابخانه استاندارد برای دریافت داده های حجمی
  • Oscilators. mqh - کتابخانه استاندارد با کلاس های نوسانگر

مرحله بعدی نوشتن پارامترهای برنامه است که با آن پارامترهای شبکه عصبی و نشانگر تنظیم می شود.

بعد، متغیرهای سراسری را اعلام کنید - کاربرد آنها بعدا توضیح داده خواهد شد.

این کار مقدماتی را کامل می کند. اکنون به مرحله اولیه سازی کلاس ها بروید.

3. 2 راه اندازی کلاس ها

مقداردهی اولیه کلاس ها در تابع OnInit انجام می شود. ابتدا، اجازه دهید نمونه ای از کلاس CSymbolInfo برای کار با نمادها ایجاد کنیم و داده های مربوط به نماد نمودار را به روز کنیم.

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

در این مثال از ولوم های تیک استفاده شده است. اگر می‌خواهید از حجم‌های واقعی استفاده کنید، هنگام فراخوانی روش Volumes. Creare، «VOLUME_TICK» را با «VOLUME_REAL» جایگزین کنید.

پس از اعلام سری های زمانی، نمونه هایی از کلاس ها را برای کار با اندیکاتورها به روشی مشابه ایجاد کنید.

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

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

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

سپس لایه های پنهان را شرح دهید. ما مشخص کرده ایم که 4 لایه پنهان با 1000 نورون در اولین لایه پنهان وجود خواهد داشت. سپس تعداد نورون ها در هر لایه بعدی 70 ٪ کاهش می یابد ، اما هر لایه حداقل 20 نورون خواهد داشت. داده ها به یک آرایه در یک حلقه اضافه می شوند.

1 را در لایه خروجی برای ساختن یک مدل رگرسیون نشان دهید.

اگر از یک مدل طبقه بندی استفاده کردیم ، باید 3 را برای نورون خروجی مشخص کنیم.

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

مقادیر اولیه متغیرها را برای جمع آوری داده های آماری تنظیم کنید:

  • Derror - انحراف استاندارد (خطا)
  • dundefine - درصد فراکتال های تعریف نشده
  • dforecast - درصد فراکتال های پیش بینی شده درست پیش بینی شده
  • dtstudied - تاریخ آخرین شمعدان آموزشی.

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

من می خواهم یک راه حل دیگر را در اینجا به اشتراک بگذارم. MQL5 تماس های عملکردی ناهمزمان ندارد. اگر صریحاً عملکرد یادگیری را از عملکرد OnInit فراخوانی کنیم ، ترمینال فرایند اولیه سازی برنامه را تا زمان کامل شدن آموزش ناتمام می داند. به همین دلیل است که به جای اینکه مستقیماً عملکرد را فراخوانی کنیم ، ما یک رویداد سفارشی ایجاد می کنیم ، در حالی که عملکرد آموزش از عملکرد OnChartEvent خوانده می شود. هنگام ایجاد یک رویداد ، روز شروع آموزش را در پارامتر LPARAM مشخص کنید. این رویکرد به ما امکان می دهد تا یک تماس عملکردی برقرار کنیم و عملکرد OnInit را تکمیل کنیم.

فراموش نکنید که حافظه را در عملکرد Ondeinit پاک کنید.

3. 3آموزش شبکه عصبی

برای آموزش شبکه عصبی ، عملکرد قطار را ایجاد کنید. تاریخ شروع دوره آموزش به پارامترهای عملکرد منتقل می شود.

متغیرهای محلی را در ابتدای تابع اعلام کنید:

  • شمارش - شمارش دوره های یادگیری
  • prev_un - درصد فراکتال های شناسایی نشده در دوره قبل
  • prev_for - درصد «پیش‌بینی‌های» صحیح فراکتال در دوره قبل
  • prev_er - خطای دوره قبلی
  • bar_time - تاریخ نوار محاسبه مجدد
  • توقف - پرچم برای پیگیری تماس خاتمه اجباری برنامه.

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

آموزش شبکه عصبی در حلقه do-while پیاده سازی خواهد شد. در ابتدای حلقه، تعداد نوارهای تاریخی برای آموزش شبکه عصبی را دوباره محاسبه کنید و آمار پاس قبلی را ذخیره کنید.

سپس، اندازه بافرها را تنظیم کرده و داده های تاریخی لازم را بارگذاری کنید.

پرچم را برای ردیابی خاتمه اجباری برنامه به روز کنید و یک پرچم جدید را اعلام کنید که نشان می دهد دوره یادگیری گذشته است (add_loop).

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

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

پس از تنظیم ضرایب وزن شبکه عصبی، احتمال ظهور فراکتال را در نوار تاریخی فعلی محاسبه کنید (اگر i برابر با 0 باشد، احتمال تشکیل فراکتال بر روی میله فعلی محاسبه می شود). برای انجام این کار، آرایه TempData را پاک کنید و داده های فعلی لایه ورودی شبکه عصبی را به آن اضافه کنید. اگر افزودن داده انجام نشد یا داده کافی وجود نداشت، از حلقه خارج شوید.

پس از تهیه داده های اولیه، روش feedForward را اجرا کرده و نتایج شبکه عصبی را در متغیر dPrevSignal بنویسید. در زیر کد یک شبکه عصبی رگرسیون با یک نورون در لایه خروجی آمده است. کد یک شبکه عصبی طبقه بندی دارای سه نورون در لایه خروجی، در زیر پیوست شده است.

برای تجسم عملکرد شبکه عصبی بر روی یک نمودار، برچسب های فراکتال های پیش بینی شده برای 200 شمع آخر را نمایش دهید.

در پایان چرخه داده های تاریخی، پرچم پایان برنامه اجباری را به روز کنید.

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

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

قبل از خروج از عملکرد آموزشی، در زمان آخرین کندل آموزشی صرفه جویی کنید.

3. 4. بهبود روش محاسبه گرادیان

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

کد کامل تمامی روش ها و توابع در پیوست موجود است.

4. آزمایش

آموزش آزمایشی شبکه عصبی بر روی جفت EURUSD در بازه زمانی H1 انجام شد. داده های 20 کندل وارد شبکه عصبی شد. آموزش در 2 سال گذشته انجام شده است. برای بررسی نتایج، من هر دو مشاور متخصص را روی دو نمودار از یک ترمینال راه‌اندازی کردم: یکی EA با شبکه عصبی رگرسیون (فرکتال - با 1 نورون در لایه خروجی) و شبکه عصبی طبقه‌بندی (Fractal_2 - با 3 نورون در لایه خروجی).).

اولین دوره آموزشی در 12432 میله 2 ساعت و 20 دقیقه طول کشید. هر دو EA به طور مشابه عمل کردند، با نرخ ضربه کمی بیش از 6٪.

Result of the 1st training epoch of the regression neural network (1 output neuron)Result of the 1st training epoch of the classification neural network (3 output neurons)

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

پس از 35 دوره آموزش، تفاوت در آمار کمی افزایش یافت - مدل شبکه عصبی رگرسیون بهتر عمل کرد:

مقدار شبکه عصبی رگرسیون شبکه عصبی طبقه بندی
ریشه میانگین مربعات خطا 0. 68 0. 78
درصد ضربه 12. 68٪ 11. 22%
فراکتال های ناشناخته 20. 22٪ 24. 65٪

Result of the 35th training epoch of the regression neural network (1 output neuron)Result of the 35st training epoch of the classification neural network (3 output neurons)

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

نتیجه

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

برنامه های مورد استفاده در مقاله

# صادر شده به تایپ کنید شرح
کارشناسان\NeuroNet_DNG\
1 فراکتال. mq5 مشاور متخصص یک مشاور متخصص با شبکه عصبی رگرسیون (1 نورون در لایه خروجی)
2 فراکتال_2. mq5 مشاور متخصص یک مشاور متخصص با شبکه عصبی طبقه بندی (3 نورون در لایه خروجی)
3 NeuroNet. mqh کتابخانه کلاس کتابخانه ای از کلاس ها برای ایجاد شبکه عصبی (پرسپترون)
فایل ها\
4 فراکتال فهرست راهنما شامل اسکرین شات هایی است که آزمایش شبکه عصبی رگرسیون را نشان می دهد
5 فراکتال_2 فهرست راهنما شامل اسکرین شات هایی است که آزمایش شبکه عصبی طبقه بندی را نشان می دهد

هشدار: تمامی حقوق این مطالب متعلق به شرکت MetaQuotes می باشد. کپی برداری یا چاپ مجدد این مطالب به طور کامل یا جزئی ممنوع است.

ثبت دیدگاه

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