شبکه های عصبی: ساختار

اگر از واحد Feature Crosses به خاطر بیاورید، مشکل طبقه بندی زیر غیرخطی است:

طرح دکارتی. محور x سنتی دارای برچسب 'x1' است. محور y سنتی "x2" نامگذاری شده است. نقاط آبی ربع شمال غربی و جنوب شرقی را اشغال می کنند. نقاط زرد ربع جنوب غربی و شمال شرقی را اشغال می کنند.

شکل 1. مسئله طبقه بندی غیرخطی.

"غیرخطی" به این معنی است که شما نمی توانید یک برچسب را با مدلی از فرم \(b + w_1x_1 + w_2x_2\) به طور دقیق پیش بینی کنید به عبارت دیگر، "سطح تصمیم" یک خط نیست. پیش از این، ما به تلاقی ویژگی‌ها به عنوان یکی از روش‌های ممکن برای مدل‌سازی مسائل غیرخطی نگاه کردیم.

حال مجموعه داده های زیر را در نظر بگیرید:

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

شکل 2. یک مسئله طبقه بندی غیرخطی دشوارتر.

مجموعه داده های نشان داده شده در شکل 2 را نمی توان با یک مدل خطی حل کرد.

برای اینکه ببینیم چگونه شبکه‌های عصبی ممکن است به مشکلات غیرخطی کمک کنند، بیایید با ارائه یک مدل خطی به عنوان یک نمودار شروع کنیم:

سه دایره آبی در یک ردیف که با فلش به یک دایره سبز در بالای آنها متصل شده اند

شکل 3. مدل خطی به عنوان نمودار.

هر دایره آبی نشان دهنده یک ویژگی ورودی و دایره سبز نشان دهنده مجموع وزنی ورودی ها است.

چگونه می‌توانیم این مدل را تغییر دهیم تا توانایی آن در مقابله با مسائل غیرخطی بهبود یابد؟

لایه های پنهان

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

سه دایره آبی در یک ردیف با برچسب

شکل 4. نمودار مدل دو لایه.

آیا این مدل خطی است؟ بله، خروجی آن هنوز ترکیبی خطی از ورودی های آن است.

در مدلی که توسط نمودار زیر نشان داده شده است، ما یک لایه مخفی دوم از مجموع وزنی اضافه کرده ایم.

سه دایره آبی در یک ردیف با برچسب

شکل 5. نمودار مدل سه لایه.

آیا این مدل هنوز خطی است؟ بله همینطور است. وقتی خروجی را به عنوان تابعی از ورودی بیان می کنید و آن را ساده می کنید، مجموع وزنی دیگری از ورودی ها را دریافت می کنید. این مجموع به طور موثر مسئله غیرخطی در شکل 2 را مدل نمی کند.

توابع فعال سازی

برای مدل‌سازی یک مسئله غیرخطی، می‌توانیم مستقیماً یک غیرخطی معرفی کنیم. ما می توانیم هر گره لایه پنهان را از طریق یک تابع غیرخطی لوله کنیم.

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

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

شکل 6. نمودار مدل سه لایه با تابع فعال سازی.

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

توابع فعال سازی رایج

تابع فعال سازی سیگموئید زیر مجموع وزنی را به مقداری بین 0 و 1 تبدیل می کند.

$$F(x)=\frac{1} {1+e^{-x}}$$

در اینجا یک طرح است:

تابع سیگموئید

شکل 7. تابع فعال سازی سیگموئید.

تابع فعال سازی واحد خطی تصحیح شده زیر (یا به اختصار ReLU ) اغلب کمی بهتر از یک تابع صاف مانند سیگموئید عمل می کند، در حالی که محاسبه آن نیز بسیار آسان تر است.

$$F(x)=max(0,x)$$

برتری ReLU بر اساس یافته‌های تجربی است، احتمالاً توسط ReLU که دارای طیف مفیدتری از پاسخ‌گویی است. پاسخ دهی سیگموئید نسبتاً سریع در هر دو طرف کاهش می یابد.

عملکرد فعال سازی ReLU

شکل 8. تابع فعال سازی ReLU.

در واقع، هر تابع ریاضی می تواند به عنوان یک تابع فعال سازی عمل کند. فرض کنید \(\sigma\) تابع فعال سازی ما (Relu، Sigmoid یا هر چیز دیگری) را نشان می دهد. در نتیجه، مقدار یک گره در شبکه با فرمول زیر داده می شود:

$$\sigma(\boldsymbol w \cdot \boldsymbol x+b)$$

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

خلاصه

اکنون مدل ما دارای تمام مؤلفه‌های استانداردی است که افراد معمولاً وقتی می‌گویند «شبکه عصبی» به آن اشاره می‌کنند:

  • مجموعه ای از گره ها، مشابه نورون ها، که در لایه ها سازماندهی شده اند.
  • مجموعه ای از وزن ها که نشان دهنده ارتباط بین هر لایه شبکه عصبی و لایه زیر آن است. لایه زیر ممکن است یک لایه شبکه عصبی دیگر یا نوع دیگری از لایه باشد.
  • مجموعه ای از سوگیری ها، یکی برای هر گره.
  • یک تابع فعال سازی که خروجی هر گره را در یک لایه تبدیل می کند. لایه های مختلف ممکن است عملکردهای فعال سازی متفاوتی داشته باشند.

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