شبکه های عصبی و الگوریتم های یادگیری در متلب

شبکه های عصبی و الگوریتم های یادگیری در متلب

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

  • شبکه های عصبی گاما،
  • Group Method of Data Handling (GMDH)
  • Radial basis function (RBF)
  • Recurrent neural network (RNN)
  • Convolutional neural network (CNN)
  • cerebellar-model-articulation-controller (CMAC)
  • Multilayer perceptron (MLP)
  • و برخی شبکه های عصبی مهم و کابردی دیگر از قبیل شبکه های عصبی خود تنظیم و شکبه های عصبی بر اساس تئوری راف و شبکه های عصبی Lolimot

همچنین روش های مختلف آموزش شبکه های عصبی بر اساس روش های آموزشی پس انتشار خطا (Back Propagation و Full Propafation) متدهای مختلف بهینه سازی از قبیل

  • گرادیان نزولی (Learning of neural network based on gradient descent algorithm )،
  • فیلتر کالمن توسعه یافته (Learning of neural network based on extended Kalman filter)،
  • فیلتر کالمن غیر خطی (Learning of neural network based on unsecented Kalman filter) و (Learning of neural network based on square root capture kalman filter)
  • روش کمترین مربعات خطا (Learning of neural network based on recursive least square algorithm)
  • روش آموزش مرتبه دوم لونبرگ مارکوآت (Learning of neural network based on Levenbeg-Marquat) و
  • روش مرتبه دوم نیوتن و روش مرتبه دوم  conjugate-gradient
  • روشهای تکاملی مثل الگوریتم ژنتیک (genetic algorithm) الگوریتم تجمعی پرندگان (particle swarm optimization) و الگوریتم عنکبوت (Social Spider optimization) رشد علف های هرز IWO و برخی دیگر از الگوریتم های مهم تکامی.

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


جلسه اول:

مقده ای بر شبکه های عصبی و الگوریتم های یادگیری


جلسه دوم: 

شبکه های عصبی MLP، آموزش بر اساس پس انتشار خطا -گرادیان نزولی، کابرد در تخمین توابع غیرخطی


جلسه سوم: 

شبکه های عصبی MLP، روش Full Propagation، کابرد در دسته بندی


جلسه چهارم:

آموزش بر اساس گرادیان نزولی با نرخ تطبیقی و کمترین مربعات خطا


جلسه پنجم:

 آموزش بر اساس الگوریتم های مرتبه دوم و افزایش سرعت همگرایی


جلسه ششم:

شبکه های عصبی RBF ، آموزش بدون مربی، خوشه بندی


جلسه هفتم:

شبکه های عصبی GMDH (Ivakhenenco)، شبیه سازی مقاله ۲۰۱۵، تشخیص خطا


جلسه هشتم:

الگوریتم ژنتیک، تولباکس متلب، کدنویسی


جلسه نهم:

آموزش شبکه های عصبی با استفاده از الگوریتم ژنتیک، شبکه های عصبی حافظه دار


جلسه دهم:

شناسایی غیرخطی بر اساس شبکه های عصبی (مدلهای NNARX, NNFIR, NNEO,…)


جلسه یازدهم:

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


جلسه دوازدهم:

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


جلسه سیزدهم:

شبکه های عصبی مبتنی بر کانولوشن، تشخیص اعداد دست نویس انگلیسی

جلسه پانزدهم: 

آموزش شبکه های عصبی بر اساس PSO


جلسه هفدهم:

شبکه های عصبی مدل مخچه (CMAC)

 محتوا: فایل آموزشی ۷۲۰pو کدهای متلب و pdf

حجم: حدوداً  ۸۰MB

پیش نماش جلسه شانزدهم: 


جلسه هجدهم:

شبکه های عصبی مثلثاتی و تولباکس متلب


برای خرید کلیک بفرمایید

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

شماره پرداخت

محصول و جلسات خریداری شده

ایمیل

شماره کارت: ۶۰۳۷۹۹۷۳۸۲۹۱۱۳۵۳

شماره موبایل: ۰۹۱۶۲۹۶۳۸۷۰

