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

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

رفتار آن با نحوه اتصال عناصر فردی آن و قدرت یا وزن آن اتصالات تعریف می شود. این وزنها به طور خودکار در طی آموزش طبق یک قانون یادگیری مشخص تنظیم میشوند تا اینکه شبکه عصبی وظیفه مورد نظر را به درستی انجام دهد.
شبکههای عصبی به خصوص برای انجام تشخیص الگو برای شناسایی و طبقه بندی اشیا یا سیگنالها در سیستم گفتار، بینایی و کنترل مناسب هستند. آنها همچنین میتوانند برای انجام پیش بینیهای سریال و مدلسازی مورد استفاده قرار گیرند.
شبکه های عصبی
یک شبکه عصبی از چندین عنصر به نام نورون تشکیل شده که هر یک از این نورونها با نورونهای دیگر در ارتباط هستند. البته ارتباط بین نورونها وزندار می باشد که این وزن ها به عنوان پارامترهای مهم مطرح می شوند.
به طور کلی شبکه های عصبی به گونه ای آموزش داده میشوند که یک ورودی خاص منجر به خروجی خاص در لایه خروجی شبکه عصبی می شود. برای این که شبکههای عصبی توابع پیچیده تری را در کاربردهای مختلف شبیه سازی می کنند.
به پیاده سازی شبکه عصبی در متلب به شکل زیر توجه کنید
ورودی اسکالر پس از ضرب شدن در وزن مربوطه وارد تابع تصمیمگیری شبکه عصبی می شود که خروجی این تابع نیز یک عدد اسکالر میباشد. با توجه به شکل میتوان دریافت که هر نورون می تواند تعدادی bias داشته باشد.
لازم است بدانید که تعدادی پارامتر مختلف وجود دارد که باید هنگام طراحی یک شبکه عصبی تصمیم گرفت. از بین این پارامترها تعداد لایه ها، تعداد سلولهای عصبی در لایه، تعداد تکرارهای تمرین و غیره می باشد. برخی از مهمترین پارامترها از نظر آموزش و ظرفیت شبکه تعداد سلولهای عصبی پنهان، میزان یادگیری و پارامتر حرکت است.
شبکه های عصبی از سه لایه تشکیل شده اند:
- input
- Hidden
- output
به هر تعداد لایههای موجود بین input و output، لایه های پنهان (Hidden) گفته می شود. البته میتوان گفت که هر آن چه قبل از لایه output باشد به عنوان لایه Hidden شناخته میشود.
در واقع در نورونهای پنهان نورونهایی می باشند که نه در لایه ورودی هستند و نه در لایه خروجی. این نورونها در اصل از دید پنهان هستند و معمولاً میتوان تعداد و سازمان آنها را به عنوان جعبه سیاه برای افرادی که با سیستم درگیر هستند، افزایش داد. استفاده از لایههای اضافی نورونهای پنهان قدرت پردازش بیشتر و انعطافپذیری سیستم را امکان پذیر می کند.
نورون های پنهان
داشتن بیش از حد بسیاری از نورونهای پنهان شبیه به سیستم معادلات با معادلات بیشتر از متغیرهای آزاد است و نمی توان آن را تعمیم داد. داشتن تعداد بسیار کمی نورون پنهان می تواند مانع از درستی قرارگرفتن سیستم در دادههای ورودی شود و استحکام سیستم را کاهش میدهد.
قبل از پرداختن به موضوع شبکه عصبی در متلب لازم است با برخی از کاربردهای شبکه های عصبی آشنا شوید که به شرح زیر می باشد:
- شرکت های نیرو برای اطمینان و بهینه سازی بهره وری از ژنراتورهای نیروگاهی که کار می کنند، بارهای شبکه برق را به طور دقیق پیش بینی می کنند.
- دستگاه های خودپرداز با اطمینان خواندن شماره حساب و مبلغ سپرده در چک خود، با اطمینان قابل قبول سپرده های بانکی را می پذیرند.
- آسیب شناسان به برنامه های تشخیص سرطان متکی هستند تا آنها را بر اساس یکنواختی اندازه سلول، ضخامت توده، میتوز و سایر عوامل در طبقه بندی تومورها به عنوان خوش خیم یا بدخیم راهنمایی کنند.
ابزارهای مدیریت مجموعه داده های بزرگ
جهت پیاده سازی شبکه عصبی در متلب لازم به ذکر است که با استفاده از ابزارهای مدیریت مجموعه داده های بزرگ، متلب (MATLAB) مجموعه ای ابزارهای تخصصی را برای کار با یادگیری ماشینی (machine learning)، شبکه های عصبی و یادگیری عمیق (deep learning) را ارائه می دهد.
تنها با چند خط کد متلب به کاربر این امکان را می دهد که شبکه های عصبی را بدون تخصص خاصی توسعه داد، سریع شروع کرد، مدل ها را ایجاد و تجسم کرد و مدل ها را در سرورها و دستگاه های تعبیه شده مستقر کرد. با استفاده از نرم افزار متلب می توان نتایج را در برنامه های موجود خود ادغام کرد. با استفاده از نرم افزار متلب می توان مدل های شبکه های عصبی در سیستم تعبیه شده را انجام داد.
ایجاد شبکه عصبی در متلب
با استفاده از Deep Learning Toolbox، MATLAB Coder، GPU Coder و MATLAB Compiler می توانید شبکه های آموزش دیده را در سیستم های تعبیه شده مستقر کرد یا آنها را با طیف گسترده ای از محیط های تولید کرد.
شما می توانید از MATLAB Coder برای تولید کد C و C ++ استفاده کنید و این امکان را به شما می دهد تا یک شبکه عصبی را روی سخت افزار رایانه شخصی شبیه سازی کنید و سپس شبکه عصبی را به سیستم های تعبیه شده مستقر کنید.
برای مستقر کردن شبکه های آموزش دیده به عنوان کتابخانه مشترک C / C ++، اسمبلی های Microsoft. NET ، کلاس های جاوا و پکیج های Python از برنامه های MATLAB همچنین می توانید یک مدل شبکه را در برنامه مستقر یا یک جزء آموزش دهید.
آموزش شبکه عصبی در متلب
بهتر است در ابتدا با توابع شبکه های عصبی در محیط متلب آشنا شویم که به شرح زیر می باشد:
- تابع Hard limit: این تابع برای مقادیر بیشتر از صفر، خروجی یک را بر می گرداند و برای مقادیر کمتر از صفر یا اعداد منفی خروجی آن مقدار صفر می باشد.
- تابع Hard limits: این تابع مشابه تابع Hard limit می باشد که به ازای مقدار بیشتر از صفر، مقدار یک و به ازای مقادیر کمتر از صفر یا اعداد منفی عدد -1 را بر می گرداند که در قسمت منفی تابع می توان تفاوت دو تابع Hard limit و Hard limits را مشاهده کرد.
- تابع Linear (خطی): در محیط متلب این تابع به صورت purelin نوشته می شود. این تابع در بازه تعریف شده، مقدار همانی یا مقدار یک تابع خطی را به خود اختصاص می دهد.
- تابع log-Sigmoid: یکی از توابع شبکه های عصبی می باشد که در محیط نرم افزار متلب به صورت logsig نوشته می شود. به ازای مقادیر مثبت یک log را به خود اختصاص می دهد و برای مقادیر منفی یک log دیگر. همان طور که می دانید مقادیر توابع لگاریتم بین صفر و یک تعریف می شود.
- تابع tan-sigmoid: تفاوت تابع tan-sigmoid با log-Sigmoid در این است که خروجی بین -1 و 1 می باشد.
شبیه سازی شبکه عصبی در متلب
برای شبیه سازی از دستور sim که مخفف simulation است، استفاده می شود. حال قصد داریم یکی از ساده ترین شبکه های عصبی، پیادهسازی کنیم. لازم است بدانید که سادهترین شبکه عصبی دارای ساختاری بدون فیدبک (feedback) می باشد یعنی در ابتدا یک شبکه عصبی ساده که فقط دارای یک ورودی است، شبیهسازی میشود. در ادامه به کدنویسی شبکه عصبی در متلب توجه کنید.
>> net =newlin([-1 3 ; -1 3] , 1)
با وارد کردن دستور فوق ساده ترین شبکه عصبی پیاده سازی می شود.
net =
Neural Netwok
name: `Custom Neural Netwok`
userdata: (your custom info)
dimensions
numInputs: 1
numLayers: 1
numOutputs: 1
numInputDelays: 0
numLayerDelays: 0
numFeedbackDelays: 0
numWeightElements: 3
sampleTime: 1
Connections
biasConnect: true
inputConnect: true
layerConnect: false
outputConnect: true
subobjects
input: Equivalent to inputs {1}
output: Equivalent to outputs {1}
inputs: {1x1 cell array of 1 input}
layers: {1x1 cell array of 1 layer}
outputs: {1x1 cell array of 1 output}
biases: {1x1 cell array of 1 bias}
inputweights: {1x1 cell array of 1 weight}
layerweights: {1x1 cell array of 0 weight}
functions
adapFcn: `adaptwb`
adapParam: (none)
derivFcn: `defaultderiv`
devideFcn: (none)
devideParam: (none)
devideMode: `sample`
initFcn: `initlay`
performFcn: `mse`
performParam: .regularization , .normalization
plotFcn: {`plotperform` , plottrainsatate}
plotParam: {1x2 cell array of 2 params}
trainFcn: `trainb`
trainParam: .showWindow , .showCommandLine , .show , .time , .goal , .min_grad , .max_fail
weights and bias values
IW: { 1x1 cell} containing 1 input weight m
LW: {1x1 cell} containing 0 layer weight m
b : {1x1 cell} containing 1 bias weight m
methods
adap: Learn while in continuous use
configure: configure inputs & outputs
genism: Generate Simulink model
init: Initialize weights & biases
perform: Calculate performance
sim: Evaluate network outputs given inputs
train: Train network with examples
view: View diagram
unconfigure: Unconfigure inputs & outputs
evaluate: outputs=net(inputs)
همان طور که مشاهده میکنید نام این شبکه عصبی به صورت پیشفرض Neural Network می باشد که خود نرم افزار متلب آن را نامگذاری کرده است. عدد وارد شده نشاندهنده وزن پارامترها است و زمان نمونه نیز 1 در نظر گرفته شده است. حال اگر جلوی دستور نوشته شده شبکه عصبی در متلب عملگر ; قرار دهیم یعنی:
>> net =newlin([-1 3 ; -1 3] , 1) ;
دیگر مشخصات فوق برای شبکه عصبی ایجاد نمی شود.
در ادامهی این مقاله با ما همراه باشید …..
سلام وقت بخیر؟ من نیاز به راهنمایی و کمک دارم ولی اطلاعاتی در این مورد پیدا نمی کنم ممنون می شم راهنمایی کنید؟
من نیاز دارم که یک شبگه محاسباتی گرید شامل 20 تا 40 کامپیوتر رو در متلب شبیه سازی کنم اما نتونستم با سیمولینک متلب کار کنم و انجام بدم ؟می تونید کسی رو به من معرفی کنید که در این مورد من رو راهنمایی کنه یا حداقل بتونه برام این کار رو رانجام بده؟ ممنون می شم که جوابتون رو به ایمیلم بفرستید. با تشکر فراوان
سلام
لینک زیر میتونه بهتون کمک کن:
https:// www .mathworks.com/matlabcentral/fileexchange/52816-parallel-computing-toolbox-plugin-for-matlab-parallel-server-with-grid-engine
سلام وقت بخیر
ممنون از مطالب عالیتون
سوالی داشتم در ارتباط با شبکه های عصبی ممنون میشم اگر راهنمایی کنید
ما بعد از این که یک شبکه عصبی رو آموزش دادیم و خروجی مطلوبی ازش گرفتیم برای دیتا های جدید چطوری باید از این شبکه استفاده کنیم؟
ممنون میشم اگر آموزشی یا لینکی در ارتباط با این مسيله دارید دراختیارم بذارید