در این درس از دورهی شبکه های عصبی به توابعِ فعالساز (activation functions) میرسیم. در اینجا قصد نداریم تمامیِ توابعِ فعالساز را با هم به صورت دقیق مرور کنیم. فقط میخواهیم چند نمونهی کاربردی از این توابع را در شبکههای عصبی بررسی کنیم.
یک تعریف ساده و البته کمی نادقیق درباره توابع فعالساز وجود دارد: این توابع در واقع یک قسمت در شبکههای عصبی هستند که ورودیِ آنها یک عدد (کوچک یا بزرگ در بازهی دلخواه) است و خروجیِ آنها معمولاً یک عدد بین ۰ و ۱، یا ۱- و ۱+ است. در واقع این توابع یک عددِ ورودی را به یک بازه مشخص (مثلا ۱- تا ۱+) تبدیل میکنند. به توابعِ فعالساز، توابع انتقال (transfer function) نیز میگویند.
واقعاً توابعِ فعالساز به چه کاری میآیند؟ در واقع توابعِ فعالساز تصمیم میگیرند که آیا یک نرون خاص در شبکههای عصبی فعال شود یا خیر. به این درس نگاهی بیندازید. همانطور که یادتان هست یک خطِ جدا کنندهی پراید و اتوبوس کشیدیم. این جداکنندگی که توضیحاتِ دقیقتری از آن در این درس آورده شده بود، در واقع یک تابعِ فعالساز است. این تابعِ فعالساز به خروجیِ شبکهی عصبی (یا هر لایه از آن) میگوید که به کدام قسمت (مثلا پراید یا اتوبوس) تعلق دارد.
پرسپترون که در دروس گذشته در مورد آن صحبت کردیم در واقع یک تابعِ فعالساز خطی است. شکل زیر را نگاهی بیندازید:
همانطور که در تصویر مشاهده میکنید، یک تابع داریم که عددی در بازهی منفی بینهایت تا مثبت بینهایت (محور Xها) را دریافت کرده و در خروجی مقدارِ ۰ یا ۱ را (محور Yها) برمیگرداند. برای مثال اگر عددِ ۱- به این تابع بدهیم (چون کوچکتر از صفر است) خروجیِ این تابع عددِ ۰ خواهد بود و همچنین اگر عدد ۲۴۵ (که بزرگتر از صفر است) را به تابع بدهیم، این تابع عددِ ۱ را برمیگرداند. تصویرِ بالا همان تابع پرسپترون بود که به تابعِ پله (step function) نیز معروف است.
ولی همیشه در یک شبکهی عصبی از تابعِ پرسپترون استفاده نمیشود. مخصوصاً شبکههای عصبی که بخواهند ویژگیهای پیچیدهتری را یاد بگیرند. مثالی دیگر از توابعِ فعالسازی، تابع sigmoid است. به تصویر زیر نگاه کنید:
همانطور که میبینید این تابع هم یک ورودیِ منفیِ بینهایت تا مثبت بینهایت را به یک بازهی ۰ تا ۱ تبدیل میکند. اما همانطور که مشاهده میکنید دیگر این کار به صورت خطی انجام نمیشود. برای مثال اگر عدد ۰ به تابع sigmoid داده شود، خروجی برابر ۰.۵ خواهد بود. به این توابعِ مانند sigmoid توابعِ فعالسازِ غیرِ خطی (non-linear) گفته میشود. در واقع به جای قرار دادن پرسپترون در خروجی شبکهی عصبی میتوانیم از sigmoid استفاده کنیم. این توابع میتوانند ترکیبها و ویژگیهای پیچیدهتری را در مجموع از شبکههای عصبی کسب کنند.
به مثال اتوبوس و پراید در دروس گذشته برگردیم. اگر از تابع sigmoid استفاده کنیم، دیگر نمیتوانیم انتظار داشته باشیم که خروجی مقدار دقیقِ ۰ (برای پراید) یا ۱ (برای اتوبوس) را بدهد. خروجی یک بازه بین ۰ تا ۱ است. مثلا میتوانیم بگوییم اگر خروجی بیشتر از ۰.۵ بود، آنگاه نمونهی مورد نظرِ ما اتوبوس است و در غیر این صورت نمونهی مورد نظر، یک پراید را نمایش میدهد.
در بسیاری از شبکههای عصبی توصیه میشود که از توابعی مانند sigmoid استفاده کنیم. زیرا خاصیت غیر خطی بودن آنها، در ترکیب با یکدیگر قادر به شناساییِ الگوهایی به مراتب پیچیدهتر منجر میشود.
- ۱ » شبکه عصبی (Neural Network) چیست؟
- ۲ » تعریف پرسپترون (Perceptron) در شبکه های عصبی
- ۳ » پرسپترون در شبکه عصبی چگونه یاد میگیرد؟
- ۴ » پرسپترون چند لایه (Multi Layer Perceptron) چیست؟
- ۵ » درباره توابع فعال سازی پرسپترون و Sigmoid
- ۶ » تابع ضرر (Loss Function) در شبکه عصبی چیست و چه کاربردی دارد؟
- ۷ » نحوه یادگیری پس انتشار خطا (Back Propagation) در شبکه های عصبی
- ۸ » کاهش گرادیان (Gradient Descent) در شبکه های عصبی
- ۹ » حل یک مثال عددی یادگیری ماشین با شبکههای عصبی
سلام . بسیار عالی بود.خداقوت
لطفا مطالب آموزشی بیشتری نشر فرمایید
باتشکر
حرف نداره
همه ی اموزشاتون فوق العادست …. هر چقد بگم کم گفتم
عالی بود
ممنون که دانشتون با بیان سلیس و رایگان در اختیارمون میزارین
سلام خیلی بصورت واضح بود.. لطفا توابع بیشتری و توضیح بدید
بسیار عالی
علم به زبان ساده
با سلام و تشکر و خسته نباشید . از مطالب سایتتون شدیدا استفاده کردم و لذت بردم . در مورد این مطلب . کاش بیشتر اشاره میکردین که چطوری استفاده از تابع سیگموئید میتونه الگو های پیچیده تری رو کشف کنه . یعنی نمیتونم روند این تفاوت بین سیگموئید و یه تابع ساده مثل y = x رو در یه شبکه عصبی درک کنم . (تفاوت در یادگیری موارد پیچیده تر)
مرسی که به بهترین و ساده ترین شکل ممکن مطالبتون رو ارائه میدین
سلام . خدا قوت
خیلی عالی مختصر و مفید بود
ممنون که اطلاعات ارزشمندتون رو با بیانی ساده و قابل فهم بیان و ب اشتراک میگذارید
سپاس فراواااان
خیلی ممنونم که اینقدر واضح و شفاف و با مثالهای مملوس تو ضیح دادید . من مدتی است که با یک نرم افزار که با شبکه عصبی مصرف گاز کل کشور را پیش بینی می کند به عنوان یک کار بر کار میکنم ولی گزارشهای مربوط به توضیح شبکه عصبی انقدر پیچیده بود که چیز زیادی از آن متوجه نمی شدم