پرسپترون چیست
پرسپترون یکی از ابتداییترین شبکههای عصبی است. این شبکه در سال 1958 توسط فرانک روزنبلات ابداع شد. ما در این پست ابتدا نورون مک کلاک-پیتز را معرفی میکنیم. سپس ساختار پرسپترون را بررسی میکنیم. در ادامه الگوریتم یادگیری پرسپترون را معرفی میکنیم. در نهایت هم ساختار پرسپترون امروزی را مطرح میکنیم. میخواهید بدانید پرسپترون چیست ؟ پس با هوسم همراه باشید…
دقیقا پرسپترون چیست ؟
وقتی در وب جستجو میکنیم “پرسپترون چیست”، برای کلمه perceptron معانی متعددی گفته میشود. برخی پرسپترون را معادل با نورون مصنوعی امروزی معرفی میکنند. این تصور درست نیست، یا بهتر بگویم دقیق نیست. اگر شما هم با این هدف این پست را میخوانید به شما پیشنهاد میکنم به پست نورون مصنوعی ما مراجعه کنید. برخی دیگر پرسپترون را تابع فعالسازی معرفی کردهاند!!! که غلط اندر غلط است 🤪. ما در این پست میخواهیم با مطرح کردن تاریخچهای شما را با مفهوم perceptron آشنا کنیم. اگر شما هم دوست دارید بدانید که سر و کله شبکههای عصبی از کجا پیدا شده. و فراز و نشیبهایش چه بوده، با ما همراه باشید 😊.
نورون مککلاک-پیتز
پیدایش نورون مصنوعی به سال 1943 برمیگردد. زمانی که یک متخصص اعصاب به نام Warren McCulloch و یک ریاضیدان به نام Walter Pitts مقالهای منتشر کردند. آنها در مقالهای با عنوان «A Logical Calculus of Ideas Immanent in Nervous Activity» یک مدل از نورون ارائه دادند. مدلی که آنها پیشنهاد دادند یک مدل محاسباتی ساده بر اساس منطق گزارهای بود که مدلی برای نحوه عملکرد نورونها برای انجام کارهای پیچیده پیشنهاد میکرد.
این نورون یک یا چند ورودی باینری (روشن/خاموش) و یک خروجی باینری داشت. مککلاک و پیتز نشان دادند که حتی با چنین نورون سادهای میتوان شبکهای از نورونها ساخت که بتوانند هر عملیات منطقیای را انجام دهند. برای مثال بیایید چند شبکه عصبی مصنوعی (ANN) برای انجام عملیات منطقی بسازیم. فرض میکنیم نورون زمانی فعال شود که حداقل دوتا از ورودیهایش 1 (on یا روشن) باشد. فعال شدن نورون یعنی خروجی آن یک یا on شود. به تصویر زیر دقت کنید:
- شبکه (a): این شبکه یک شبکه identity یا همانی است. ورودی هرچه باشد، خروجی هم همان میشود.
- شبکه (b): این شبکه عمل and را انجام میدهد. در صورتی که A و B، هردو یک باشند، خروجی یک است. در غیر این صورت خروجی صفر خواهد بود.
- شبکه (c): این شبکه عمل or را انجام میدهد. اگر A و B، هردو صفر باشند، خروجی صفر است. در غیر این صورت خروجی یک خواهد بود.
- شبکه (d): این شبکه عملیات منطقی پیچیدهتری را انجام میدهد. اگر B روشن باشد، شبکه عمل NOT را انجام میدهد. اگر B خاموش باشد، شبکه همانی خواهد بود!
در سال 1958، فرانک روزنبلات مقالهای با عنوان «THE PERCEPTRON: A PROBABILISTIC MODEL FOR INFORMATION STORAGE AND ORGANIZATION IN THE BRAIN » نوشت. او در این مقاله عنوان کرد که جبر بولی زبان مناسبی برای تحقیق در حوزه شبکههای عصبی نیست و بهتر است از تئوری احتمال استفاده شود. او یک شبکه عصبی جدید به نام perceptron ارائه کرد که در بخش بعدی به تشریح آن خواهیم پرداخت.
پرسپترون
perceptron یکی از سادهترین معماریهای ANN است که در سال 1958 توسط فرانک روزنبلات معرفی شد. این شبکه مبتنی بر یک نورون متفاوت به نام TLU ساخته شده است. TLU مخفف عبارت threshold logic unit یعنی واحد آستانهگذاری منطقی است. TLU گاهی LTU نیز خوانده میشود که مخفف linear threshold unit به معنی واحد آستانهگذاری خطی است. در TLU، ورودیها باینری نیستند، بلکه اعداد هستند. در این نورون هر ورودی یک وزن دارد. TLU جمع وزندار ورودیهای خود را محاسبه میکند یعنی:
z = w1 x1 + w2 x2 + ⋯ + wn xn = xT w
سپس نتیجه از یک تابع پله عبور خواهد کرد (hw(x) = step(z) که در آن z = xT w).
رایجترین تابع پلهای که در TLU استفاده میشود، تابع Heaviside است. گاهی هم از تابع sign استفاده میشود.
یک TLU به تنهایی میتواند برای کلاسبندی باینری مورد استفاده قرار گیرد. به این صورت که TLU جمع وزندار ورودیها را محاسبه میکند، سپس اگر نتیجه از یک مقدار آستانه بیشتر بود خروجی کلاسِ مثبت و اگر از آستانه کمتر بود، خروجی کلاسِ منفی خواهد بود. یک شبکه عصبی با یک نورون، توانایی محدودی دارد. به همین جهت برای بهبود کارایی، روزنبلات یک لایه از TLUها را تشکیل داد. به شبکه عصبی که از یک لایه از TLUها تشکیل شده باشد، پرسپترون گفته میشود.
پرسپترونها انواع مختلفی دارند که روزنبلات سال 1962 در کتاب خود به نام «Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms» مطرح کرده است. اما معروفترین آنها که روزنبلات آن را آلفا-پرسپترون نامید در ادامه تشریح خواهد شد. برای سادگی ما آلفا-پرسپترون را همان پرسپترون مینویسیم. پرسپترون یک مدل دو کلاسه است که در آن ورودی x ابتدا به کمک یک تبدیل غیرخطی به برداری از ویژگیها φ(x) تبدیل میشوند. این تبدیل غیرخطی قابلیت یادگیری ندارد و ثابت است. سپس از این بردار برای ساختن یک مدل خطی استفاده میشود:
الگوریتم یادگیری پرسپترون
برای اینکه یک سیستم کلاسبندی موثر داشته باشیم باید یک تابع اتلاف نیز داشته باشیم. تابع اتلافی که بر اساس نمونههایی که غلط کلاسبندی شدند تعریف شده باشد. در این بخش میخواهیم تابع اتلاف پرسپترون یا perceptron criterion را معرفی کنیم. تابع اتلاف پرسپترون به شکل زیر تعریف میشود:
که در آن M مجموعهای از نمونهها است که اشتباه کلاسبندی شدهاند. w بردار وزنها، φ بردار ویژگی و t مقدار target یا برچسب هستند. هدف این است که مقدار اتلاف پرسپترون مینیمم شود. برای مینیمم شدن این تابع اتلاف نیاز به یک الگوریتم یادگیری است. تا وزنها را آنقدر تغییر دهد که ما به هدفمان که مینیمم کردن اتلاف است برسیم. پرسپترون قانون یادگیری مخصوص به خودش را داشت. قانون یادگیری پرسپترون از قانون هب الهام گرفته شده است. این قانون میگوید اگر یک نورون باعث فعال شدن نورون دیگری شود، اتصال بین آن دو نورون قویتر میشود. روزنبلات برای یادگیری پرسپترون از قانونی شبیه به قانون هب استفاده کرد. قانون یادگیری پرسپترون تابع اتلاف را ملاک قرار میدهد. به این شکل که وزنهایی که باعث کاهش اتلاف میشوند تقویت میشوند. این قانون به شکل زیر مطرح شد:
در ابتدا ، روزنبلات با استفاده از یک کامپیوتر IBM 704، پرسپترون را شبیه سازی کرد. اما در اوایل دهه 1960 او سخت افزاری ساخت که به صورت مستقیم یادگیری پرسپترون را انجام میداد. تصویری از این دستگاه در ادامه آورده شده است:
محدودیتهای پرسپترون روزنبلات
مطالعاتی که روی پرسپترون در دهه 60 انجام شد نشان داد که این شبکهها برخی مسائل را به راحتی حل میکنند. اما حل یکسری مسائلِ نه چندان سخت با پرسپترون غیر ممکن به نظر میرسد. Marvin Minsky و Seymour Papert در سال 1969 کتابی به نام پرسپترون نوشتند که در آن تمامی تواناییها و محدودیتهای پرسپترون را مطرح کردند. آنها بیان کردند که پرسپترون تنها قادر به حل مسائلی است که linearly seperable باشند، یعنی به شکل خطی تفکیک پذیر باشند. و این شبکه در حل مسائلی مانند XOR ناتوان است. اگرچه کلاسبندهای خطی دیگر مانند Logistic Regression نیز نمیتوانستند چنین مسئلهای را حل کنند! اما انتظاری که محققان از پرسپترون داشتند بسیار بیشتر بود. همین مسئله باعث شد که بسیاری از آنها کاملا از پرسپترون و شبکههای عصبی قطع امید کنند. در نتیجه حوزه شبکههای عصبی به یک خواب زمستانی عمیق فرو رفت! تا زمانی که الگوریتم پسانتشار خطا مطرح شد.
ساختار پرسپترون امروزی
ساختار نورون و پرسپترون امروزی کمی با چیزی که مککلاک-پیتز و روزنبلات ابداع کرده بودند متفاوت است. امروزه دیگر خبری از تابع پله یا الگوریتم یادگیری پرسپترون نیست. بلکه از توابع فعالسازی مانند ReLU و … استفاده میشود. ساختار پرسپترون امروزی مشابه شکل زیر است.
همانطور که مشاهده میکنید، وزنها به صورت wi,j نمایش داده شدهاند. معنی wi,j در این نوع نمایش پرسپترون چیست ؟ اگر بخواهم ساده بگویم، wi,j نشاندهنده وزن مربوط به اتصال ورودی i به نورون j است. پس i شماره ورودی و j شماره نورون را نشان میدهد. همچنین yj خروجی نورون شماره j است. به این ترتیب رابطهای که برای نورون داشتیم به شکل زیر تغییر میکند:
جواب در متن
جواب در متن
جواب در متن
در این پست به سوال «پرسپترون چیست» پاسخ دادیم. همچنین تاریخچهای از پیدایش شبکههای عصبی ارائه کردیم. همچنین فهمیدیم تابع اتلاف پرسپترون چیست و الگوریتم یادگیری آن به چه شکل است. امیدوارم این آموزش مورد توجه شما قرار گرفته باشد. نظرات و سوالات خود را پایین 👇 برایمان کامنت کنید. حتما سوالات شما پاسخ داده خواهد شد.
مطالب زیر را حتما مطالعه کنید
شبکه اتوانکدر
شبکه عصبی mlp
شبکه ترنسفورمر
مدل MobileLLM
یادگیری عمیق چیست
آموزش یادگیری عمیق رایگان
10 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
چند سوال:
1 – یعنی در پرسپترون امروزی هر ورودی به چند نورون داده میشود ؟
2 – یعنی اگر 5 وردی داشته باشیم هر ورودی به 5 نورون داده میشود یا بیشتر ؟
3 – هرکدام از نورون ها وظیفه پیدا کردن یک وزن را دارد یا همه وزنها ؟
4 – لطفا یک مثال بزنید :
مثلا پیشبینی قیمت خانه که قیمت خانه به متراژ – قدمت ساخت – داشتن اسانسور و پارکینگ و انباری و … بستگی دارد که اینها میشود ورودی ها وقیمت خانه میشود خروجی
لطفا چنین مثالی بزنید
با تشکر
سلام
همه ورودیها به یک نورون وصل میشن. هر نورونی یک وزن اختصاصی برای خودش داره. پیشنهاد میکنیم، دو جلسه نورون مصنوعی و یادگیری نورون مصنوعی رو مطالعه کنید. احتمالا به جواب سوالهاتون میرسید.
سلام من چطور میتونم معادله های پرسپترون توابع خطی حل کنم ؟
ولی می بینیم که طبق شکل ۵ همه ورودی ها به همه نورون ها وصل شده
آنها را مطالعه کردم و این سوالها را پرسیدم
شکل 5 فقط یک پرسپترون (نورون) نیست. دو نورون هست که هر کدوم به تمامی ورودی ها وصل هستن. کلا اینطور باید درنظر بگیرید که تمامی ورودی ها باید به تمامی نورون ها وصل بشن.
اگر مثلا 5 ورودی داشته باشیم، معنیش این نیست که حتما 5 نورون هم داریم. تعداد نورون دست من و شماست. اما چه یک نورون بذاریم چه 100 نورون، همه ورودی ها باید به این نورون ها وصل بشن. مثلا با 5 ورودی و 100 نورون ما 500 اتصال و طبیعتا 500 وزن خواهیم داشت. هر اتصال یک وزن. در مرحله یادگیری باید این 500 مقدار بهینه برای این 500 وزن بدست بیاد. البته، برای سادگی بایاس رو نادیده گرفتیم.
سلام
تشکر بابت وقتی که برای تهیه محتوا گذاشته بودید
واقعا عالی بود خدا قوت
بسیار عالی بود اگر یک مثال هم می زدید فوق العاده میشد.
بسیار عالی…
ممنون دوست عزیز 🌹