פונקציית אקטיבציה

306x306 פיקסלים
לוגיסטית]]פונקציית אקטיבציה של נוירון ברשת עצבית מלאכותית היא פונקציה מתמטית המחשבת את הפלט של הנוירון ביחס לקלטים שהוא מקבל ולמשקלם. פונקציות האקטיבציה הן מרכיב מרכזי ברשתות נוירונים, שהן צורת המימוש הנפוצה של מערכות בינה מלאכותית מודרנית.<ref name=":1"></ref> לפונקציה הנבחרת יש השפעה על ביצועי הרשת, ועל ההתאמה שלה לביצוע המשימה שעליה אומנה.<ref name=":1" /><ref></ref><ref></ref>

מטרת הפונקציה היא לקבוע את עוצמת הפלט של הנוירון, ביחס לקלט שקיבל. ההשראה לאופן הפעולה של פונקציות אקטיבציה התקבלה מאופן הפעולה של תאי העצב במוח, אשר הפלט שלהם נקבע בהתאם לפוטנציאל הפעולה.<ref></ref><ref></ref>

נוירון ברשת נוירונים מלאכותית פועל כפרספטרון (אלגוריתם בסיסי בתחום למידת המכונה), כך שהוא מקבל וקטור קלט, מכפיל אותו בווקטור משקולות שנלמד בזמן האימון. לאחר מכן נקבע פלט הנוירון באמצעות העברת תוצאת המכפלה בפונקציית האקטיבציה.<ref></ref><ref></ref>

מטרה נוספת של פונקציית האקטיבציה היא להכניס אי-ליניאריות לרשת, ולכן הפונקציות הנמצאות בשימוש רווח הן פונקציות לא ליניאריות, או פונקציות שיש בהן אלמנט כלשהו של אי ליניאריות.<ref></ref>

פונקציית אקטיבציה לא ליניארית מאפשרת לפתור בעיות לא טריוויאליות באמצעות חיבור של מספר קטן של צמתים.<ref></ref> פונקציות האקטיבציה המודרניות כוללות את ReLU ששימשה במודל הראייה הממוחשבת AlexNet מ-2012,<ref></ref><ref></ref> את GELU ששימשה במודל BERT שאומן על ידי Google ב-2018,<ref></ref> ואת הפונקציה הלוגיסטית סיגמואיד ששימשה במודל זיהוי דיבור משנת 2012 שפותח על ידי הינטון.<ref></ref>

== השוואה בין פונקציות אקטיבציה ==
מלבד הביצועים האמפיריים שלהן, לפונקציות האקטיבציה יש גם תכונות מתמטיות שונות. לכל תכונה יש השפעה כלשהי על אימון הרשת, וישנן תכונות נוספות שעשויות להשפיע עליה.<ref name=":0"></ref>

=== ליניאריות ואי ליניאריות ===
על פי משפט הקירוב האוניברסלי , רשת עצבית דו-שכבתית שמשתמשת בפונקציית אקטיבציה לא ליניארית, יכולה לקרב כל פונקציה.<ref></ref> כאשר הנוירונים ברשת משתמשים בפונקציית אקטיבציה ליניארית, הרשת כולה שווה ערך לרשת חד-שכבתית בשל תכונות הליניאריות.<ref name=":0" /><ref></ref>

=== טווח ===
כאשר פונקציית האקטיבציה חסומה, שיטות אימון מבוססות גרדיאנט נוטות להיות יציבות יותר, מכיוון ששינוי בקלט משפיע על המשקולות באופן מוגבל בכל צעד. כאשר הפונקציה לא חסומה, האימון בדרך כלל יעיל יותר מכיוון שקלטים מסוים עשויים להשפיע בצורה חזקה יותר על השינוי במשקולות. במקרה כזה, נדרש בדרך כלל שימוש ב-learning rate קטן יותר.<ref name=":0" />

פונקציות שהשיפוע שלהן באינסוף לא שואף לאפס, כלומר לא מתקיים <math>\lim_{|v|\to \infty} |\nabla f(v)| = 0</math>, מתאימות להתמודדות עם בעיית הגרדיאנט הנעלם דוגמה לפונקציה כזו היא ReLU.<ref></ref>

=== גזירות ברציפות ===
בשימוש בשיטות אופטימיזציה מבוססות גרדיאנט רצוי שהפונקציה תהיה גזירה ברציפות. פונקציית המדרגה (פונקציה שנותנת 0 לכל ערך שקטן מ-0, ו-1 לכל ערך שגדול מ-0)<ref></ref> אינה גזירה ב-0, והנגזרת שלה היא 0 לכל ערך אחר, ולכן שיטות מבוססות גרדיאנט לא יכולות לבצע את השיפורים שלהם בהתבסס עליה.<ref></ref>

== פירוט מתמטי ==
ניתן לחלק את פונקציות האקטיבציה הנפוצות ביותר לשלוש קטגוריות: פונקציות ridge, פונקציות רדיאליות ופונקציות אגרגציה.

