درباره توابع فعال سازی پرسپترون و Sigmoid

در این درس از دوره شبکه های عصبی به توابع فعال ساز(Activation Functions) می رسیم. در اینجا قصد نداریم تمامی توابع فعال ساز را با هم به صورت دقیق مرور کنیم. فقط میخواهیم چند نمونه کاربرد این توابع را در شبکه های عصبی بررسی کنیم.

یک تعریف ساده درباره توابع فعال ساز وجود دارد: این توابع در واقع یک قسمت در شبکه های عصبی هستند که ورودی آن ها یک عدد(کوچک یا بزرگ در بازه دلخواه) است و خروجی آن ها معمولا یک عدد بین ۰ و ۱، یا -۱ و +۱ است. در واقع این توابع یک عدد ورودی را به یک بازه مشخص(مثلا ۱- تا ۱+) تبدیل می کنند. به توابع فعال ساز، توابع انتقال(Transfer Function) نیز می گویند.

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

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

همان طور که در تصویر مشاهده میکنید، یک تابع داریم که عددی در بازه منفی بینهایت تا مثبت بینهایت(محور Xها) را دریافت کرده و در خروجی مقدار ۰ یا ۱ را(محوره Yها) برمیگرداند. برای مثال اگر عدد ۱- به این تابع بدهیم(چون کوچکتر از صفر است) خروجی این تابع عدد ۰ خواهد بود و همچنین اگر عدد ۲۴۵(که بزرگتر از صفر است) را به تابع بدهیم، این تابع عدد ۱ را برمیگرداند. تصویر بالا همان تابع پرسپترون بود که به تابع پله(Step Function) نیز معروف است.

ولی همیشه در یک شبکه عصبی از تابع پرسپترون استفاده نمی شود. مخصوصا شبکه های عصبی که بخواهند ویژگی های پیچیده تری را یاد بگیرند. مثالی دیگر از توابع فعال سازی، تابع Sigmoid است. به تصویر زیر نگاه کنید:

همان طور که میبینید این تابع هم یک ورودی منفی بینهایت تا مثبت بی نهایت را به یک بازه ۰ تا ۱ تبدیل می کند. اما همان طور که مشاهده میکنید دیگر این کار به صورت خطی انجام نمی شود. برای مثال اگر عدد ۰ به تابع Sigmoid داده شود، خروجی برابر ۰.۵ خواهد بود. به این توابع مانند Sigmoid توابع فعال ساز غیر خطی(Non-Linear) گفته می شود. در واقع به جای قرار دادن پرسپترون در خروجی شبکه عصبی میتوانیم از Sigmoid استفاده کنیم. این توابع می توانند ترکیب ها و ویژگی های پیچیده تری را در مجموع از شبکه های عصبی کسب کنند.

به مثال اتوبوس و پراید در دروس گذشته برگردیم. اگر از تابع Sigmoid استفاده کنیم، دیگر نمیتوانیم انتظار داشته باشیم که خروجی مقدار دقیق ۰(برای پراید) یا ۱(برای اتوبوس) را بدهد. خروجی یک بازه بین ۰ تا ۱ است. مثلا میتوانیم بگوییم اگر خروجی بیشتر از ۰.۵ بود، آن گاه نمونه مورد نظر ما اتوبوس است و در غیر این صورت نمونه مورد نظر، یک پراید را نمایش می دهد.

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

منابع این بحث و اطلاعات بیشتر

» وب سایت Medium

» وب سایت IPFS

» وب سایت AnalytictsHevia

» SlideShare

» وب سایت KdNuggets

» وب سایت Coursera

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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *