Kunstig neuron app

Herunder gives en gennemgang af hver af fanerne i Kunstig Neuron App. Du kan læse mere om matematikken bag i noten om kunstige neuroner.

Data

Tryk på Browse… og vælg den datafil, du vil uploade. Det skal enten være en csv- eller excel-fil.


Hvis du uploader en fil i CSV format, kommer følgende frem:

Her skal du vælge, hvordan data er separeret. Der er følgende muligheder:

  • Auto
  • Komma (,)
  • Semikolon (; - Dansk/Excel)

Ved "Auto" prøver app’en selv at finde ud af, hvordan data er separeret. Hvis du ikke ved, hvad du skal vælge, så prøv alle muligheder og se efter, hvordan data bliver indlæst i højre side af skærmen.


Tryk herefter på Næste-knappen.


Variable

Target-variabel

Under Target-variabel vælger du den kolonne i dit datasæt, som angiver den klasse, der skal prædikteres. Du skal altså her vælge den kolonne, hvor target-værdierne står.


Target-værdi

Under target-værdi vælger du den specifikke værdi, som skal svare til en target-værdi på \(1\). Hvis du for eksempel har en kolonne, hvor værdierne er \(A\), \(B\) og \(C\), og du vælger \(B\) som target-værdi, så laves der automatisk en target-variabel, hvor

\[ t = \begin{cases} 1 & \textrm{hvis target-variablen har værdien } B \\ 0 & \textrm{hvis target-variablen har værdien } A \textrm{ eller } C \end{cases} \]


Feature-variable

Under feature-variable vælges alle de feature-/input-variable, som skal være en del af modellen.


Tryk herefter på Næste-knappen.


Træning

Startvægte

AI modellen trænes ved at finde minimum for en tabsfunktion, som gøres ved hjælp af gradientnedstigning (som også er forklaret i denne video).

Under Startvægte er det muligt at vælge hvilke værdier af vægtene, gradientnedstigning skal tage sit udgangspunkt i. Bemærk, at alle vægte starter i den samme værdi.


Learning rate

Når vægtene opdateres ved hjælp af gradientnedstigning benyttes denne opdateringsregel (hvor \(E\) er tabsfunktionen)

\[ w^{(\textrm{ny})} \leftarrow w - \eta \cdot \frac{\partial E }{\partial w} \]

her er \(\eta\) det, som kaldes for en learning rate. Hvis \(\eta\) vælges for stor, kan man risikere at "træde henover" minimum (det ses typisk ved at grafen for tabsfunktionen som funktion af antal iterationer – til højre i skærmbilledet – fluktuerer). Vælges \(\eta\) for lille går opdateringen for langsom, som ses ved at værdien af tabsfunktionen næsten ikke ændrer sig.


Iterationer

Iterationer angiver det antal gange vægtene opdateres i forbindelse med gradientnedstigning. Antal iterationer skal sættes stort nok til, at grafen for tabsfunktionen som funktion af antal iterationer begynder at flade ud.


Tabsfunktion

Her kan vælges den tabsfunktion, som minimeres. Squared svarer til squared error tabsfuntkionen, som måler summen af de kvadrerede fejl:

\[ \begin{aligned} E(w_0, w_1, &\dots, w_n) = \frac{1}{2} \sum_{m=1}^{M} \left (t^{(m)}- o^{(m)} \right)^2, \end{aligned} \]

mens Cross-entropy svarer til cross-entropy tabsfunktionen:

\[ \begin{aligned} E(w_0, w_1, \dots, & w_n) = \\ &- \sum_{m=1}^{M} \left (t^{(m)} \cdot \ln(o^{(m)}) + (1-t^{(m)}) \cdot \ln(1-o^{(m)}) \right) \end{aligned} \]

I forbindelse med binær klassifikation kan squared error have problemer med slow learning som ikke på samme måde ses, hvis cross-entropy i stedet vælges.

Uanset hvilken tabsfunktion man vælger, skal man være opmærksom på, at gradientnedstigning konvergerer. Det ses ved, at grafen for tabsfunktionen i højre side af skærmen flader ud.



Brug feature-skalering

Under indstillinger kan man fjerne fluebenet ved Brug feature-skalering. Default indstillingen er, at feature-skalering er slået til. Det er som regel nødvendigt for at få gradientnedstigning til at konvergere.

Alle AI modeller trænes ved at minimere en tabsfunktion, hvor en linear kombination af en række features \(x_1, x_2, \dots, x_n\) indgår:

