م. فتحی
م. فتحی
خواندن ۷ دقیقه·۶ ماه پیش

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

معرفی

توسعه پرسپترون توسط فرانک روزنبلات(Frank Rosenblatt’s Perceptron) در اواخر دهه 1950 نقطه عطف مهمی در زمینه هوش مصنوعی بود. پرسپترون، یک مدل شبکه عصبی ساده بود که مفهوم یادگیری کامپیوتری را معرفی کرد و الهام‌بخش تحقیقات بیشتر در یادگیری ماشین و شبکه‌های عصبی شد. این مقاله مفاهیم اساسی پشت پرسپترون و اجرای آن را برای درک سهم درخشان فرانک روزنبلات در هوش مصنوعی بررسی می‌کند.

مقدمه ای بر نورون مصنوعی پرسپترون

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

پرسپترون روزنبلات تأثیر عمیقی بر حوزه هوش مصنوعی داشت. پرسپترون یکی از اولین مدل هایی بود که یادگیری ماشین را شرح داد. این مدل نشان داد که یک الگوریتم ساده می تواند پارامترهای خود را بر اساس داده‌های ورودی برای بهبود عملکرد خود تطبیق دهد و راه را برای الگوریتم‌های یادگیری پیچیده‌تر هموار کند. پرسپترون در زمینه‌هایی مانند تشخیص کاراکتر، پردازش تصویر و تشخیص گفتار کاربردهایی پیدا کرد و پایه و اساس برنامه‌های کاربردی یادگیری ماشین امروزی را گذاشت. در حالی که پرسپترون نویدبخش بود، اما در توانایی‌هایش، به ویژه در رسیدگی به مسائل غیر خطی، محدود بود. این محدودیت منجر به شک و تردید و کاهش علاقه به شبکه های عصبی، معروف به "زمستان هوش مصنوعی" شد.

پرسپترون چیست؟

پرسپترون مدلی از یک نورون بیولوژیکی است. یک یا چند ورودی یا محرک را می‌گیرد و یک خروجی باینری تولید می‌کند. اجزای اصلی پرسپترون عبارتند از:

  • ورودی و وزن(Input and weights): هر ورودی با وزنی مرتبط است که سهم آن را در خروجی پرسپترون تعیین می‌کند. این وزن‌ها پارامترهایی هستند که پرسپترون در طول فرآیند یادگیری آنها را تنظیم می‌کند.
  • تابع فعال‌سازی(Activation Function): مجموع وزنی ورودی‌ها از طریق یک تابع فعال‌سازی، معمولاً یک تابع مرحله‌ای، منتقل می‌شود. اگر مجموع از آستانه معینی فراتر رود، پرسپترون 1 را تولید می‌کند. در غیر این صورت 0 را به خروجی می‌دهد.
  • الگوریتم یادگیری(Learning Algorithm): پرسپترون با تنظیم وزن‌های خود بر اساس خطای خروجی خود نسبت به خروجی مورد نظر، یاد می‌گیرد. روزنبلات قانون یادگیری پرسپترون را به عنوان روشی ساده برای به روز رسانی وزن‌ها معرفی کرد.

چه زمانی باید از پرسپترون استفاده کرد؟

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

تفکیک پذیری خطی یک مفهوم اساسی است زیرا بر انتخاب الگوریتم ها و تکنیک ها برای حل مسائل طبقه بندی تأثیر می گذارد. هنگام برخورد با داده‌های قابل جداسازی خطی، اغلب می‌توان از الگوریتم‌های ساده‌تری مانند رگرسیون لجستیک یا ماشین‌های بردار پشتیبان خطی (SVM) استفاده کرد. برای داده‌های غیرخطی قابل تفکیک، مدل‌های پیچیده‌تر مانند SVM‌های غیرخطی و مدل‌های یادگیری عمیق یا مبتنی بر درخت برای ثبت الگوهای اساسی در داده‌ها ضروری هستند. درک تفکیک پذیری خطی یک مجموعه داده یک گام مهم در مهندسی ویژگی و فرآیند انتخاب مدل در یادگیری ماشین است.

الگوریتم یادگیری

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

مراحل:

1. با مقداردهی اولیه وزن ها و سوگیری ها شروع کنید. می توانید این مقادیر را روی مقادیر کوچک تصادفی تنظیم کنید.

2. برای هر مثال آموزشی، داده‌های ورودی را به پرسپترون می‌دهید. ورودی شامل بردار ویژگی ها (x1, x2, …, xn) است.

3. یک پیش‌بینی با مجموعه وزن‌ها و مقادیر سوگیری(bias) انجام دهید.

4. پیش‌بینی را از مقدار هدف کم کنید تا مشخص شود که آیا نیاز به افزایش یا کاهش وزن‌ها و مقادیر سوگیری داریم.

5. سپس، وزن را با نرخ یادگیری(learning rate) برای هر ورودی در مثال تمرینی که به اشتباه پیش‌بینی شده بود، افزایش یا کاهش می‌دهیم (بر اساس 4).

6. مراحل 3 تا 5 را برای تمام مثال های آموزشی برای تعداد ثابتی از تکرارها (دوران) تکرار کنید.

پیاده سازی پرسپترون در پایتون

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

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

روش پیش‌بینی مجموع حاصل از وزن‌ها و ورودی‌ها را می‌گیرد و عبارت بایاس را برای هر تمرین z اضافه می‌کند. مجموع متعاقباً به تابع فعال سازی منتقل می شود.

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

پس از اتمام کلاس باید به این شکل باشد.

آموزش پرسپترون و ارزیابی عملکرد آن

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

ما از ستون‌های طول و عرض کاسبرگ برای پیش‌بینی اینکه گل "Iris-setosa" یا گونه‌ای متفاوت از زنبق است استفاده می‌کنیم.

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

اکنون باید یک نمونه از کلاس پرسپترون ایجاد کنیم. دوره ها را روی 10 و نرخ یادگیری را روی 0.1 تنظیم کنید. پس از ایجاد نمونه، مدل را با استفاده از پارتیشن های آموزشی برازش می کنیم.

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

نتیجه‌گیری

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





هوش مصنوعیشبکه‌های عصبییادگیری ماشینپرسپترونperceptron
DFIR | AI
شاید از این پست‌ها خوشتان بیاید