Aktiveringsfunktioner

A-niveau
Kort

Forløbet kræver kendskab til:

  • Differentialregning herunder differentiation af sammensatte funktioner og produktreglen.

Tidsforbrug: Ca. 1-2 x 90 minutter alt efter hvor mange aktiveringsfunktioner, I ønsker at arbejde med. I kan også arbejde i grupper og lade hver gruppe arbejde med hver sin aktiveringsfunktion.

Formål

I opbygningen af kunstige neurale netværk er aktiveringsfunktioner helt centrale. Hvis ikke man bruger aktiveringsfunktioner i et kunstigt neuralt netværk, vil man faktisk bare bygge en stor lineær funktion af inputværdierne. Og lineære funktioner kan man ikke prædiktere ret meget med!

Når man skal træne en perceptron, et simpelt neuralt netværk eller et helt generelt neuralt netværk, skal man kunne differentiere de aktiveringsfunktioner, som indgår. I dette forløb vil vi arbejde med nogle af de mange forskellige aktiveringsfunktioner, som anvendes i den virkelige verden. Vi skal se på grafer og værdimængde – og så skal vi mest af alt differentiere dem!

Introduktion

Når man træner en AI model, sker det som regel ved, at man forsøger at minimere de fejl, som modellen laver, når den anvendes på data, hvor man allerede kender svaret.

For at blive lidt mere konkret så minimerer man en såkaldt tabsfunktion \(E\) (\(E\) for error function), som har til formål at "måle", hvor god en AI model1 er. En tabsfunktion \(E\) har altid den egenskab, at \(E \geq 0\), og at en lille værdi af \(E\) svarer til en god model (der er et lille tab), mens en stor værdi af \(E\) svarer til en mindre god model. Derfor vælger man den model, som giver den mindste værdi af tabsfunktionen.

1 Med AI model tænker vi her på en perceptron, et simplet neuralt netværk, et generelt neuralt netværk eller en anden form for funktion, som kan bruges til at prædiktere et eller andet.

AI modellen trænes altså ved at finde minimum for tabsfunktionen. Det gøres ofte ved hjælp af gradientnedstigning – men den konkrete metode er ikke så vigtig lige nu. Det vigtige er her at forstå, at hvis man skal finde minimum for en funktion, så har man brug for at kunne differentiere.

Tabsfunktionen er en sammensat funktion. Den er sammensat af lineære funktioner, som vi kender rigtig godt fra tidligere, andengradspolynomier, og en særlig klasse af funktioner, som kaldes for aktiveringsfunktioner. Og det giver nok mening, at hvis man skal differentiere selve tabsfunktionen, så må man også kunne differentiere den anvendte aktiveringsfunktion \(f\).

Desuden viser det sig vigtigt, at det ikke må være alt for beregningsmæssigt tungt at beregne funktionsværdierne \(f(x)\) og \(f'(x)\). Det skal simpelthen gøres så mange gange – derfor dur det ikke, at det tager for lang tid. Det er derfor ønskværdigt, hvis en aktiveringsfunktions afledede funktion \(f'(x)\) kan beregnes forholdvis simpelt ved hjælp af \(f(x)\). Det betyder nemlig, at hvis vi allerede har udregnet \(f(x)\), så kræver det ikke ret meget også at udregne \(f'(x)\).

I det nedenstående vil vi nu behandle en række af de mest anvendte aktiveringsfunktioner. Vi finder deres afledede funktioner, og vi vil se, hvordan de afledede funktioner alle kan udtrykkes ved hjælp af den oprindelig aktiveringsfunktion.

Sigmoid

Sigmoid-funktionen har forskrift

\[ f(x)=\frac{1}{1+e^{-x}}, \tag{1}\]

som også kan skrives

\[ f(x)=\frac{e^x}{1+e^x}, \] hvilket ses med at gange med \(e^x\) i både tæller og nævner i (1).

Grafen for Sigmoid-funktionen ses i figur 1.

Figur 1: Grafen for sigmoid-funktionen.

Det ser på figur 1 ud som om, at værdimængden for \(f\) er det åbne interval2 \((0,1)\). Det skrives

2 Bemærk, at det åbne interval \((0,1)\) også kan skrives \(]0,1[\).

\[ Vm(f)=(0,1). \]

Hvis du vil have et lidt bedre argument for det, kan du læse i boksen herunder.

Vi vil her argumentere for, at værdimængden for \(f\) er \((0,1)\). Vi vil starte med at se, at funktionsværdierne for \(f\) ligger mellem \(0\) og \(1\).

Da både tæller og nævner i (1) er positive, så må \(f(x)>0\). Og da

\[ 1<1+e^{-x} \] så må

\[ \frac{1}{1+e^{-x}}<\frac{1+e^{-x}}{1+e^{-x}}=1. \]

Det vil sige, at \[ 0 < f(x) < 1 \] og derfor må værdimængden for \(f\) være en del af intervallet \((0,1)\). Det kan skrives sådan her

\[ Vm(f) \subseteq (0,1). \] Vi vil nu vise, at vi kan komme lige så tæt på \(0\) og \(1\), som det skal være. Det vil med andre ord sige, at værdimængden for \(f\) "fylder" hele intervallet \((0,1)\) ud.

På figuren herunder ses grafen for \(e^{-x}\).

Da \(e^{-x}\) er en aftagende eksponentialfunktion vil

\[ e^{-x} \rightarrow 0 \quad \textrm{når} \quad x \rightarrow \infty \] og

\[ e^{-x} \rightarrow \infty \quad \textrm{når} \quad x \rightarrow -\infty. \]

Det betyder, at \[ \frac{1}{1+e^{-x}} \rightarrow 1 \quad \textrm{når} \quad x \rightarrow \infty \]

og

\[ \frac{1}{1+e^{-x}} \rightarrow 0 \quad \textrm{når} \quad x \rightarrow -\infty. \]

Alt i alt har vi altså argumenteret for, at værdimængden for \(f\) er \((0,1)\).

De følgende opgaver går ud på at vise, at

\[ f'(x)= \frac{e^{-x}}{(1+e^{-x})^2} \] og at \(f'(x)\) kan udtrykkes ved hjælp af \(f(x)\) på denne måde

\[ f'(x)= f(x)\cdot (1-f(x)). \]

Opgave 1: Differentiation af sigmoid-funktionen

Vi skal vise, at \[ f'(x)= \frac{e^{-x}}{(1+e^{-x})^2}. \] Vi skal starte med at se, at vi kan tænke på sigmoid-funktionen \[ f(x)=\frac{1}{1+e^{-x}}. \] som en "dobbelt sammensat" funktion. Sigmoid-funktionen består nemlig af en brøk på formen \(\frac{1}{x}\) og af eksponentialfunktionen \(e^{-x}\).

Derfor skal du:

  • Start med at opskrive differentialkvotienten for \[\frac{1}{x} \quad \textrm{og} \quad e^{-x}.\]

  • Brug ovenstående til at vise, at \[ f'(x)= \frac{e^{-x}}{(1+e^{-x})^2}. \]

Opgave 2: Omskrivning af \(f'(x)\) for sigmoid-funktionen

Vi skal nu vise, at \[ f'(x)= f(x)\cdot (1-f(x)). \] når \[ f(x)=\frac{1}{1+e^{-x}}. \]

  • Start med at udregne \[1-f(x).\] Hint! Sæt på fælles brøkstreg ved at skrive \(1\) som \(\frac{1+e^{-x}}{1+e^{-x}}\).

  • Vis nu at \[ f(x)\cdot (1-f(x)) = \frac{e^{-x}}{(1+e^{-x})^2}=f'(x). \] Husk, at man ganger to brøker med hinanden ved at gange tæller med tæller og nævner med nævner.

Softsign

Softsign-funktionen har forskrift

\[ f(x)=\frac{x}{1+|x|}. \] Husk på at \(|x|\) betyder den numeriske værdi af \(x\). Det vil sige

\[ |x| = \begin{cases} x & \textrm{hvis } x \geq 0 \\ -x & \textrm{hvis } x < 0 \\ \end{cases} \tag{2}\] Det betyder for eksempel at \(|7|=7\) og \(|-7|=7\). Grafen for \(|x|\) ses i figur 2.

Figur 2: Grafen for \(|x|\).

Grafen for softsign-funktionen \(f\) ses i figur 3.

Figur 3: Grafen for softsign-funktionen.

Da den numeriske værdi af \(x\) indgår i forskriften, kunne man få den tanke, at \(f\) måske hverken er kontinuert eller differentiabel i \(0\). For eksempel kan man i figur 2 se, at \(|x|\) ikke er differentiabel i \(0\).

Men bruger vi definitionen på \(|x|\), får vi

\[ f(x) = \begin{cases} \frac{x}{1+x} & \textrm{hvis } x \geq 0 \\ \\ \frac{x}{1-x} & \textrm{hvis } x < 0 \\ \end{cases} \tag{3}\]

Ud fra denne omskrivning kan man vise, at \(f\) rent faktisk er kontinuert i \(0\). Det kan du læse mere om i boksen herunder, hvis du har lyst.

figur 3 ser det ud som om, at værdimængden for \(f\) er \((-1,1)\) (også det argumenterer vi for i boksen):

\[ Vm(f) = (-1,1). \]

Det vil sige, at hvis vi skal bruge softsign-funktionen som aktiveringsfunktion, så skal targetværdierne være \(\pm 1\).

Lad os først argumentere for, at \(f\) er kontinuert i \(0\). For det første ser vi, at \(f(0)=0/(1+0)=0\) og \(f(x) \rightarrow 0\), når \(x\) nærmer sig \(0\) både fra højre og venstre. Det betyder, at \(f\) er kontinuert i \(0\).

Vi vil herefter indse, at funktionsværdierne for \(f\) ligger i \((-1,1)\). Ser vi på definitionen i (3), kan vi se, at vi skal inddele i to tilfælde, nemlig \(x \geq 0\) og \(x<0\):

  • Tilfælde 1

    Hvis \(x \geq 0\), så er \[ f(x)= \frac{x}{1+x}. \] Her er både tæller og nævner positiv, og derfor vil \(-1<0<f(x)\). Da \[ x < 1+x \] og \(1+x\) er positiv vil \[ f(x)=\frac{x}{1+x}<\frac{1+x}{1+x}=1. \] Altså er \(-1<f(x)<1\) i det tilfælde, hvor \(x \geq 0\).

  • Tilfælde 2

    Hvis \(x<0\), så er \[ f(x) = \frac{x}{1-x}. \] Her er tælleren negativ, mens nævneren er positiv. Det vil sige, at \(f(x)<0<1\). Nu er \[ x-1<x<0. \] Da \(x-1<0\), vil \(-(x-1)>0\), og vi kan derfor dividere ovenstående igennem med \(-(x-1)\) uden at ændre på ulighedstegnet: \[ \frac{x-1}{-(x-1)}<\frac{x}{-(x-1)}. \] Da venstre side giver \(-1\) og \(-(x-1)=1-x\) får vi \[ -1 < \frac{x}{1-x}=f(x). \] Alt i alt har vi altså også i dette tilfælde vist, at \[ -1 < f(x) < 1. \]

Det vil sige, at \(Vm(f) \subseteq (-1,1)\).

Vi vil nu vise, at værdimængden for \(f\) "fylder" hele intervallet \((-1,1)\) ud. Vi ser, at for store positive værdier af \(x\) vil \[ f(x)= \frac{x}{1+x} \approx \frac{x}{x}=1 \] og for store negative værdier af \(x\) vil \[ f(x)= \frac{x}{1-x} \approx \frac{x}{-x}=-1 \] Det betyder, at \[ f(x) \rightarrow 1 \quad \textrm{når} \quad x \rightarrow \infty \] og

\[ f(x) \rightarrow -1 \quad \textrm{når} \quad x \rightarrow - \infty \] hvilket stemmer fint overens med figur 3.

Vi har hermed vist, at \(Vm(f) = (-1,1).\)

I nedenstående opgaver skal vi vise, at

\[ f'(x)=\frac{1}{\left ( 1+ |x| \right )^2} \tag{4}\]

og at den afledte kan findes ved hjælp af funktionsværdien selv på denne måde

\[ f'(x)=(1-|f(x)|)^2. \tag{5}\]

Opgave 3: Differentiation af softsign-funktionen

For at vise at \[ f'(x)=\frac{1}{\left ( 1+ |x| \right )^2} \] vil vi starte med at bruge en brøkregneregel til at omskrive funktionsudtrykket i (3):

\[ f(x) = \begin{cases} x \cdot \frac{1}{1+x} & \textrm{hvis } x \geq 0 \\ \\ x \cdot \frac{1}{1-x} & \textrm{hvis } x < 0 \\ \end{cases} \tag{6}\]

  • Antag først, at \(x > 0\) og vis ved hjælp af produktreglen for differentiation, at \[ f'(x)=\frac{1}{(1+x)^2} = \frac{1}{(1+|x|)^2}. \tag{7}\] OBS! Du får på et tidspunkt brug for at sætte på fælles brøkstreg – fællesnævneren er her \((1+x)^2\).

  • Antag nu, at \(x<0\) og vis igen ved hjælp af produktreglen for differentiation at \[ f'(x)=\frac{1}{(1-x)^2} = \frac{1}{(1+|x|)^2}. \tag{8}\]

  • Antag slutteligt, at \(x=0\) og indsæt \(x=0\) i både (7) og (8) og se, at du får det samme. Da \(f'(0)\) giver det samme for de to grene af funktionen, siger man, at funktionen også er differentiabel i \(x=0\).

  • Tegn grafen for \(f'\). Synes du, at det ser ud som om, at \(f'\) er differentiabel?

Opgave 4: Omskrivning af \(f'(x)\) for softsign-funktionen

Vi vil nu vise, at den afledede af softsign-funktionen kan udtrykkes ved hjælp af softsign-funktionen selv: \[ f'(x)=(1-|f(x)|)^2. \]

  • Start med at overvise dig selv om, at \[ |f(x)|=f(|x|) \] ved at bruge definitionen i (2).

  • Vis at \[ (1-f(|x|))^2 = \frac{1}{(1+|x|)^2}=f'(x) \] Hint! Skriv \(1\) som \(\frac{1+|x|}{1+|x|}\).

Hyperbolsk tangens

Funktionen hyperbolsk tangens, \(\tanh\), har forskrift \[ \tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}} \]

Grafen for hyperbolsk tangens er vist i figur 4.

Figur 4: Grafen for hyperbolsk tangens.

Ifølge figuren ser det ud til, at \(Vm(f)=(-1,1)\). Det argumenterer vi nærmere for i boksen herunder.

Vi starter med at vise, at

\[ -1 < \tanh(x) < 1. \] Da \[ - e^x - e^{-x} <e^x - e^{-x} < e^x + e^{-x} \] og \(e^x + e^{-x}>0\) vil

\[ -1 = \frac{- e^x - e^{-x}}{e^x + e^{-x}} < \frac{e^x - e^{-x}}{e^x + e^{-x}} < \frac{e^x + e^{-x}}{e^x + e^{-x}} = 1. \] Altså er \(-1 < \tanh(x)<1\). Vi mangler kun at argumentere for, at værdimængden for \(\tanh\) "fylder" hele intervallet \((-1,1)\) ud.

På figuren herunder ses grafen for den voksende eksponentialfunktion \(e^x\) (blå) og for den aftagende eksponentialfunktion \(e^{-x}\) (grøn).

Her ses det, at for store positive værdier af \(x\) er \(e^{-x} \approx 0\). Det vil sige, at for store positive værdier af \(x\) er

\[ \tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} \approx \frac{e^x-0}{e^x+0}=\frac{e^x}{e^x}=1. \]

Omvendt gælder for store negative værdier af \(x\) er \(e^x \approx 0\). Det vil sige, at for store negative værdier af \(x\) er

\[ \tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} \approx \frac{0-e^{-x}}{0+e^{-x}}=\frac{-e^{-x}}{e^{-x}}=-1. \] Det betyder, at \[ \tanh(x) \rightarrow 1 \quad \textrm{når} \quad x \rightarrow \infty \] og

\[ \tanh(x) \rightarrow -1 \quad \textrm{når} \quad x \rightarrow - \infty \] hvilket stemmer fint overens med figur 4. Man siger for øvrigt, at linjerne med ligning \(y=-1\) og \(y=1\) er vandrette asymptoter.

Altså har vi vist, at \[ Vm(\tanh)=(-1,1). \]

I nedenstående opgave skal vi vise, at \(\tanh\) differentieret er

\[ \tanh'(x)=1-\left ( \tanh(x) \right )^2. \]

For at bevise det er det nemmeste at bruge kvotientreglen for differentiation. Måske har du hørt om den – måske har du ikke. Men her kommer den:

Kvotientreglen for differentiation

\[ \left ( \frac{f}{g}\right)'(x) = \frac{f'(x) \cdot g(x)-f(x) \cdot g'(x)}{(g(x))^2}, \quad g(x) \neq 0 \]

Opgave 5: Differentiation af tanh-funktionen og omskrivning

Vi skal vise, at tangens hyperbolsk \[ \tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} \] differentieret er \[ \tanh'(x)=1-\left ( \tanh(x) \right )^2. \]

  • Brug kvotientreglen for differentiation til at vise, at \[ \tanh'(x)= 1 - \left (\frac{e^x-e^{-x}}{e^x+e^{-x}} \right)^2 \] Hint! På et tidspunkt får du brug for brøkregnereglen \(\frac{a+b}{c}=\frac{a}{c}+\frac{b}{c}\).

  • Brug definitionen af tangens hyperbolsk til at indse at \[ \tanh'(x)=1-\left ( \tanh(x) \right )^2. \]

ReLU

Aktiveringsfunktionen ReLU som står for Reflected Linear Unit har forskrift

\[ f(x) = \begin{cases} x & \textrm{hvis } x > 0 \\ 0 & \textrm{hvis } x \leq 0 \\ \end{cases} \] og grafen for ReLU-funktionen ses i figur 5.

Figur 5: Grafen for ReLU-funktionen.

Værdimængden for ReLU-funktionen er \([0, \infty)\).

Det er ret tydeligt, at ReLU-funktionen ikke er differentiabel i \(0\). Men hvis vi definerer, at \(f'(0)\) skal være \(0\) så ses det nemt, at

\[ f'(x) = \begin{cases} 1 & \textrm{hvis } x > 0 \\ 0 & \textrm{hvis } x \leq 0 \\ \end{cases}. \]

ReLU-funktionen adskiller sig fra de andre aktiveringsfunktioner ved, at værdimængden er ubegrænset. Hvis man ønsker at bruge aktiveringsfunktionen til at modellere en sandsynlighed, som beskrevet tidligere, så dur det selvfølgelig ikke. Men i praksis viser ReLU-funktionen sig at være utrolig anvendelig som aktiveringsfunktion i de skjulte lag i kunstige neurale netværk. For det første kan nogle af de andre aktiveringsfunktioner resultere i det, vi i afsnittet om valg af tabsfunktion i noten om kunstige neurale netværk, kalder for slow learning. Det betyder kort sagt, at det går for langsomt med at finde minimum for tabsfunktionen. Dét problem har ReLU-funktionen ikke. For det andet er det meget hurtigt og nemt at udregne både ReLU-funktionen selv og også dens afledede. Det er for eksempel til sammenligning beregningsmæssigt tungere at udregne sigmoid-funktionen og dennes afledede. Hvis man har et netværk med millioner af neuroner, så er denne beregningsmæssige forskel ikke uvæsentlig.

For yderligere læsning henviser vi til referencerne i afsnittet videre læsning.

Overblik

I tabellen herunder finder du et overblik over de forskellige aktiveringsfunktioner, som vi har behandlet ovenfor.

Navn \(f(x)\) Graf \(Vm(f)\) \(f'(x)\)
Sigmoid \(\frac{1}{1+e^{-x}}\) \((0,1)\) \(f(x)\cdot(1-f(x))\)
Softsign \(\frac{x}{1+|x|}\) \((-1,1)\) \((1-|f(x)|)^2\)
Hyperbolsk tangens \(\frac{e^x-e^{-x}}{e^x+e^{-x}}\) \((-1,1)\) \(1-\left ( \tanh(x) \right )^2\)
ReLU \(\begin{cases} x & \textrm{hvis } x > 0 \\ 0 & \textrm{hvis } x \leq 0 \\ \end{cases}\) \([0,\infty)\) \(\begin{cases} 1 & \textrm{hvis } x > 0 \\ 0 & \textrm{hvis } x \leq 0 \\ \end{cases}\)

Videre læsning