هوش مصنوعی -شبکه‌های عصبی-شبکه عصبی پرسپترون-ابراهیم خلیلی

هوش مصنوعی -شبکه‌های عصبی-شبکه عصبی پرسپترون-ابراهیم خلیلی هوش مصنوعی -شبکه‌های عصبی-شبکه عصبی پرسپترون-ابراهیم خلیلی

هوش مصنوعی -شبکه‌های عصبی-شبکه عصبی پرسپترون-ابراهیم خلیلی

هوش مصنوعی -شبکه‌های عصبی-شبکه عصبی پرسپترون-ابراهیم خلیلی

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

شبکه عصبی پرسپترون

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

نورون های مصنوعی

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

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

این مقایسه رو میتونید در شکل زیر بهتر متوجه بشید: 

 

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

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

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

پرسپترون

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

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

  • تک لایه یا single layer 
  • چند لایه یا multilayers

معماری شبکه عصبی پرسپترون تک لایه به صورت زیر هست:

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

نورون این شبکه عصبی دو عمل رو انجام میده. اول ورودی هایی که روشون وزن دهی اعمال شده رو با هم جمع میکنه به صورت زیر: 

z = w1 x1 + w2 x2 + ⋯ + wn xn = xT w

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

 

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

خروجی الگوریتم پرسپترون 

خب فرض کنید از تابع Sign به عنوان تابع فعال ساز برای یک شبکه عصبی پرسپترون استفاده کردیم. بنابراین میشه این فرایند رو به صورت زیر بیان کرد:

https://www.simplilearn.com/ice9/free_resources_article_thumb/Perceptron/Perceptron_10.jpg

 

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

هوش مصنوعی -شبکه‌های عصبی-شبکه عصبی پرسپترون-ابراهیم خلیلی

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

جدول کلیدواژه ها 

منابع 

https://howsam.org/what-is-perceptron-2/

https://www.simplilearn.com/tutorials/deep-learning-tutorial/perceptron

https://en.wikipedia.org/wiki/IBM_704

https://fa.eferrit.com/ibm-701/

مقاله دوازدهم هوش مصنوعی  

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

همچنین میتوانید با شماره 0218451 داخلی 3123 تماس بگیرید.


 

 

 

 

 

 

 

Menu