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

اگر این تصویر یا روابطش را خوب متوجه نشدید، پست نورون مصنوعی را تا پایان بخش «مدل ریاضی نورون» مطالعه کنید و سپس آموزش را ادامه دهید.
از آنجایی که توابع فعالساز خروجی نورون را به مقادیر دیگری تغییر داده یا به اصطلاح نگاشت میکند، به آن تابع انتقال یا Transfer Function هم گفته میشود. چرا توابع فعالساز باید در شبکه عصبی وجود داشته باشند؟ در بخش بعدی به این سوال پاسخ داده شده است.
چرا به تابع فعالساز در شبکه عصبی نیاز داریم؟
به دو دلیل تابع فعالساز در شبکه عصبی نیاز است که در ادامه با هم بررسی میکنیم.
دلیل اول: تقلید از رفتار نورون طبیعی
ما دوست داریم نورون مصنوعی رفتاری شبیه به نورون طبیعی داشته باشد. ساختار نورون طبیعی به گونهای است که اگر ولتاژ نورون از یک ترشولد (55- میلیولت) عبور کند، نورون فعال یا به اصطلاح fire میشود. تنها در صورت فعال شدن، نورون خروجی خواهد داشت. در بخشهای بعدی خواهیم دید که تابع فعالساز در شبکه عصبی مصنوعی، میتواند این رفتار را به نورون اضافه کند.
دلیل دوم: اضافه کردن خاصیت غیرخطی به نورون
میتوان با ریاضیات اثبات کرد که اگر چندین نورون بدون تابع فعالساز داشته باشیم، همه این نورونها معادل با یک نورون هستند! مثلا در مساله دستهبندی، نهایتا این نورونها میتوانند با یک خط دادهها را دستهبندی کنند. بنابراین مدل ما توانایی دستهبندی دادههای غیرخطی را نخواهد داشت. این در حالی است که اغلب مسائل در دنیای واقعی غیرخطی هستند. توابع فعالساز در شبکه عصبی این خاصیت غیرخطی را به شبکه اضافه میکنند.
انواع توابع فعالساز در شبکه عصبی
در این بخش چند مورد از شناختهشدهترین توابع فعالساز را با هم مرور میکنیم.
تابع فعالساز خطی یا همانی در شبکه عصبی

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

تابع Sigmoid یک منحنی به شکل S است. دلیل اصلی استفاده از این تابع این است که بازهای محدود به صفر و یک دارد و خصوصا در مدلهایی که خروجی آنها احتمال است، مورد استفاده قرار میگیرد. مقدار احتمال بین صقر و یک است، بنابراینSigmoid انتخاب خوبی است. Sigmoid تابعی مشتقپذیر و یکنوا صعودی است.
تابع فعالساز تانژانت (Tanh, hyperbolic tangent)

تابع tanh، شبیه به Sigmoid و بهتر از آن است. بازه خروجی تابع tanh، بین 1- و 1 بوده و مانند Sigmoid، منحنی آن به شکل S است.
مزیت tanh به Sigmoid در این است که در tanh، مقادیر منفیِ ورودی، به مقادیری منفی نگاشت میشوند و مقدار ورودی صفر، نزدیک به صفر نگاشت میشود. این در حالی است که در sigmoid، مقادیر منفی به مقادیری نزدیک به صفر نگاشته میشوند. تابع tanh نیز مشتقپذیر و یکنوا صعودی است.
تابع فعالساز ReLU در شبکه عصبی (Rectified Linear Unit)
در حال حاضر، ReLU تقریبا در تمامی شبکههای عصبی جدید و یادگیری عمیق استفاده میشود.

زمانی که مقدار ورودی منفی باشد، ReLu خروجی را صفر میکند. اگر مقدار ورودی مثبت یا صفر باشد، ReLu همان مقدار ورودی را برمیگرداند. در واقع ReLu یک تابع یکسوساز است و دلیل نامگذاری آن نیز همین است. بازه خروجی این تابع بین صفر تا بینهایت است. تابع ReLu و مشتق آن تابعی یکنوا صعودی است.
اما ReLu یک مشکل بزرگ دارد و آن مشکل این است که این تابع بلافاصله ورودیهای منفی را صفر میکند و این امر موجب میشود که مدل نتواند به خوبی روی دادهها فیت شود و آموزش ببیند.
تابع فعالساز Leaky ReLU
این تابع برای حل مشکل ReLU ارائه شده است.

مقدار a معمولا 0.01 در نظر گرفته میشود. اگر a=0.01 نباشد، به آن Randomized ReLU گفته میشود. بازهی خروجی این تابع از منفی بینهایت تا بینهایت است و یکنوا صعودی است.
مطالب زیر را حتما مطالعه کنید
LLM Research یا LLM Engineering؟ راهنمای یادگیری مدلهای زبانی بزرگ
یادگیری انتقالی
شبکه VGG
مهندسی پرامپت
مدل nanoGPT
شگفتانگیزترین ایده هوش مصنوعی از نظر Andrej Karpathy
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
توضیح جامع و کاملی بود تشکر
ممنون از همراهی شما🌹