پرسپترون کیست؟ توضیح بده.
پرسپترون کوته‌نوشت نورون ادراکی یک الگوریتم یادگیری ماشین است که در دسته یادگیری با نظارت قرار می‌گیرد. الگوریتم پرسپترون یک الگوریتم (نوعی از دسته‌بندی که می‌تواند با توجه به بردار ورودی تصمیم بگیرد که این ورودی متعلق به یک کلاس هست یا خیر) است. این الگوریتم یک است، به‌این معنا که پیش‌بینی‌هایش را باتوجه به ترکیب خطی وزن دار ورودی الگوریتم انجام می‌دهد. همچنین این الگوریتم به دلیل اینکه ورودی‌هایش را به صورت تک تک در زمان بررسی می‌کند، یک الگوریتم برخط می‌باشد. الگوریتم پرسپترون در سال ۱۹۵۷ در به وسیلهٔ ابداع شد. در واقع این الگوریتم جزء اولین است که به‌کار گرفته شده‌است.تاریخچه.الگوریتم "پرسپترون" در سال ۱۹۵۷ در توسط فرنک رزنبلتبا سرمایه‌گذاری دفتر تحقیقات دریانوردی ایالات متحدهابداع شد. پرسپترون بیشتر به عنوان یک دستگاه مد نظر بوده‌است تا یک برنامه؛ و با این‌که اولین پیاده‌سازی آن به صورت یک نرم‌افزار برای بود؛ پس از آن به صورت سخت‌افزار اختصاصی "پرسپترون مارک ۱" پیاده‌سازی شد. این دستگاه برای تشخیص تصویر طراحی شده بود: مجموعه‌ای از ۴۰۰، که به صورت تصادفی به "نورون"‌ها متصل شده‌اند. وزن‌ها در ها کدگذاری شده بودند، و بروزرسانی وزن‌ها در طول یادگیری با موتورهای الکتریکی صورت می‌گرفت.تعریف.پرسپترون یک نوع است که ورودی خود formula_1 (یک بردار متشکل اعداد حقیقی) را به مقدار خروجی formula_2 (یک اسکالر با مقادیر باینری) که به صورت زیر حساب می‌شود، متناظر می‌کند:وب سرور با استفاده از شبکه عصبی پرسپترون چند لایه ای مدلسازی می شود. به طور کلی یک الگوریتم عصبی است که با توجه به ازدحام وب سرویس در شبکه چند لایه ای پیشبینی هایی را صورت میدهد تا سرور از کار نیافتد.formula_4 یک بردار از وزن‌هایی با مقادیر حقیقی است و formula_5 بردار وزن و بردار ورودی است، که در آن formula_6 تعداد ورودی‌های پرسپترون است. در رابطه بالا formula_7 نشان‌دهنده بایاس است که وظیفه آن جابجا کردن مرز تصمیم‌گیری از مبدأ است و مقدار آن به ورودی‌ها بستگی ندارد.در مسئله مقدار formula_2 برای دسته‌بندی formula_1 بین دو کلاس formula_10 و formula_11 استفاده می‌شود. اگر formula_7 عددی منفی باشد، جمع وزن‌دار ورودی‌ها باید عدد مثبتی بزرگتر از formula_13 باشد تا خروجی پرسپترون formula_14 شود. به عبارت دیگر دسته‌بند پرسپترون مانند یک ابرصفحه است که فضای formula_6 بعدی را به دو قسمت تقسیم می‌کند، در این صورت formula_4 نشان‌دهنده بردار عمود برصفحه و formula_7 نشان‌دهنده عرض از مبدأ صفحه جداکننده است. به ازای نقاط داده شده به همراه برچسب آن‌هاformula_18 الگوریتم پرسپترون مقادیر formula_4 و formula_7 را به گونه‌ای می‌یابد که تمام نمونه‌ها توسط تابع formula_21 به‌درستی برچسب گذاری شوند یعنیformula_22اگر داده‌های مثبت و منفی قابلیت جداشدن توسط یک ابرصفحه را نداشته باشند الگوریتم پرسپترون متوقف نمی‌شود اما اگر داده‌ها خطی تفکیک‌پذیر باشند الگوریتم پرسپترون در تعداد متناهی مرحله پایان می‌یابد. معروف‌ترین تابعی که الگوریتم پرسپترون قادر به یادگیری آن نیست؛ تابع است.در زمینه پرسپترون یک نوع است که آن تابع پله‌ای هویساید می‌باشد.الگوریتم یادگیری.الگوریتم پرسپترون یک الگوریتم تکرار شونده است، به این صورت که در ابتدا بردار وزن formula_4 و بایاس formula_7 به نحوی مقداردهی می‌شوند و سپس در هر مرحله، الگوریتم با توجه به نقاطی که درست دسته‌بندی نشده‌اند مقادیر وزن formula_4 و بایاس formula_7 را تغییر می‌دهد تا این نقاط به درستی دسته‌بندی شوند. اگر نقاط داده‌شده به صورت خطی تفکیک‌پذیر نباشند الگوریتم پرسپترون پایان نمی‌یابد اما در صورتی که نقاط خطی تفکیک‌پذیر باشند الگوریتم در تعداد متناهی مرحله پایان می‌یابد.تعریف مسئله.متغیرهای زیر را تعریف می‌کنیم:داده‌های آموزشی به صورتformula_27است که formula_28 و formula_1 بردار ورودی تغییریافته‌است (برای سادگی الگوریتم formula_30 را عضو مجموعه formula_31 در نظرگرفته‌ایم، که formula_32 نشان‌دهنده نمونه‌های مثبت و formula_33 نشان‌دهنده نمونه‌های منفی است).formula_34 و formula_35نشان‌دهنده بردار ورودی و مقدار خروجی مدنظر برای formula_36 امین نمونه آموزشی است. formula_37 نشان‌دهنده formula_38 امین مؤلفه بردار formula_34 است. برای اینکه پارامترهای بایاس formula_7 و بردار وزن را به صورت یک بردار واحد در نظر بگیریم بردارهای ورودی formula_1 و بردار وزن formula_4 را به‌گونه‌ای تغییر می‌دهیم کهformula_43 و formula_44 در این‌صورتformula_45تابع پرسپترون را نیز به صورت زیر تغییر می‌دهیمformula_46هدف پیدا کردن بردار وزن formula_4 به‌گونه‌ای است که برای نقاط داده‌شده formula_48 داشته باشیمformula_49مراحل الگوریتم.الگوریتم در هر مرحله باتوجه به نقاطی که اشتباه دسته‌بندی شده‌اند بردار وزن را تغییر می‌دهد تا نقاط بیشتری را به درستی دسته‌بندی کند. الگوریتم در هر مرحله بردار وزن جدیدی را به‌دست می‌آورد. در ابتدا بردار وزن را برابر با صفر قرار می‌دهیم. بردار وزن را در مرحله formula_50 ام با formula_51 نشان می‌دهیم. اگر الگوریتم پس از formula_52 مرحله متوقف‌شود (تمام نقاط به درستی دسته‌بندی شوند)، formula_53 بردار وزن مورد نظر است. شبه‌کد الگوریتم پرسپترون در زیر نوشته‌شده‌است. input: A training set formula_54 initialize: formula_55 for t = 1,2 ... if(formula_56) formula_57 else formula_58اگر formula_59 می‌توان گفت که تابع پرسپترون با بردار وزن formula_51 ورودی formula_34 را به اشتباه دسته‌بندی می‌کند. در این صورت بردار وزن به گونه‌ای تغییر می‌کند خطای کمتری روی formula_34 مرتکب شود و آن را به درستی دسته‌بندی کند. الگوریتم هنگامی پایان می‌یابد که برای تمامی نقاط داشته باشیمformula_63و در این‌صورت خواهیم داشتformula_64بنابراین formula_53 بردار وزن موردنظر است.