\[ w_0 + w_1 \cdot x_1 + w_2 \cdot x_2 + \cdots + w_n \cdot x_n \]

For at bringe alle features på sammen skala anvender vi følgende standardisering:

\[ \frac{x-\mu}{\sigma} \] hvor \(\mu\) er et bud på middelværdien for featuren \(X\) og \(\sigma\) er et bud på spredningen. Du kan læse mere om feature-skalering i noten her. Gør man ovenstående for alle \(n\) features vil de fleste værdier ligge mellem \(-2\) og \(2\).

Det betyder, at de vægte, vi finder, i virkeligheden passer til følgende linear kombination:

\[ \begin{aligned} w_0 + w_1 \cdot \left (\frac{x_1-\mu_1}{\sigma_1} \right ) & + w_2 \cdot \left (\frac{x_2-\mu_2}{\sigma_2} \right ) \\ &+ \cdots + w_n \cdot \left (\frac{x_n-\mu_n}{\sigma_n} \right ) \end{aligned} \]

hvilket kan omskrives til

\[ \begin{aligned} &\left ( w_0 -\frac{w_1}{\sigma_1}\cdot \mu_1 - \frac{w_2}{\sigma_2}\cdot \mu_2- \cdots - \frac{w_n}{\sigma_n}\cdot \mu_n\right) \\ & \qquad \qquad \qquad \qquad + \frac{w_1}{\sigma_1} \cdot x_1 + \frac{w_2}{\sigma_2} \cdot x_2 + \cdots + \frac{w_n}{\sigma_n} \cdot x_n \end{aligned} \] De vægte som returneres i app’en er:

Feature Vægt
Bias \(w_0 -\frac{w_1}{\sigma_1}\cdot \mu_1 - \frac{w_2}{\sigma_2}\cdot \mu_2- \cdots - \frac{w_n}{\sigma_n}\cdot \mu_n\)
\(x_1\) \(\frac{w_1}{\sigma_1}\)
\(x_2\) \(\frac{w_2}{\sigma_2}\)
\(\vdots\) \(\vdots\)
\(x_n\) \(\frac{w_n}{\sigma_n}\)

Det vil altså sige, at de returnerede vægte svarer til de vægte, man ville få, hvis man ikke havde feature-skaleret. Man behøver således ikke at bekymre sig om feature-skalering, men man kan bruge vægtene direkte, selvom vi "nedenunder motorhjelmen" anvender feature-skalering for at få gradientnedstigning til at konvergere.



Tryk herefter på Træn model-knappen.


Output fra modellen

Når modellen er trænet ses outputtet i højre side af skærmen. Følgende vises:

  • Grafen for værdien af tabsfunktionen som funktion af antal iterationer. Her skal du holde øje med, at grafen flader ud svarende til, at gradientnedstigning er konvergeret.

  • Slutværdien af tabsfunktionen. Hvis du vil vide mere om, hvordan størrelsen af denne værdi kan vurderes, så se dette forløb.

  • En tabel med de vægte, som er estimeret ved hjælp af gradientnedstigning.


Evaluering & Prædiktion

Evaluering

Der kan her vælges mellem tre evalueringsmetoder:

  • Evaluering på træningsdata
  • Evalueringer på bruger-uploadet testdata
  • Evaluering via krydsvalidering

Når evalueringsmetoden er valgt, trykkes der på Kør evaluering-knappen.

Vælges Evaluering på træningsdata beregnes følgende: Klassifikationsnøjagtighed (CA) og en confusion matrix. Desuden vises targetfordelingen i træningsdatasættet. Her skal man være opmærksom på at sammenholde CA med denne fordeling, som det også er beskrevet i afsnittet Klassifikationsnøjagtighed (CA).

Endelig er det muligt at downloade et datasæt, hvor træningsdatasættet er udvidet med to ekstra kolonner: en kolonne med den prædikterede sandsynlighed (outputværdien \(o\)) for hvert træningseksempel og en kolonne med den deraf følgende prædiktion (hvis \(o \geq 0.5\) prædikteres det, at targetværdien er \(1\) og \(0\) ellers).

Vælges Evaluering på bruger-uploadet testdata beregnes det samme som for Evaluering på træningsdata blot med udgangspunkt i et uploadet testdatasæt.

Endelig kan Evaluering via krydsvalidering vælges. Her beregnes Klassifikationsnøjagtighed (CA) baseret på krydsvalidering.