Aktiveringsfunktioner

A-niveau

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.

I tabsfunktionen indgår 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}}. \]

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 \((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)\).

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. \]

Det vil sige, at værdimængden for \(f\) er \((0,1)\).

De følgende opgaver gå 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)). \]

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}. \]

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{1}\] 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{2}\]

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). 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 ser også, 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.

I nedenstående opgaver skal vi vise, at

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

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

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

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 (2):

\[ 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{5}\]

  • 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}. \] 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}. \]

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

Vi vil nu vise, at den afledede softsign-funktion 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 (1).

  • 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.

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.

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(x)}{g(x)}\right)' = \frac{f'(x) \cdot g(x)-f(x) \cdot g'(x)}{(g(x))^2}, \quad g(x) \neq 0 \]

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 dig 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 praktisk viser ReLU-funktionen sig at være utrolig anvendelig som aktiveringsfunktion i de skjult lag i kunstige neurale netværk. For det første kan nogle af de andre aktiveringsfunktioner resulterer 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