رفتن به محتوا

پرسپترون: ساده‌ترین نورون مصنوعی

شبکه‌های عصبی، از کوچک تا مدل‌های چندمیلیارد پارامتری، از کنار هم گذاشتن یک واحد ساده ساخته می‌شوند: نورون مصنوعی. اولین و ساده‌ترین شکلش پرسپترون است.

در مغز پستانداران، یک نورون (یاخته‌ی عصبی) سه بخش اصلی دارد:

  • دندریت‌ها (dendrites): ورودی‌ها؛ سیگنال را از نورون‌های دیگر می‌گیرند.
  • جسم سلولی (body): سیگنال‌های رسیده را جمع می‌کند و «تصمیم» می‌گیرد.
  • آکسون (axon): خروجی؛ سیگنال را به نورون‌های بعدی می‌فرستد.

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

پرسپترون همین ایده را خیلی ساده‌شده پیاده می‌کند. فرانک روزنبلات آن را در سال ۱۹۵۸ معرفی کرد.

  1. ورودی‌ها عددهایی هستند که ویژگی‌های مسئله را نشان می‌دهند: قد و وزن، اندازه و بافت یک تومور، یا پیکسل‌های یک تصویر. هر ویژگی یک ورودی است.
  2. هر ورودی در یک وزن (weight) ضرب می‌شود. وزن‌ها معادل حساسیت اتصال‌ها در مغزند.
  3. حاصل‌ضرب‌ها جمع می‌شوند.
  4. یک تابع فعالیت (activation function) روی نتیجه اعمال می‌شود و خروجی را می‌سازد. ساده‌ترینش تابع پله است: اگر مجموع مثبت بود ۱، وگرنه ۰.

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

ورودی‌ها ۱۲ و ۴ هستند و وزن‌های تصادفی اولیه ۰٫۵ و ۱-:

12×0.5+4×(−1)=6−4=212 \times 0.5 + 4 \times (-1) = 6 - 4 = 2

حاصل مثبت است، پس تابع پله خروجی ۱ می‌دهد.

12x₀4x₁w₀ = 0.5w₁ = −1Σ6 − 4تابع فعالیت1خروجی
پرسپترون با دو ورودی: هر ورودی در وزن خودش ضرب می‌شود، حاصل‌ها جمع می‌شوند و تابع فعالیت خروجی را تعیین می‌کند.

مشکل ورودی صفر و نقش بایاس

Section titled “مشکل ورودی صفر و نقش بایاس”

اگر همه‌ی ورودی‌ها صفر باشند چه؟ صفر ضرب در هر وزنی صفر است، پس مجموع همیشه صفر و خروجی همیشه ۰ است. هر قدر هم وزن‌ها را عوض کنیم، فرقی نمی‌کند. اگر در داده‌ی ما نمونه‌ای با ورودی‌های صفر برچسب ۱ داشته باشد، پرسپترون هیچ‌وقت نمی‌تواند آن را درست بگوید.

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

12x₀4x₁w₀ = 0.5w₁ = −1bΣ6 − 4تابع فعالیت1خروجی
با بایاس (خط‌چین) حتی وقتی همه‌ی ورودی‌ها صفرند، پرسپترون می‌تواند خروجی ۱ بدهد.

به زبان ریاضی، یک پرسپترون با nn ورودی این را حساب می‌کند:

z=∑i=1nwixi+b,y^=f(z)z = \sum_{i=1}^{n} w_i x_i + b, \qquad \hat{y} = f(z)

که ff تابع فعالیت است. هر نورون، مستقل از تعداد ورودی‌هایش، فقط یک بایاس دارد.

با دو ورودی x1x_1 و x2x_2، معادله‌ی w1x1+w2x2+b=0w_1 x_1 + w_2 x_2 + b = 0 یک خط است؛ همان αx+βy+γ=0\alpha x + \beta y + \gamma = 0 که از دبیرستان می‌شناسیم. پرسپترون به نقطه‌های یک طرف خط ۱ می‌دهد و به طرف دیگر ۰. پس یک پرسپترون یعنی یک خط که صفحه را دو نیم می‌کند. بایاس همان عرض از مبدأ است: بدون آن، خط مجبور است از مبدأ بگذرد.

با سه ورودی این مرز یک صفحه است و با تعداد بیشتر، یک ابرصفحه (hyperplane). اسمش هر چه باشد، مرز صاف است و خمیدگی ندارد.

۱. خطی که از مبدأ می‌گذرد کافی است۲. خط باید جابه‌جا شود: بایاس لازم است۳. هیچ خطی این دو دسته را جدا نمی‌کند
دایره‌ها و ضربدرها دو دسته‌اند. اولی با خطی که از مبدأ می‌گذرد جدا می‌شود؛ دومی فقط با جابه‌جا کردن خط، یعنی با بایاس؛ سومی با هیچ خطی.

به مسئله‌هایی که با یک خط (یا صفحه یا ابرصفحه) حل می‌شوند جداشدنی خطی (linearly separable) می‌گوییم. مسئله‌ی سوم این‌طور نیست، و بیشتر مسئله‌های دنیای واقعی هم پیچیده‌تر از یک خط‌اند.

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

  • پرسپترون ورودی‌ها را در وزن‌ها ضرب و جمع می‌کند، بایاس را اضافه می‌کند و از یک تابع فعالیت عبور می‌دهد: y^=f(∑wixi+b)\hat{y} = f(\sum w_i x_i + b).
  • وزن‌ها و بایاس با عددهای تصادفی شروع می‌شوند و آموزش یعنی اصلاح آن‌ها.
  • بایاس اجازه می‌دهد مرز تصمیم از مبدأ نگذرد.
  • یک پرسپترون یک مرز خطی است و فقط مسئله‌های جداشدنی خطی را حل می‌کند.

مقدمه‌ای بر یادگیری عمیق، آموزش رایگان و فارسی یادگیری عمیق.