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

مدرس: مسعود کاویانی

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

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

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

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

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

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

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

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

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

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

» وب سایت Medium » وب سایت IPFS » وب سایت AnalytictsHevia » SlideShare » وب سایت KdNuggets » وب سایت Coursera

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

10 دیدگاه دربارهٔ «درباره توابع فعال سازی پرسپترون و Sigmoid»

  1. با سلام و تشکر و خسته نباشید . از مطالب سایتتون شدیدا استفاده کردم و لذت بردم . در مورد این مطلب . کاش بیشتر اشاره میکردین که چطوری استفاده از تابع سیگموئید میتونه الگو های پیچیده تری رو کشف کنه . یعنی نمیتونم روند این تفاوت بین سیگموئید و یه تابع ساده مثل y = x رو در یه شبکه عصبی درک کنم . (تفاوت در یادگیری موارد پیچیده تر)

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

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

دیدگاهتان را بنویسید

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