Del 6: Andre tabsfunktioner
Forventet tid ca. 1 x 90 min.
Hele denne del er en fortsættelse af eksemplet om "slow learning" og kan derfor springes over. Alternativt kan man nøjes med at springe opgave 3 over.
Aktivitet 1 - Cross-entropy tabsfunktionen
I del 3 så vi, at der kan opstå problemer med slow learning. Det opstår på grund af opdateringsreglerne:
\[ \begin{aligned} w_0^{(\textrm{ny})} \leftarrow & w_0 + \eta \cdot \sum_{m=1}^{M} \left (t^{(m)}-o^{(m)} \right) \cdot o^{(m)}\cdot (1-o^{(m)}) \\ w_1^{(\textrm{ny})} \leftarrow & w_1 + \eta \cdot \sum_{m=1}^{M} \left (t^{(m)}-o^{(m)} \right) \cdot o^{(m)}\cdot (1-o^{(m)}) \cdot x^{(m)} \end{aligned} \tag{1}\]
hvor man kan være i den uheldige situation, at man har fået startet gradientnedstigning i en \((w_0, w_1)\) værdi, hvor neuronen fejlagtigt er "mættet". Det betyder, at den prædikterer en outputværdi \(o\) tæt på \(0\), selvom target er \(1\) og omvendt, når target er \(0\). I begge tilfælde vil opdateringsleddet i (1) være tæt på \(0\) – enten fordi \(o^{(m)}\) er tæt på \(0\) eller fordi \(1-o^{(m)}\) er tæt på \(0\).
Vi skal i denne del se på, at det skyldes valget af squared error tabsfunktionen. I det simple tilfælde med kun én inputvariabel, så vi i del 3, at squared error tabsfunktionen var defineret ved:
\[ E = \frac{1}{2} \sum_{m=1}^M (t^{(m)}-\sigma(w_0 + w_1 \cdot x^{(m)}))^2 \] hvor det \(m\)’te træningseksempel består af inputværdien \(x^{(m)}\) (den \(m\)’te kundes alder) med tilhørende targetværdi \(t^{(m)}\) (som er \(1\), hvis den \(m\)’te kunde aktiverer tilbudet og \(0\) ellers).
Holder vi det helt simpelt og betragter ét træningseksempel ad gangen, så er squared error tabsfunktionen på formen
\[ E = \frac{1}{2} (t-o)^2= \frac{1}{2} (t-\sigma(w_0 + w_1 \cdot x))^2 \tag{2}\]
Nu er der dog ingen almen gyldig naturlov, som siger, at vi absolut skal bruge squared error tabsfunktionen. Til gengæld stiller vi nogle generelle krav til en tabsfunktion, som afspejler, at den netop skal bruges til at måle et tab eller en fejl ved en AI model. Derfor skal en tabsfunktion \(E\) overordnet set have følgende egenskaber:
En anden ofte anvendt tabsfunktion er cross-entropy tabsfunktionen. Generelt er den defineret sådan her:
\[ \begin{aligned} E = - \sum_{m=1}^{M} \left (t^{(m)} \cdot \ln(o^{(m)}) + (1-t^{(m)}) \cdot \ln(1-o^{(m)}) \right) \end{aligned} \]
Ser vi igen kun på ét træningseksempel ad gangen får vi det lidt simplere udtryk:
\[ \begin{aligned} E = - \left (t \cdot \ln(o) + (1-t) \cdot \ln(1-o) \right), \end{aligned} \tag{3}\]
hvor outputværdien \(o\) er
\[ o = \sigma(w_0+w_1 \cdot x) \]
i det tilfælde, hvor der kun er én inputvariabel.
Vi skal nu se, at cross-entropy tabsfunktionen rent faktisk opfylder kravene til en tabsfunktion.
Aktivitet 2 - Nye opdateringsregler
Vi skal nu have bestemt opdateringsreglerne for vægtene, når vi bruger cross-entropy tabsfunktionen.
Aktivitet 3 - Væk med slow learning!
Hvis du har lavet opgave 3 rigtig, skulle du gerne ende med følgende opdateringsregler:
Til sammenligning vil opdateringsreglerne for squared error tabsfunktionen i (1), i det tilfælde hvor vi kun opdaterer vægtene for ét træningseksempel ad gangen se sådan her ud:
Det er nu tydeligt, at faktoren \(o \cdot (1-o)\) – som var den størrelse, der gav anledning til slow learning – er forsvundet fra opdateringsreglerne baseret på cross-entropy. Det betyder, at hvis man er i en situation, hvor \(t=1\) og \(o\) er tæt på \(0\) eller omvendt, så vil vægtene baseret på cross-entropy tabsfunktionen hurtigt blive opdateret. Hvorimod det ikke er tilfældet, hvis opdateringen af vægtene er baseret på squared error tabsfunktionen. Det skyldes simpelthen, at valget af sigmoid-funktionen som aktiveringsfunktion passer meget bedre sammen med cross-entropy tabsfunktionen, end den gør med squared error tabsfunktionen.
Lad os se hvordan det virker i praksis.
Vi har tidligere set, at vi fik problemer med slow learning, hvis vi valgte squared error som tabsfunktion og satte start-vægtene til \(10\). Lad os se hvordan det går, hvis vi i stedet bruger cross-entropy:
Hvis du vil vide mere om tabsfunktioner, kan du læse i noten om tabsfunktioner.