=== פונקציות ridge ===
השוואה בין פונקציית ReLU לבין פונקציית GELU.
פונקציות ridge הן פונקציות מרובות משתנים הפועלות על צירוף ליניארי של משתני הקלט.<ref></ref> דוגמאות לפונקציות נפוצות הן:
* פונקציה ליניארית: <math>\phi (\mathbf v)=a +\mathbf v'\mathbf b</math> ,
* פונקציית ReLU: <math>\phi (\mathbf v)=\max(0,a +\mathbf v'\mathbf b)</math> ,
* פונקציית מדרגה: <math>\phi (\mathbf v)=1_{a +\mathbf v'\mathbf b>0}</math> ,
* פונקציה לוגיסטית: <math>\phi(\mathbf v) = (1+\exp(-a-\mathbf v'\mathbf b))^{-1}</math> .

ברשתות עצביות ביולוגיות, פונקציית האקטיבציה היא בדרך כלל הפשטה המייצגת את הדחף עצבי בנוירון. בצורתה הפשוטה ביותר, הפונקציה היא בינארית, כלומר הנוירון יכול לבחור האם להוציא פלט או לא. עוצמת הפלט של נוירונים חסומה, ופונקציות שמחקות את ההתנהגות הזו בצורה מהימנה הן פונקציות שהטווח שלהן הוא מרחב סופי, כמו סיגמואיד.<ref></ref><ref></ref>

=== פונקציות רדיאליות ===
פונקציות רדיאליות נמצאות ברשתות מסוג RBF , שיעילות בקירוב אוניברסלי של פונקציות. פונקציה בשימוש נפוץ היא פונקציית גאוס, <math>\,\phi(\mathbf v)=\exp\left(-\frac{\|\mathbf v - \mathbf c\|^2}{2\sigma^2}\right)</math>, כאשר <math>\mathbf c</math> הוא הווקטור המייצג את מרכז הפונקציה ו-<math>a</math> ו-<math>\sigma</math> הם פרמטרים המשפיעים על רדיוס הגאוסיאן.<ref></ref>

=== פונקציות אגרגציה ===
פונקציות אגרגציה נמצאות בשימוש נרחב בשכבת האגרגציה (pooling) ברשתות קונבולוציה, ובשכבת הפלט של רשתות סיווג בעלות מספר מחלקות. הפונקציות האלה מבצעות אגרגציה על הקלט, למשל בחירת הממוצע, המינימום או המקסימום.<ref></ref><ref></ref> בסיווג מרובה מחלקות, נעשה שימוש בפונקציית סופטמקס שיוצרת התפלגות מהקלט שהתקבל, כלומר מייצרת וקטור שסכומו 1.<ref></ref><ref></ref>

== פונקציות אקטיבציה נפוצות ==
{| class="wikitable sortable"
!שם
!ויזואליזציה
!משוואה, <math>g\left(x\right)</math>
!נגזרות, <math>g'(x)</math>
!טווח
!סדר גזירות
|-
|פונקציית הזהות
|קובץ:Activation_identity.svg
|<math>x</math>
|<math>1</math>
|<math>(-\infty,\infty)</math>
|<math>C^\infty</math>
|-
|פונקציית מדרגה
|קובץ:Activation_binary_step.svg
|<math>\begin{cases}
	0 & \text{if } x < 0\\
	1 & \text{if } x \ge 0
 \end{cases}</math>
|<math>0</math>
|<math>\{0,1\}</math>
|<math>C^{-1}</math>
|-
|טנגנס היפרבולי
|קובץ:Activation_tanh.svg
|<math>\tanh(x) \doteq \frac{e^x - e^{-x}}{e^x + e^{-x}}</math>
|<math>1 - g(x)^2</math>
|<math>(-1,1)</math>
|<math>C^\infty</math>
|-
|ReLU <ref></ref>
|קובץ:Activation_rectified_linear.svg
|<math>\begin{align}
(x)^+ \doteq {} &\begin{cases}
 0 & \text{if } x \le 0\\
 x & \text{if } x > 0
 \end{cases} \\
 = {} &\max(0,x) = x \textbf{1}_{x>0}
 \end{align}</math>
|<math>\begin{cases}
	0 & \text{if } x < 0\\
	1 & \text{if } x > 0
 \end{cases}</math>
|<math>[0,\infty)</math>
|<math>C^0</math>
|-
|GELU (Gaussian Error Linear Unit)<ref name="ReferenceA2"></ref>
|Visualization of the Gaussian Error Linear Unit (GELU)
|<math>\begin{align}
 &\frac{1}{2} x \left(1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right) \\
 {}={} &x\Phi(x)
 \end{align}</math>
|<math>\Phi(x) + x\phi(x)</math>
|<math>(-0.17\ldots, \infty)</math>
|<math>C^\infty</math>
|-
|Leaky ReLU<ref></ref>
|קובץ:Activation_prelu.svg
|<math>\begin{cases}
	0.01x & \text{if } x \le 0\\
	x & \text{if } x > 0
 \end{cases}</math>
|<math>\begin{cases}
	0.01 & \text{if } x < 0\\
	1 & \text{if } x > 0
 \end{cases}</math>
|<math>(-\infty,\infty)</math>
|<math>C^0</math>
|-
|גאוסיאן
|קובץ:Activation_gaussian.svg
|<math>e^{-x^2}</math>
|<math>-2xe^{-x^2}</math>
|<math>(0,1]</math>
|<math>C^\infty</math>
|-
|סופטמקס 
|
|<math>\frac{e^{x_i}}{\sum_{j=1}^J e^{x_j}}</math>לכל <math>i=1,...,j</math>
|<math>g_i\left(\vec{x}\right)\left(\delta_{ij} - g_j\left(\vec{x}\right)\right)</math>
|<math>(0,1)</math>
|<math>C^\infty</math>
|-
|Maxout<ref></ref>
|
|<math>\max_i x_i</math>
|<math>\begin{cases}
 1 & \text{if } j = \underset{i}{\operatorname{argmax}} \, x_i \\
	0 & \text{if } j \ne \underset{i}{\operatorname{argmax}} \, x_i
 \end{cases}</math>
|<math>(-\infty,\infty)</math>
|<math>C^0</math>
|}

== ראו גם ==
* פונקציה לוגיסטית

== הערות שוליים ==

קטגוריה:למידה עמוקה
קטגוריה:למידת מכונה
קטגוריה:פונקציות מתמטיות