Mehrdimensionale lineare Regression/Fehlerminimierung und Lernrate

Einleitung

Diese Seite zum Thema Fehlerminimierung und Lernrate kann als Wiki2Reveal Folien angezeigt werden. Einzelne Abschnitte werden als Folien betrachtet und Änderungen an den Folien wirken sich sofort auf den Inhalt der Folien aus. Dabei werden die folgenden Teilaspekte im Detail behandelt:

  • (1) Wie kann man den Fehler in Gradientenrichtung auswerten?
  • (2) Wie verwendet man eine Lernrate, wenn sich der Fehler in einem Iterationsschritt vergrößert.

Zielsetzung

Diese Lernressource behandelt im Kontext der Mehrdimensionale lineare Regression die Fehlerminimierung und die Anpassung der Lernrate. Dabei soll die Fehlerminimierung und Anpassung der Lernrate in R und KnitR implementiert werden.

Zielgruppe

Die Zielgruppe der Lernressource zum Thema Fehlerminimierung und Lernrate für eine mehrdimensionale lineare Regression sind Lehramtstudierende, die die mehrdimensionale lineare Regression für die Klassifizierung in digitalen Lernumgebungen einsetzen möchten.

Aufgaben für Lernende / Studierende

Mit den folgenden Aufgaben zum Thema Mehrdimensionale lineare Regression Fehlerminimierung und Lernrate werden:

  • Erläutern Sie, wie man einen Gradienten einer Fehlerfunktion einsetzen kann, um die Fehlerfunktion zu minimieren!
  • Wie berechnet man eine Fehlerfunktion und den Gradienten einer Fehlerfunktion bei einer mehrdimensionalen linearen Regression?

Fehlerminimierung in Gradientenrichtung

Die folgende Funktion wertet die Funktion in Gradientenrichtung an evalcount=100 Stellen aus liefert den Vektor zurück an dem die Fehlerfunktion den kleinsten Fehler hat. Die Funktion find_min4error(...) wird dabei für einen Iterationsschritt in Gradientenrichtung verwendet.

Parameter der Fehlerminimierungsfunktion

Die folgende Fehlerminimierungsfunktion besitzt die folgenden Parameter:

  • pError ist die Fehlerfunktion, mit der der Fehler berechnet werden soll
  • pGrad ist der Gradient der Fehlerfunktion,
  • pa ist der aktuelle Vektor , für den ein Minimium der Fehlerfunktion gesucht wird.
  • alpha ist die Lernrate

Funktionsdefinition

find_min4error <- function (pError, pGrad, pa, px_D, py_D, alpha=1, evalcount=100) {
  ## Parameter pError: Fehlerfunktion   pGrad:  Gradient der Fehlerfunktion
  ## px_D,py_D: x- bzw. y-Vektoren der Daten
  ret <- rep(0,2) ### return <- c(0,0); 
  ## erste Komponente von return Skalar lambda für den Gradienten
  ## zweite Komponente von return ist der minimale Fehler in Gradientenrichtung
  s4a <- (-evalcount:evalcount)/evalcount
  #s4a <- 2*runif(2*evalcount+1,-1,1)
  E4a <-  rep(0,2*evalcount+1) ## +1 wegen x4a=0
  ## smin - Skalar für Gradient für das Minimum der berechneten Fehler 
  scalar4min <- 0 ### Streckfaktor mit 0 - am Ort bleiben
  ### Fehler in pa berechnen als Startwert
  error4min <- pError( pa, px_D, py_D )   
  grad4a      <- alpha * pGrad( pa, px_D, py_D )   
  ## in Gradientenrichtung auswerten zwischen -1*pGrad und +1*Grad 
  ## die Fehlerfunktion auswerten und über die x4a-Liste iterieren
  for (k in 1:length(s4a)) {
    ## Fehler für den um x4a[k] skalierten Gradienten pGrad 
    ## und die Daten px_D, py_D berechnen
    E4a[k] <- pError(pa + s4a[k]*grad4a, px_D, py_D)
    ## Überprüfen, ob der Fehler kleiner ist als der 
    ## bisher berechnete minimale Fehler errormin
    if (E4a[k] < error4min) {
      error4min  <-E4a[k]
      scalar4min <-s4a[k]
    }
  }
  # plot(s4a,E4a)
  ret <- c(scalar4min,error4min)
  ## Rückgabewert des Skalars für den Gradienten und dem minimalen Fehler
  return(ret)
}

Normierter LR-Gradient

Um mit der Lernrate die Schrittweite im Parameter kontrollieren zu können, verwendet man ein normierten Gradienten, der die Vektorlänge , wenn der Gradient nicht der Nullvektor ist (siehe auch normierter MLR-Gradient). Der LR-Gradient GradE_LR() wird in der folgenden Funktion aufgerufen und dann (wenn möglich) normiert.

normGradE_LR <- function (pa,px_D,py_D) {
 g_LR <- GradE_LR(pa,px_D,py_D)
 ## Länge des Gradientenvektors bestimmen als euklidische 2-Norm
 norm4g <- norm(g_LR,"2")
 normgrad <- g_LR
 if (norm4g > 0) {
    ### Normierung des Gradienten
    normgrad <- g_LR / norm4g   
 } else {
   print("Gradient ist Nullvektor")
 }
 ## Rückgabewert: normierter Gradient, wenn kein Nullvektor 
 ##               Sonst Nullvektor als Rückgabewert
 return(normgrad)
}

Literatur/Quellennachweise


Siehe auch

Seiteninformation

Diese Lernresource können Sie als Wiki2Reveal-Foliensatz darstellen.

Wiki2Reveal

Dieser Wiki2Reveal Foliensatz wurde für den Lerneinheit Mehrdimensionale lineare Regression' erstellt der Link für die Wiki2Reveal-Folien wurde mit dem Wiki2Reveal-Linkgenerator erstellt.