Eigenschaften zum Aufbau eines mehrschichtigen neuronalen Perceptron-Netzwerks mit Keras?

8

Ich versuche, ein mehrschichtiges neuronales Perzeptron-Netzwerk aufzubauen und zu trainieren, das richtig vorhersagt, welcher Präsident zum ersten Mal in welchem ​​Landkreis gewonnen hat. Ich habe die folgenden Informationen für Trainingsdaten.

Gesamtbevölkerung Durchschnittsalter% BachelorsDeg oder höher Arbeitslosenquote Pro-Kopf-Einkommen Gesamthaushalte Durchschnittliche Haushaltsgröße% Eigentumswohnungen% Mieterwohnungen% Leerstehende Wohnungen Medianer Hauswert Bevölkerungswachstum Haushaltswachstum Pro-Kopf-Einkommenswachstum Gewinner

Das sind 14 Spalten mit Trainingsdaten und die 15. Spalte ist die Ausgabe.

Ich versuche, mit Keras ein mehrschichtiges neuronales Perzeptron-Netzwerk aufzubauen, aber ich brauche Hilfe beim Verständnis einiger Eigenschaften und der Vor- und Nachteile der Auswahl verschiedener Optionen für diese Eigenschaften.

  1. AKTIVIERUNGSFUNKTION

Ich weiß, dass mein erster Schritt darin besteht, eine Aktivierungsfunktion zu entwickeln. Ich habe immer neuronale Netze untersucht und Sigmoid-Aktivierungsfunktionen verwendet. Ist eine Sigmoid-Aktivierungsfunktion die beste? Woher weißt du, welches du verwenden sollst? Keras bietet zusätzlich die Möglichkeit, eine Aktivierungsfunktion für Softmax, Softplus, Relu, Tanh, Linear oder Hard_Sigmoid zu verwenden. Ich bin damit einverstanden, was auch immer zu verwenden, aber ich möchte nur verstehen können, warum und die Vor- und Nachteile.

  1. PROBABILITÄTSINITIALISIERUNGEN

Ich weiß, dass Initialisierungen die Wahrscheinlichkeitsverteilung definieren, die zum Festlegen der anfänglichen Zufallsgewichte von Keras-Ebenen verwendet wird. Die Optionen, die Keras bietet, sind einheitlich lecun_uniform, normal, Identität, orthogonal, Null, glorot_normal, glorot_uniform, he_normal und he_uniform. Wie wirkt sich meine Auswahl hier auf mein Endergebnis oder Modell aus? Sollte es nicht wichtig sein, dass wir jedes zufällige Modell "trainieren", mit dem wir beginnen, und trotzdem eine optimalere Gewichtung der Schichten finden?

pr338
quelle

Antworten:

6

1) Aktivierung ist eine Architekturauswahl, die sich auf eine Hyperparameterauswahl beschränkt. Sie können ein theoretisches Argument für die Verwendung einer beliebigen Funktion vorbringen. Der beste Weg, dies festzustellen, besteht darin, mehrere zu testen und einen Validierungssatz zu bewerten. Es ist auch wichtig zu bedenken, dass Sie Aktivierungen verschiedener Ebenen mischen und anpassen können.

2) Theoretisch wären viele zufällige Initialisierungen gleich, wenn sich Ihre Daten sehr gut verhalten und Ihr Netzwerk ideal wäre. In der Praxis versuchen Initialisierungen jedoch sicherzustellen, dass der Gradient angemessen beginnt und das Signal korrekt zurückpropagiert werden kann. In diesem Fall würde wahrscheinlich jede dieser Initialisierungen ähnlich funktionieren, aber der beste Ansatz besteht darin, sie auszuprobieren und zu wechseln, wenn Sie unerwünschte Ergebnisse erhalten.

jamesmf
quelle