۱۳۹ نظر

  1. با سلام و وقت بخیر
    با استفاده از فیلتر ذره ای چطوری میشه شبکه ی عصبی را آموزش داد؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ فروردین ۲۷ام, ۱۳۹۷ ۹:۴۶ ب.ظ:

    @علی,
    سلام
    اگه آموزش با استفاده از فیلترهای کالمن رو یاد بگیرید قاعدتاً باید بتونید اینم پیاده سازی کنید
    موفق باشین

    [پاسخ]

  2. @محمد زارع,
    البته باید ذکر کنم بنده منظورم جله سیزدهم و آموزش شبکه عصبی cnn بود

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ دی ۱۸ام, ۱۳۹۶ ۴:۱۰ ب.ظ:

    @محمد زارع,
    با سلام
    در همه جلسات متلب به صورت کامل و ریز توضیح داده شده مگر اینکه کدش خیلی مشابه جلسه خاصی باشه و به آن ارجاع داده باشیم.
    ج۱۳ مقدمه ای بر شبکه های عصبی cnn می باشد مطالب پیشرفته تر در این زمینه در آینده ارائه خواهد شد
    موفق باشین

    [پاسخ]

  3. سلام. من به دنبال یک توضیح فارسی در مورد الگوریتم پس انتشار بازگشتی (recurrent backpropagation) برای آموزش مدلهای مبتنی بر انرژی هستم. و همچنین آموزش شبکه های عصبی بازگشتی با روش پس انتشار خطا. میشه کمکم کنید؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ دی ۶ام, ۱۳۹۶ ۷:۴۲ ب.ظ:

    @مریم,
    سلام
    جلسات ۲ و ۹ رو ببینید، احتمالاً مشکلتان حل بشه.
    موفق باشید

    [پاسخ]

    مریم پاسخ در تاريخ دی ۹ام, ۱۳۹۶ ۱۲:۲۲ ب.ظ:

    @دکتر محمدزاده,سلام. ببخشید من جلسه دوم را گرفتم. اما وقتی کدها رو که اجرا میکنم جواب مشابه با جواب درون فیلم را نمیدهد. جوابها کاملا اشتباه میشه و خطای تخمین خیلی بالاست

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ دی ۹ام, ۱۳۹۶ ۱۲:۳۹ ب.ظ:

    @مریم,
    سلام
    دوباره کدهای آپلود شده رو تست کردم مشکلی نداشت.
    دوباره امتحان کنید. دقت کنید اگه نرخ آموزش را خیلی زیاد کنید باعث ناپایداری خواهد شد.
    برای نرخ آموزشی تطبیقی میتونید جلسات الگوریتم های مرتبه دوم و گرادیان با نرخ تطبیقی را ببینید.
    در صورتی که مشکلاتان حل نشد میتونید تماس بگیرید به و صورت آن-لاین بررسی کنیم.
    intelligent.controlref@gmail.com
    A_M_Zadeh@
    موفق باشین.

    [پاسخ]

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

    [پاسخ]

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

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ آذر ۲۳ام, ۱۳۹۶ ۸:۵۴ ب.ظ:

    @زیبا قنواتی,
    سلام
    موضوع خود را به صورت دقیقتر در ایمیل زیر مطرح کنید
    intelligent.controlref@gmail

    [پاسخ]

    زیبا قنواتی پاسخ در تاريخ آذر ۲۷ام, ۱۳۹۶ ۲:۰۱ ب.ظ:

    @دکتر محمدزاده,
    با سلام،
    استاد رشته من ارشد نرم افزار هست این پایان نامه شبیه رشته انفورماتیک پزشکی هست با توجه به علائم بیماری که در مقالات وکتب مختلف searchکردم این بیماری تشخیص داده بشه حال در متلب میخوام کد نویسی کنم (نقشه های شناختی فازی ترکیبی از منطق فازی وشبکه های عصبی هست )لطفا منو راهنمایی کنید کدام یک از فایلهای آموزشی شمارو برای کدنویسی در متلب مناسبترند

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ آذر ۲۷ام, ۱۳۹۶ ۷:۵۳ ب.ظ:

    @زیبا قنواتی,
    سلام
    فکر کنم جلسات سوم و سیزدهم براتون مفید باشه.
    توضیحات جلسات زیرش نوشته شده، حتماً بخونید. ضمناً در چند دقیقه اول میتونید فهرست مطالب هر جلسه رو ببینید.
    موفق باشین.

    [پاسخ]

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

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ آذر ۱۹ام, ۱۳۹۶ ۱:۱۹ ب.ظ:

    @حسین,
    سلام
    هر تابعی که می خواهین تخمین بزنین، خروجیش رو تولید کنید و به عنوان دیتای target_train استفاده کنید.
    موفق باشین.

    [پاسخ]

    حسین پاسخ در تاريخ آذر ۱۹ام, ۱۳۹۶ ۲:۲۳ ب.ظ:

    @دکتر محمدزاده,

    وقت بخیر استاد
    متوجه موضوع نشدم ، امکانش هست یکم بیشتر توضیح بدهید یا کد قسمت مربوطه رو بنویسید ؟؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ آذر ۱۹ام, ۱۳۹۶ ۱۰:۰۴ ب.ظ:

    @حسین,
    داخل برنامه به جای دیتای آموزش و تست، دیتای مورد نظر خودتان را قرار دهید.

    [پاسخ]

    حسین پاسخ در تاريخ آذر ۲۰ام, ۱۳۹۶ ۴:۰۴ ب.ظ:

    @دکتر محمدزاده,

    سلام مجدد
    استاد من به این صورت نوشتم ، ممنون میشم ببینید درست نوشتم یا نه

    x_train=(0:0.1:2*pi
    y_train=sin(x_train
    x_test=(2*pi:0.1:4*pi
    y_test=sin(x_test

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ آذر ۲۳ام, ۱۳۹۶ ۸:۵۸ ب.ظ:

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

    [پاسخ]

  7. سلام آقای دکتر وقتتون بخیر
    من میخوام با استفاده از الگوریتم ژنتیک تعداد لایه ها و تعداد نورون های بهینه رو پیدا کنم … جلسات هشت و نه رو به طور کامل دیدم اما جوابم رو پیدا نکردم…میشه در این زمینه راهنمایی بفرمایید

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ آذر ۱۵ام, ۱۳۹۶ ۹:۵۱ ق.ظ:

    @سمیرا,
    سلام
    تعداد لایه ها مهم نیست و معمولاً ۲یا۳ در نظر می گیرند بیشتر از این خیلی موثر نخواهد بود.
    ولی تعداد نرونها مهمه و برای اینکه مسئله over parameterize پیش نیاد باید تعداد نرونهای بهینه رو تعیین کنیم.
    این موضوع در جلسه سوم بحث شده است.
    برای پیدا کردن تعداد نرونهای بهینه دیتاهاتون رو به دو دسته آموزشی و تست تقسیم کنید
    داخل یک حلقه فرایند آموزش را برای نرونهای مختلف تکرار کنید
    نرون بهینه در نقطه ای خواهد بود که نمودار MSE داده های آموزش و تست از همدیگر جدا می شوند و mse مربطو به داده های تست شروع به زیاد شدن می کند.
    البته یک راه دیگه در الگوریتم هایی مثل ژنتیک اینه که تعداد نرونها را هم مثل وزنها به عنوان یک متغیر در نظر بگیرید.
    موفق باشین.

    [پاسخ]

    سمیرا پاسخ در تاريخ آذر ۱۵ام, ۱۳۹۶ ۱۱:۳۳ ق.ظ:

    @دکتر محمدزاده,
    متشکرم آقای دکتر
    من با دستور newff و الگوریتم تنظیم بایسین دارم کار میکنم ، برای استفاده از الگوریتم ژنتیک باید بعد از یک بار اموزش از کدهای الگوریتم ژنتیک استفاده کنم و تابع هزینه ای پیدا کنم که شامل تعداد نرون لایه ها باشه تا مقدار بهینه تعداد نرون ها پیدا بشه؟ من نمیدونم کدهای الگوریتم ژنتیک رو برای پیدا کردن بهینه تعداد نرون ها کجای دستورات شبکه عصبی قرار بدم و ایا بعد از استفاده از الگوریتم ژنتیک مثل بهینه کردن وزن ها ، باید ادامه دستورات شبکه عصبی رو بنویسم یا نه

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ آذر ۱۵ام, ۱۳۹۶ ۵:۴۴ ب.ظ:

    @سمیرا,
    فایل ویدویی و مثال حل شده رو به دقت مطالعه کنید.

    روش اول که کاملاً واضحه کافیه که الگوریتم را برای تعداد نرونهای مختلف تکرار کنید و با توجه به نمودار mse داده های تست و آموزش تعداد نرون بهینه رو تعیین کنید. نمونه کد این روش را در جلسه سوم میتونید پیدا کنید.
    در روش بعدی
    با توجه به تعداد نرونها وزنهای مختلفی را به عنوان کروموزم در نظر بگیرید و اگه از تولباکس ژنتیک متلب استفاده می کنید کافیه که تابع هزینه و crossover رو درست بنویسید.
    مثلاً اگه تعداد ورودیهاتون nتاست شبکه عصبیتون یک لایه میانی و یک لایه خروجی دارد. در کرموزوم اول n1تا نرون و در دومی n2نروون و …دارید جمعیت اولیتون میتونه به صورت زیر باشه:
    کروموزوم اول:rand(n*n1+n1,1)

    کروموزوم دهم :rand(n*n10+n10,1)

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

    [پاسخ]

    سمیرا پاسخ در تاريخ آذر ۲۲ام, ۱۳۹۶ ۶:۱۹ ب.ظ:

    @دکتر محمدزاده,
    سلام آقای دکتر
    ممنون از راهنماییتون ، من با ژنتیک تعداد نرون های لایه اول و تابع فعال ساز لایه اول و دوم رو انتخاب کردم ، کل ساختار پیشنهادیم هم ۵۱۱ تا بود که بازه انتخاب تعداد نرون یک تا ۳۲ بود و انتخاب توابع فعال ساز بین tansig,purelin,logsig بود .جمعیت رو پنجاه و پنج تا انتخاب کردم و تعداد تکرار رو پانزده تا ، تابع هزینه رو هم rmse گرفتم …. تو نسل اول مقدار میانگین روی نمودار حدود دو هزار هست- که انتخاب ساختار بد این اعداد رو به وجود میاره مثل انتخاب یک نرون برای لایه اول و وتابع فعال ساز خطی برای هر دو لایه- و مقدار بست حدود دو دهم…بعد از سه تا چهار نسل مقدار میانگین به چهار دهم میرسه و مقدار میانگین و بست خیلی کم تغییر میکنن ، بعد از نسل هفتم هم معمولا یک یا دو تا ساختار اجرا میشه و انتخاب بین اون ها انجام میشه…. این چیزها باعث شده شیب همگرایی نمودار ژنتیک بسیار تند باشه اما ژنتیک ساختار خوبی رو به من پیشنهاد داد ….به نظر شما کار من ایراد داره و جایی رو باید اصلاح کنم یا اینکه این طبیعی هست؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ آذر ۲۳ام, ۱۳۹۶ ۸:۴۶ ب.ظ:

    @سمیرا,
    سلام
    نمودار همگرایی در این نوع الگوریتم ها میتونه نوسانات داشته باشه و نرم نباشه.
    موفق باشین

    [پاسخ]

    سمیرا پاسخ در تاريخ آذر ۲۳ام, ۱۳۹۶ ۹:۱۲ ب.ظ:

    @دکتر محمدزاده,
    بسیار متشکرم آقای دکتر

    [پاسخ]

  8. سلام آقای دکتر
    با توجه به جلسه پنجم، وزن بایاس ها را نباید آپدیت کنیم؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مهر ۲۳ام, ۱۳۹۶ ۱۲:۲۷ ب.ظ:

    @سمیرا,
    سلام
    همه وزنها به صورت یکجا آپدیت می شوند. وزنهای متصل به بایاس ها هم داخل ماتریس های w2 و w1 می باشد. اگر بخواهید که بایاس ها بی تاثیر باشند می توانید مقدار بایاس ها برابر با صفر قرار دهید.
    موفق باشین.

    [پاسخ]

    سمیرا پاسخ در تاريخ مهر ۲۳ام, ۱۳۹۶ ۱۰:۲۵ ب.ظ:

    @دکتر محمدزاده,
    پس دلیل اینکه در این کد ها در m فایل LM از سطر اول که مربوط به وزن بایاس ها است صرف نظر کردیم چی هست؟
    delta1=(w2(2:end,:)*delta2).*df1(net1);
    J1=(u*(delta1)’);

    delta12=(w2(2:end,:)*delta22).*df1(net1);
    J12=(u*(delta12)’);

    با تشکر

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مهر ۲۳ام, ۱۳۹۶ ۱۱:۱۶ ب.ظ:

    @سمیرا,
    صرف نظر نشده است. دقت کنید که بایاس لایه دوم تاثیری در آموزش وزنهای لایه اول نخواهد داشت. بایاس لایه دوم در بردار w2 اولین درایه w2 است. ضمناً اگه بخواهید بایاس داشته باشید مقدار بایاس را برابر یک قرار دهید وزنهای متصل به بایاس در حال تنظیم شدن هستند. اگر مقدار بایاس را صفر قرار دهید تاثیر بایاس حذف خواهد شد.

    [پاسخ]

    سمیرا پاسخ در تاريخ مهر ۲۴ام, ۱۳۹۶ ۱۲:۳۷ ق.ظ:

    @دکتر محمدزاده,
    وقتی به همین روال کد مینویسم موجب میشود تا ماتریس ژاکوبین نسبت به ماتریس وزن مربوطه ، یک سطر کمتر داشته باشد که ارور میدهد…. برای رفع ارور بنده با توجه به اینکه یک خروجی(۷۲*۱) داشتم کدها را کمی تغییر دادم، به این ترتیب:

    delta44=e.*delta4;
    J44=(o3*delta44′);

    delta3=(w4(2:end,:)*delta4).*[df3(net3)];
    J3=(o2*(delta3)’);

    delta32=(w4(2:end,:)*delta44).*[df3(net3)];
    J32=(o2*(delta32)’);

    delta2=(w3(2:end,:)*delta3).*[df2(net2)];
    J2=(o1*(delta2)’);

    delta22=(w3(2:end,:)*delta32).*[df2(net2)];
    J22=(o1*(delta22)’);

    delta1=(w2(2:end,:)*delta2).*[df1(net1)];
    J1=(x*(delta1)’);

    delta12=(w2(2:end,:)*delta22).*[df1(net1)];
    J12=(x*(delta12)’);

    dw4=(landa*eye(3)+(J4*J4′))\J44;
    dw3=(landa*eye(9)+(J3*J3′))\J32;;
    dw2=(landa*eye(11)+(J2*J2′))\J22;
    dw1=(landa*eye(5)+(J1*J1′))\J12;
    w1(2:end,:)=w1(2:end,:)+dw1;
    w2(2:end,:)=w2(2:end,:)+dw2;
    w3(2:end,:)=w3(2:end,:)+dw3;
    w4(2:end,:)=w4(2:end,:)+dw4;
    از نظر شما این کدها درست است؟(هیچ اروری نمی دهد اما نتیجه خوبی هم نمیگیرم)

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مهر ۲۴ام, ۱۳۹۶ ۸:۳۴ ق.ظ:

    @سمیرا,
    در برنامه نوشته شده برای LM همه وزنها و همچنین بایاس ها آموزش می بینند. و ابعاد ژاکوپین با ابعاد ماتریسها یکیست.
    دقت کنید که بایاسها به ورودهای لایه ها اضافه شده است. یعنی در LM ورودی لایه اول به صورت [b1;u] و ورودی لایه دوم به صورت [b2;o1] در نظر گرفته شده است.

    [پاسخ]

    سمیرا پاسخ در تاريخ مهر ۲۴ام, ۱۳۹۶ ۱۲:۰۱ ب.ظ:

    @دکتر محمدزاده,
    خیلی ممنونم ، دقیقا با روش شما اجرا کردم و هیچ اروری نداد….فقط نتیجه خوبی نمیگیرم ، ممکنه به اعدادی که به لاندا و نرخ آموزشی میدم مربوط باشه؟ نرخ آموزشی تطبیقی برای لوانبرگ مارکوآت هم قابل اجرا است؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مهر ۲۴ام, ۱۳۹۶ ۱۲:۲۵ ب.ظ:

    @سمیرا,
    LM تنها یک پارامتر داره که همون لاندا هست. اگر مقدارش بزرگ باشه این الگوریتم نزدیک میشه به گرادیان با نرخ آموزشی کوچک و مقدار لاندا رو کوچک در نظر بگیرید عملکرد این الگوریتم نزدیک میشه به نیوتن.
    ابتدا دقت کنید که دیتای آموزش و تارقت متناظر را درست میدید به برنامه. سپس تعداد نرونها، تعداد تکرارها و مقدار لاندا را کم زیاد کنید این موارد میتونه موثر باشه در عملکرد. همچنین مقدار بایاس را یکبار صفر قرار دهید و یکبار ۱ و نتیجه رو مقایسه کنید.

    [پاسخ]

  9. سلام برای یادگیری الگوریتم Resilient Backpropagation کدوم مجموعه رو باید دانلود کنم و اساسا تفاوت این روش با روش استاندارد چیه ؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مرداد ۲۵ام, ۱۳۹۶ ۹:۰۴ ب.ظ:

    @ارشام,
    سلام
    خیلی شبیه به روش استاندارد است
    تاحدودی سرعت همگراییش بیشتره ولی حجم محاسبات بیشتری هم به مسئله تحمیل میشه
    خیلی راحت می توانید روش استاندارد را به این روش ارتقا دهید
    کدها همونه
    فقط بعد از اینکه برنامه گرادیان رو اجرا کردین و مشتقات رو بدست آوردین (dE/dw)
    با توجه به علامت مشتقات آپدیت صورت میگیره
    یعنی مقدار (دامنه) مشتقات بی تاثیره
    به این صورت که، اگر تغییری در علامت مشتق به وجود اومد وزن متناظر با نرخ کمتر از یک (معمولاً ۰٫۵) آپدیت میشه و اگه نه، با نرخ بالاتر از یک (معمولاً ۱٫۲)

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

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

    [پاسخ]

    ارشام پاسخ در تاريخ مرداد ۲۶ام, ۱۳۹۶ ۲:۵۹ ق.ظ:

    @دکتر محمدزاده,
    کد تغییر رو مینویسید ؟

    [پاسخ]

    ارشام پاسخ در تاريخ مرداد ۲۶ام, ۱۳۹۶ ۴:۲۷ ق.ظ:

    @ارشام,
    کدی که از سایت شما دانلود کردم و باید تغییر پیدا کنه اینه :
    function [w1,w2]=GD_MLP(e,eta,u,o1,net1,net2,w1,w2)
    df1 =@(x) 2*exp(-x)./(1+exp(-x)).^2;
    df2 =@(x) 1*exp(-x)./(1+exp(-x)).^2;

    delta2=e.*df2(net2);
    w2=w2+eta*o1*delta2′;

    delta1=(w2(2:end,:)*delta2).*df1(net1);
    w1=w1+eta*u*(delta1)’;
    end

    [پاسخ]

    ارشام پاسخ در تاريخ مرداد ۲۷ام, ۱۳۹۶ ۴:۰۷ ب.ظ:

    @ارشام,
    با توجه به اینکه خروجی لایه اول معمولا سیگموئید است و بصورت برداری یه خروجی رو بهمون میده چطور باید بردار رو تعیین علامت نمود که اگه مثبت باشه eta=.5باشه و اگه منفی باشه ۱٫۲ باشه؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مرداد ۲۸ام, ۱۳۹۶ ۱:۲۵ ب.ظ:

    @ارشام,
    خیلی راحت می توانید از دستورات مقایسه ای استفاده کنید
    مثلاً (aa=delta>0) برداری هم اندازه delta می دهد که درایه هایی که در آنها درایه های متناظر delta بزرکتر از صفر است، یک و بقیه صفر می باشند.
    ضمناً تغییر علامت مشتق در سمپل های متولی معیار می باشد نه مثبت و منفی بودن.

    جلسه ای راجع به این مبحث در مباحث تکمیلی این مجموعه ارائه خواهد شد.
    موفق باشین.

    [پاسخ]

  10. سلام.شبکه های gmdh زیر مجموعه شبکه های mlp هستن ؟فرق شبکه های gmdh و mlp چیه؟میشه کد مربوط به شبکه gmdh رو به mlp تغییر داد؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مرداد ۲۲ام, ۱۳۹۶ ۳:۳۰ ب.ظ:

    @رضا اسدی,
    سلام
    به جلسه هفتم مراجعه کنید
    یک شبکه عصبی چندلایه بر اساس چند جمله ای های ایواخننکو می باشد.

    [پاسخ]

    اسدی پاسخ در تاريخ مرداد ۲۷ام, ۱۳۹۶ ۱۱:۰۷ ب.ظ:

    @دکتر محمدزاده,
    سلام ،من دانلود کردم .gmdh هر نورون در هر سری دو تا ورودی دریافت میکنه و در نهایته در هر مرحله محاسبه میکنه .
    آیا gmdh به عنوان زیر مجموعه mlp هست ؟
    من میتونم برنامه ای که با gmdh نوشتم رو به عنوان الگوریتم های mlp ارائه بدم یا نه ؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مرداد ۲۸ام, ۱۳۹۶ ۱:۲۰ ب.ظ:

    @اسدی,
    سلام
    لطفاً فیلم آموزشی مربوطه را ببیند
    یک شبکه عصبی چندلایه بر اساس چند جمله ای های ایواخننکو می باشد.
    در مثال داده شده چون تعداد ورودیها دوتاست به خاظر همین تنها یک بلوک gmdh داریم
    اگه تعداد ورودها زیاد باشد علاوه بر وزنها می توانید لینکها رو نیز بهینه کنید. (کدام جفت ورودی تشکیل بک بلوک دهند و چند جمله ای های ایواخننکو را تولید کنند).
    در جلسات زیادی راجع به MLP و روشهای مختلف آموزش آن بحث شده است که می توانید مراجعه کرده و نتایج رو مقایسه کنید.
    موفق باشین

    [پاسخ]

  11. سلام
    دیتا ستی با مشخصات زیر دارم
    input=5*900
    سن [۵…۹۰]
    قد [۱…۲٫۵]
    وزن [۱۰…۱۹۰]
    مقدار چربی خون [۴۵٫٫۱۹۵]
    میزان کلسیم [۴۰…۳۵۰]
    target=1*900
    میزان مجاز مصرف [۳۵۰…۴۵۰]
    ===================
    داده های آموزشی = ۷۰ درصد
    داده های تست = ۳۰ درصد
    =================
    میخوام پیش بینی و طبقه بندی رو با استفاده از کدهای mlp انجام بدم ولی متاسفانه با اموزش ها و کدهایی که گذاشتین نمیتونم این کار رو انجام بدم .
    خروجی که بدست میارم در بازه ۰ و ۱ هست و خروجی e خیلی با خروجی مطلوب(هدف) اختلاف داره .
    آیا با همین کدها که گذاشتین این کار امکان پذیر هست یا نه ؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مرداد ۲۱ام, ۱۳۹۶ ۱:۰۰ ب.ظ:

    @a,
    سلام
    بله، تابع فعالساز لایه خروجی را به خطی تغییر دهید
    موفق باشین.

    [پاسخ]

    a پاسخ در تاريخ مرداد ۲۱ام, ۱۳۹۶ ۵:۰۸ ب.ظ:

    @دکتر محمدزاده, امکانش هست بیشتر راهنمایی کنید که باید چطوری اینکار رو بکنم ؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مرداد ۲۱ام, ۱۳۹۶ ۹:۳۸ ب.ظ:

    @a,
    خروجی را به صورت O=net2
    در نظر بگیرید
    net2 ورودی تابع فعالساز لایه خروجی است.
    با اینکار در واقع تابع فعالساز را به خطی تغییر داده اید.

    [پاسخ]

    a پاسخ در تاريخ مرداد ۲۲ام, ۱۳۹۶ ۷:۳۱ ب.ظ:

    @دکتر محمدزاده,
    کد رو بصورت زیر تغییر دادم ولی نتیجه نمیگیرم .
    TrainInputs = Inputs(:,TrainInd);
    TrainTargets = Targets(:,TrainInd);
    TestInputs = Inputs(:,TestInd);
    TestTargets = Targets(:,TestInd);

    num_neuron=10;
    b1=0;
    b2=0;
    eta=.03;
    w1=rand(9,num_neuron);
    w2=rand(num_neuron+1,1);

    for epoch=1:13
    epoch;
    %% Train
    E=0;
    nn=nTrainData;

    for i=1:1:nn
    x=TrainInputs(:,i);
    [o1,o2,net1,net2]=FeedForward(x’,b1,b2,w1,w2);
    e=TrainTargets(i)-o2;
    [w1,w2]=GD_MLP(e,eta,[b1;x],[b2;o1],net1,net2,w1,w2);
    E=E+e^2;
    TrainOutputs(i)=o2;
    end
    E/nn ;
    MSE_Train(epoch)= E/423;

    %% Test
    E=0;
    for i=1:1:75
    x=TestInputs(:,i);
    [o1,o2,net1,net2]=FeedForward(x’,b1,b2,w1,w2);
    e= TestTargets(i)-o2;
    E=E+e^2;
    testOutputs(i)=o2;
    yest(i)=o2;
    end

    E/75;
    MSE_Test(epoch)=E/75;

    end

    TrainTargets;
    TrainOutputs;
    % figure;
    % PlotResults(TrainTargets, TrainOutputs, ‘Train Data’);
    %
    % figure;
    % PlotResults(TestTargets, testOutputs, ‘Test Data’);

    % figure;
    % PlotResults(Targets, Outputs, ‘All Data’);

    end

    function [o1,o2,net1,net2]=FeedForward(x,b1,b2,w1,w2)
    %% Activation functions
    % f1 =@(x)(x);
    % % f2 =@(x)(1-exp(-x))./(1+exp(-x));
    % f2=@(x) (x);
    % f2 =@(x) 1./(1+exp(-x));
    %% Hidden Layer
    u1=[b1;x’];
    net1=w1’*u1;
    o1= (net1)
    %% Out Layer
    u2=[b2;o1];
    net2=w2’*u2;
    o2=(net2)
    end

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مرداد ۲۲ام, ۱۳۹۶ ۱۱:۴۹ ب.ظ:

    @a,
    در بخش آموزش هم باید مشتق تابع فعالساز را تغییر دهید
    مشتق تابع فعالسازی که در این کد استفاده کردین ۱ خاهد شد.

    ضمناً نرخ آموزشی و ایپاک و تعداد نرونها رو هم کم و زیاد کنید تا به جواب مناسبتری برسید
    موفق باشین

    [پاسخ]

    a پاسخ در تاريخ مرداد ۲۳ام, ۱۳۹۶ ۱۲:۰۹ ق.ظ:

    @دکتر محمدزاده,
    جناب دکتر من تو همین قسمت مشتق گیری و بهینه سازی وزن ها مشکل دارم .
    خروجی دلتا ۱ و دلتا ۲ همش صفر میشه .
    این کد رو اگه امکانش هست شما تغییر بدین مشکلم حل میشه .
    function [w1,w2]=GD_MLP(e,eta,u,o1,net1,net2,w1,w2)
    df1 =@(x) 2*exp(-x)./(1+exp(-x)).^2;
    df2 =@(x) 1*exp(-x)./(1+exp(-x)).^2;
    delta2=e.*df2(net2);
    w2=w2+eta*o1*delta2′;
    delta1=(w2(2:end,:)*delta2).*df1(net1);
    w1=w1+eta*u*(delta1)’;
    end

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مرداد ۲۳ام, ۱۳۹۶ ۲:۱۳ ب.ظ:

    @a,
    اگه تابع فعالساز لایه خروجی را به صورت
    O2=net2
    در نظر گرفتین
    در برنامه گرادیان delta2 میشه e
    تابع فعالساز لایه میانی بذارید همون قبلی باشه
    delta2 مستقیم به خطا مربوطه اگر صفر بشه یعنی اینکه خروجی شبکه عصبی دقیقاً شده خروجی مطلوب

    [پاسخ]

    a پاسخ در تاريخ مرداد ۲۳ام, ۱۳۹۶ ۵:۲۶ ب.ظ:

    @دکتر محمدزاده,
    متاسفانه بازم حل نشد.
    کد کامل بصورت زیر هست:

    Inputs = (data.Inputs);
    Targets = (data.Targets);

    nData = size(Inputs,2);
    Perm = randperm(nData);
    % Train Data
    pTrain = 0.85;
    nTrainData = round(pTrain*nData);
    TrainInd = Perm(1:nTrainData);
    TrainInputs = Inputs(:,TrainInd);
    TrainTargets = Targets(:,TrainInd);

    % Test Data
    pTest = 1 – pTrain;
    nTestData = nData – nTrainData;
    TestInd = Perm(nTrainData+1:end);
    TestInputs = Inputs(:,TestInd);
    TestTargets = Targets(:,TestInd);

    num_neuron=10;
    b1=1;
    b2=1;
    eta=.5;
    w1=rand(9,num_neuron);
    w2=rand(num_neuron+1,1);
    E=0;
    nn=nTrainData;

    for i=1:1:nn
    x=TrainInputs(:,i);
    [o1,o2,net1,net2]=FeedForward(x,b1,b2,w1,w2);
    e=TrainTargets(i)-o2;
    [w1,w2]=GD_MLP(E,e,eta,[b1;x],[b2;o1],net1,net2,w1,w2);
    E=E+e^2;
    end

    end

    function [o1,o2,net1,net2]=FeedForward(x,b1,b2,w1,w2)
    %% Activation functions
    f1 =@(x)(1-exp(-x))./(1+exp(-x));
    % f1 =@(x)(1-exp(-x))./(1+exp(-x));

    %% Hidden Layer
    u1=[b1;x];
    net1=w1’*u1;
    o1= f1(net1);
    %% Out Layer
    u2=[b2;o1];
    net2=w2’*u2;
    o2=net2;
    end

    function [w1,w2]=GD_MLP(E,e,eta,u,o1,net1,net2,w1,w2)
    %% Derivative of Activation functions
    df1 =@(x) 2*exp(-x)./(1+exp(-x)).^2;
    df2 =@(x) 1*exp(-x)./(1+exp(-x)).^2;
    deltai=eta*(e);
    delta2=e;
    w2=w2+eta*o1*delta2′;
    delta1=(w2(2:end,:)*delta2).*df1(net1);
    w1=w1+eta*u*(delta1)’;
    end

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مرداد ۲۳ام, ۱۳۹۶ ۸:۵۳ ب.ظ:

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

    تعداد نرونها در لایه میانی و نرخ آموزشی و همچنین تعداد ایپاکها تاثیر زیادی در کیفیت پاسخ خاهد داشت.

    کدها رو سطر به سطر اجرا کنید تا اگه تغییری به اشتباه انجام دادید پیدا کنید

    موفق باشین

    [پاسخ]

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

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ مرداد ۶ام, ۱۳۹۶ ۹:۴۲ ب.ظ:

    @هانیه کردی,
    با سلام
    تولباکس متلب برای الگوریتم ژنتیک در یکی از جلسات به صورت کامل توضیح داده شده است که می توانید در مسائل مختلف استفاده کنید. مهمترین مسئله در استفاده از الگوریتم ژنتیک، درست نوشتن تابع هزینه است که باید متناسب با مسئله خودتان بتوانید بنویسید…

    [پاسخ]

  13. با عرض سلام خدمت استاد محمدزاده
    من چند وقت پیش ویدیوی تنظیم ضرایب pid با شبکه عصبی شما را خریداری کردم خیلی خوب بود اما در مورد آن سوال داشتم:
    اینکه ژاکوبین یک سیستم چگونه است؟
    ایا این برنامه برای سیستم های ناپایدار هم جواب میدهد؟
    با تشکر فراوان

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ تیر ۲۲ام, ۱۳۹۶ ۷:۲۷ ب.ظ:

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

    [پاسخ]

  14. سلام.

    در درس جلسه مربوط به شبکه عصبی MLP :

    در مجموع ۱۰۲۴۰ تا دیتای ترین (train) داریم. در حالی که با مشاهده ضرایب ترین (train) در ورک اسپیس مشاهده میکنیم که

    یک ماتریس با ۲۳ تا سطر و ۱۰۲۴ تا ستون داریم، چرا؟

    مگر نباید ۱۰۲۴۰ تا ستون داشته باشیم؟ یا اینکه ۱۰ تا از این ستون های ۱۰۲۴ تایی باید داشته باشیم؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ اردیبهشت ۳۱ام, ۱۳۹۶ ۶:۳۷ ب.ظ:

    @ماهان,
    دوست عزیز چرا فیلم آموزشی را نمی بینید؟؟؟؟؟؟؟؟
    از دقیقه ۷ تا ۱۱ در مورد این دیتا با جزئیات توضیح داده شده است.
    ابعاد دیتا train به صورت ۱۰*۱۰۲۴*۲۳ می باشد که هر لایه این ماتریس مربوط به یک تصویر است. حالا اگه همه دیتاها را کنار هم قرار دهیم به صورت یک ماتریس دو بعدی ۱۰۲۴۰*۲۳ خاهد بود.

    [پاسخ]

  15. سلام. وقت شما بخیر

    بنابراین با توجه به پاسخ قبلی شما :

    ۱- منظور شما از ۱۰۲۴ تا نمونه همون ۱۰۲۴ تا پیکسل است که برای هر پیکسل از ۲۳ تا فیچر استفاده کردید ؟

    ۲- و منظور شما از ۱۰ تا ورودی همون ۱۰ نوع پیکسل مختلف است که از هر نوع ۱۰۲۴ تا نمونه داریم؟

    باتشکر.

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ اردیبهشت ۳۱ام, ۱۳۹۶ ۱:۵۱ ب.ظ:

    @ماهان,
    لطفاً فیلم آموزشی را با دقت ببینید.
    تعداد ورودی ۲۳ تا است و تعداد خروجی ۱۰٫
    از هر نوع تصویر ۱۰۲۴ تا داریم.

    [پاسخ]

  16. سلام.

    از پاسخگویی شما به سوالات قبلی متشکرم.

    منظور شما در درس جلسه ۳ (MLP) از ۲۳ تا مشخصه که همون ورودی های شبکه هستند، ۲۳ تا ضریب مربوط به هر “پیکسل” است؟

    بعد هر سیگنال مجموعه ای از این پیکسل ها یعنی مضربی از ۲۳ ضریب است؟

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ اردیبهشت ۳۱ام, ۱۳۹۶ ۱۱:۴۰ ق.ظ:

    @ماهان,
    سلام
    تعداد ورودی های شبکه عصبی ۲۳ تاست که در مورد اون دیتابیس مربوط به ۲۳تا فیچر از یک تصویر است.
    ضمن اینکه برنامه به صورت کاملاً جنرال نوشته شده و شما به راحتی می توانید تعداد ورودی-خروجی دالخواه در نظر بگیرید.

    [پاسخ]

  17. سلام.

    منظورم در سوال قبلی این است که برای دیدن ام فایل دیتا بیسی که شما در درس جلسه سوم (MLP) استفاده کردید، چکار باید بکنیم.

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ اردیبهشت ۲۸ام, ۱۳۹۶ ۶:۴۶ ب.ظ:

    @ماهان,
    اگه برنامه را ران کنید این دیتا بیس در workspace شما لود میشه. داخل فلیم در مورد این دیتا بیس توضیح داده شده است. دیتابیس داخل فایلای متلب قرارد داده شده است با پسوند mat

    [پاسخ]

  18. سلام خدمت دکتر محمدزاده.

    شما در درس مربوط به جلسه ۳ (MLP) در دقیقه ۷ فرمودید که از یک سری دیتای پرکتیکال در این درس استفاده نمودید، می فرمایید که

    طریقه مشاهده ی این دیتا در فایل متلب این درس چگونه است؟

    با تشکر.

    [پاسخ]

    دکتر محمدزاده پاسخ در تاريخ اردیبهشت ۲۸ام, ۱۳۹۶ ۶:۴۴ ب.ظ:

    @ماهان,
    سلام دیتا بیس داخل فایلا قرار داده شده است. Xtrain و
    Xtest

    [پاسخ]

یک پاسخ بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *