Neuronales Netz: Warum kann ich nicht überanpassen?


8

Ich habe ein neuronales Netzwerk (Feed-Forward Single Layer), mit dem ich versuche, eine umweltbezogene Variable aus zwei Finanzvariablen vorherzusagen (Regression). Ich benutze die "Zug" -Funktion aus dem Caret-Paket.

Ich benutze den nnet()Algorithmus im Caret-Paket. Ich habe zwei kontinuierliche Prädiktoren und 420 Datenpunkte.

Zum theoretischen Verständnis versuche ich, mein Modell absichtlich zu überarbeiten. Nach meinem Verständnis sollte dies normalerweise mit jedem Datensatz funktionieren , z. B. beim Erhöhen der "Größe" (dh der Anzahl der versteckten Einheiten). Eine drastische Vergrößerung versteckter Einheiten führt jedoch nicht zu einer Überanpassung.

Ist es also falsch anzunehmen, dass Sie jedes neuronale Netzwerk durch Erhöhen der "Größe" überanpassen können? Welche andere Variable könnte stattdessen zu einer Überanpassung führen?

grid <- expand.grid(size = 20
                    )

control <- trainControl(method = "cv", 
                        number = 10,
                        verboseIter = TRUE
                        )

fit <- train(x=train_parametres, y=train_result, 
             method = "mlp", 
             metric = "Rsquared",
             learnFunc = "Std_Backpropagation",
             learnFuncParams = c(0.2, 0.0),
             maxit = 1000,
             trControl = control,
             tuneGrid = grid,
             preProcess = c("center", "scale"), 
             linout = T,
             verbose = T,
             allowParallel = T
)

Antworten:


2

Der Grund für den Versuch, einen Datensatz zu überpassen, besteht darin, die Modellkapazität zu verstehen, die zur Darstellung Ihres Datensatzes erforderlich ist.

Wenn unsere Modellkapazität zu niedrig ist, können Sie Ihren Datensatz nicht darstellen. Wenn Sie die Modellkapazität erhöhen, bis Sie Ihren Datensatz vollständig darstellen können, wissen Sie, dass Sie die minimale Kapazität gefunden haben.

Die Überanpassung ist hier nicht das Ziel, sondern ein Nebenprodukt. Ihr Modell repräsentiert wahrscheinlich den Datensatz und nicht unbedingt das Konzept . Wenn Sie dieses Modell an einem Testsatz testen, ist die Leistung wahrscheinlich geringer, was auf die Überanpassung hinweist.

Die Modellkapazität ist jedoch nicht der einzige Grund, warum ein Modell kein Konzept darstellen kann. Es ist möglich, dass das Konzept nicht zur Funktionsfamilie Ihres Modells gehört - wie wenn Ihr NN linear ist und das Konzept nicht. Es ist möglich, dass die Eingabe nicht ausreicht, um sich zwischen den Stichproben zu unterscheiden, oder dass Ihr Optimierungsalgorithmus einfach nicht die richtige Lösung gefunden hat.

In Ihrem Fall haben Sie nur zwei Prädiktoren. Wenn sie binär wären, wäre es sehr wahrscheinlich, dass Sie nicht viel mit ihnen darstellen könnten. Angenommen, sie sind begrenzt und glatt, können Sie versuchen, sie zu binden. Wenn Sie in Behältern eine hohe Entropie erhalten (z. B. einen Behälter mit einer Verteilung von 50% bis 50%), kann kein Logik-Relaying nur für diese Funktionen diese unterscheiden.


Danke für deine Antwort. Sie sind sich nicht sicher, ob ich das vollständig verstehe: Ich kann nicht überanpassen (im Sinne eines R2 von nahe 1), weil die "Kapazität" des Modells nicht groß genug ist? In Bezug auf die Funktion, die der NN verwendet: Ich muss "linout = T" angeben - bedeutet dies, dass der von mir verwendete NN auf lineare Funktionen beschränkt ist und dass dies möglicherweise ein Grund dafür ist, dass der Algorithmus nicht besser dazu passt das Trainingsset?
Requin

Normalerweise versuchen wir, eine Überanpassung zu erreichen, um die benötigte Kapazität abzuschätzen. Dies funktioniert, wenn das Modell bei ausreichender Kapazität tatsächlich den Datensatz darstellen kann. Da Sie einen kleinen Datensatz haben, glaube ich, dass die Kapazität nicht Ihr Problem ist. Was zur Mitte kommt, ist die fehlende Eingabe, die Sie anhand der in der Antwort vorgeschlagenen Fächer überprüfen können. Ein weiterer möglicher Grund sind anomale Proben. Bis zu welchem ​​Leistungsniveau erreichen Sie im Zugset. Die linearen Funktionen waren eine allgemeine Möglichkeit, die für Ihren Fall nicht spezifisch war. Ich benutze diese Bibliothek nicht und bin mit ihren Parametern nicht vertraut.
DaL

1

Ich hatte das gleiche Problem, ich behielt keine Regularisierung und optimale Lernrate bei. aber der Lernratenabfall wurde auf Null gesetzt. Sobald ich den Lernratenabfall auf einen Wert wie 0,95 eingestellt habe, hat es funktioniert und die Anzahl der Epochen erhöht

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.