تابع فعالسازی: ReLU، سیگموید، tanh
جواب کوتاه
تابع فعالسازی آخرین قدم هر نورونه: جمع وزندار ورودیها رو میگیره و تصمیم میگیره نورون چی بیرون بده. مهمترین چیزش اینه که غیرخطی باشه؛ چون اگه نباشه، هر چند لایه نورون هم روی هم بذاریم، کل شبکه فقط یه خط صافه، مثل اینکه ۲ برابر و بعد ۳ برابر کردن، همون ۶ برابر کردنه. با تابع غیرخطی، شبکه میتونه پیچ و خم بسازه. سه تا معروفش: سیگموید که هر عددی رو به بین صفر و یک میبره، tanh که به بین منفی یک و یک، و ReLU که منفیها رو صفر میکنه و مثبتها رو همونطور رد میکنه. امروز ReLU از همه رایجتره.
کلید، دیمر، شیر
سه تا وسیلهی خونه رو ببینید. هر کدوم یه چیزی میگیرن و یه جور دیگه رد میکنن.
کلید برق یا روشنه یا خاموش؛ حالت وسط نداره. دیمر نرم کم و زیاد میکنه. شیر یهطرفه آب رو فقط یه طرف رد میکنه؛ از اون طرف هیچی.
توی درس نورون مصنوعی دیدیم آخرین قدم نورون، بعد از جمع کردن، یه تابعه که جواب آخر رو میده. به این تابع میگن تابع فعالسازی، و این سه تا وسیله دقیقا سه تا نوع معروفشن.
چرا لازمه؟
شاید بپرسید چرا اصلا؟ نورون جمعش رو کرده، همون رو بده بیرون. مشکل اینجاست:
یه دستگاه که هر عددی رو ۲ برابر میکنه، بعدش یکی که ۳ برابر. جمعا چی شد؟ ۶ برابر. یعنی دو تا دستگاه پشت سر هم، فقط یه دستگاه بودن.
جمع وزندار هم همینطوره. اگه بعدش هیچ تابع غیرخطیای نباشه، هر چند لایه نورون هم روی هم بذاریم، کل شبکه با یه لایه فرقی نداره، و فقط میتونه یه خط صاف بکشه. لایهها هدر رفتن.
ساختن پیچ و خم
حالا ببینید یه تابع غیرخطی ساده چی کار میکنه. دو تا نورون با ReLU، یکی رو به راست و یکی رو به چپ، رو جمع میکنیم:
جمعشون یه V شد؛ یه شکستگی که هیچ خط صافی نمیتونست بسازه. با چند تا نورون بیشتر، چند تا شکستگی بیشتر، و با شکستگیهای کافی هر منحنیای رو میشه تقریبا ساخت.
این فقط یه حدس نیست؛ ثابت شده که یه شبکهی دولایه با تابع فعالسازی غیرخطی، میتونه هر تابعی رو تا هر دقتی تقریب بزنه. بهش میگن قضیهی تقریب جهانی.
سه تا معروف
- سیگموید: هر عددی رو میبره به بین صفر و یک. همون منحنی رگرسیون لجستیک؛ برای همین برای جوابهای «آره یا نه» و احتمال خوبه.
- tanh: شکلش مثل سیگمویده، ولی از منفی یک تا یک؛ یعنی وسطش روی صفره.
- ReLU: سادهترینشون. اگه عدد منفی باشه، صفر میده؛ اگه مثبت باشه، خودش رو. درست مثل شیر یهطرفه.
کدوم؟
امروز ReLU از همه رایجتره، مخصوصا وسط شبکهها؛ توی بینایی ماشین و تشخیص گفتار خیلی استفاده میشه. یه دلیلش اینه که سیگموید و tanh دو سرشون صاف میشه. اونجا تغییر ورودی تقریبا هیچ اثری روی خروجی نداره، و توی شبکههای عمیق این باعث میشه یادگیری کند بشه یا بایسته. ReLU کمتر این مشکل رو داره. اسم این مشکل محو گرادیان هست.
سیگموید هنوز هم برای لایهی آخر کاربرد داره، وقتی جواب یه احتمال بین صفر و یکه. برای چند دسته هم معمولا سافتمکس. یه نسخهی نرمتر از ReLU هم توی مدلهای زبانی جدیدتر به کار رفته.
حالا همهی تیکهها رو داریم: نورون، وزن، بایاس و تابع فعالسازی. درس بعد اینها رو لایه به لایه پشت سر هم میچینیم: شبکهی عصبی چندلایه.
جمعبندی. آنچه از این درس با خودتان میبرید.
- آخرین قدم نورون، بعد از جمع.
- باید غیرخطی باشه.
- خطی روی خطی، هنوز خطیه.
- سیگموید: صفر تا یک؛ tanh: منفی یک تا یک.
- ReLU: منفیها صفر؛ از همه رایجتر.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.