neuralNet

annTrain

L'essentiel
Auf einen Blick
Die annTrain-Aktion im neuralNet-Aktionssatz stellt eine leistungsfähige Komponente für das Training künstlicher neuronaler Netze auf der SAS Viya-Plattform dar. Analysten greifen auf diese Funktion zurück, um präzise Vorhersagemodelle für Klassifizierungs- und Regressionsaufgaben zu berechnen und dabei komplexe Datenstrukturen effizient zu verarbeiten. Das System unterstützt flexible Architekturen, einschließlich GLIM und MLP, und bietet integrierte Optimierungsverfahren wie L-BFGS zur Leistungssteigerung und Fehlerreduktion. Um die praktische Anwendung zu erleichtern, haben wir im unteren Bereich dieser Seite eine Sammlung von Antworten auf häufig gestellte Fragen zusammengestellt, die von der Feinjustierung der Regularisierungsparameter bis zur Erstellung von einsatzbereitem Scoring-Code reichen.

Beschreibung

Die Aktion `neuralNet.annTrain` ist ein leistungsstarkes Werkzeug innerhalb von SAS Viya, das zum Trainieren künstlicher neuronaler Netzwerke (KNN) verwendet wird. Sie ermöglicht es Benutzern, verschiedene Architekturen wie Mehrschicht-Perzeptrone (MLP), verallgemeinerte lineare Modelle (GLIM) und direkte Architekturen zu erstellen und zu optimieren. Diese Aktion ist von grundlegender Bedeutung für Aufgaben des überwachten Lernens, einschließlich Klassifizierung und Regression, und unterstützt auch das unüberwachte Lernen durch Autoencoding zur Dimensionsreduktion. Sie bietet eine breite Palette von anpassbaren Parametern, einschließlich Aktivierungsfunktionen, Optimierungsalgorithmen (z. B. L-BFGS, SGD), Regularisierungstechniken und Methoden zur Behandlung fehlender Werte, was eine feinkörnige Kontrolle über den Trainingsprozess ermöglicht.

neuralNet.annTrain / table={name='table-name'}, inputs={{name='var1'}, {name='var2'}}, target='target_var', hiddens={10, 5}, nloOpts={maxIters=20, algorithm='LBFGS'}, modelTable={name='trained_model', replace=true};
Einstellungen
ParameterBeschreibung
acts Gibt die Aktivierungsfunktion für die Neuronen in jeder verborgenen Schicht an.
applyRowOrder Gibt an, dass die Aktion eine vordefinierte Zeilenreihenfolge verwenden soll, um die Reproduzierbarkeit zu gewährleisten.
arch Gibt die zu trainierende Netzwerkarchitektur an (z. B. 'MLP', 'GLIM').
attributes Gibt temporäre Attribute an, wie z. B. ein Format, das auf Eingabevariablen angewendet werden soll.
bias Gibt einen festen Bias-Wert für alle verborgenen und Ausgabe-Neuronen an. In diesem Fall sind die Bias-Parameter fest und werden nicht optimiert.
casOut Gibt die Ausgabetabelle für das trainierte Modell an.
code Fordert an, dass die Aktion SAS-DATA-Step-Score-Code zur Bereitstellung des Modells erzeugt.
combs Gibt die Kombinationsfunktion für die Neuronen in jeder verborgenen Schicht an.
delta Gibt den Annealing-Parameter an, wenn eine globale Optimierung durch simuliertes Abkühlen (SA) durchgeführt wird.
dropOut Gibt die Dropout-Rate für die verborgenen Schichten an, um eine Überanpassung zu verhindern.
dropOutInput Gibt die Dropout-Rate für die Eingabeschichten an.
errorFunc Gibt die Fehlerfunktion (Verlustfunktion) an, die während des Trainings optimiert werden soll (z. B. 'ENTROPY', 'NORMAL').
freq Gibt eine numerische Variable an, die die Häufigkeit des Auftretens jeder Beobachtung enthält.
fullWeights Erzeugt das vollständige Gewichtsmodell für den LBFGS-Algorithmus.
hiddens Gibt die Anzahl der Neuronen für jede verborgene Schicht an (z. B. {10, 5} für zwei Schichten).
includeBias Gibt an, ob Bias-Parameter für die Neuronen in den verborgenen und Ausgabeschichten eingeschlossen werden sollen.
inputs Gibt die Eingabevariablen (Features) für das Modell an.
inversePriors Berechnet das Gewicht, das auf den Vorhersagefehler jeder nominalen Zielvariable angewendet wird, basierend auf der inversen Klassenhäufigkeit.
listNode Gibt die Knoten (Eingabe, verborgen, Ausgabe) an, die in die Ausgabetabelle des Scoring-Codes aufgenommen werden sollen.
missing Gibt an, wie fehlende Werte für die Eingabevariablen imputiert werden sollen ('MEAN', 'MIN', 'MAX', 'NONE').
modelId Gibt einen Modell-ID-Variablennamen an, der im generierten DATA-Step-Scoring-Code enthalten ist.
modelTable Gibt die CAS-Tabelle an, die die Gewichte eines vortrainierten Modells zur Initialisierung des Netzwerks enthält.
nAnns Gibt die Anzahl der Netzwerke an, die aus der angegebenen Anzahl von Versuchen ausgewählt werden sollen.
nloOpts Gibt die Optionen für den nichtlinearen Optimierungsalgorithmus an (z. B. maximale Iterationen, Toleranz).
nominals Gibt die nominalen (kategorialen) Eingabe- und Zielvariablen an.
nTries Gibt die Anzahl der Versuche beim Trainieren von Netzwerken mit zufälligen Anfangsgewichten an.
randDist Gibt die Verteilung zur zufälligen Generierung der anfänglichen Netzwerkverbindungsgewichte an.
resume Setzt eine Trainingsoptimierung unter Verwendung von Gewichten aus einem vorherigen Training fort.
samplingRate Gibt den Anteil der Daten an, der zum Erstellen eines neuronalen Netzwerks verwendet werden soll.
saveState Gibt eine CAS-Tabelle an, in der der Zustand des Modells für zukünftige Vorhersagen oder erneutes Training gespeichert werden soll.
scaleInit Gibt an, wie die anfänglichen Gewichte skaliert werden sollen.
seed Gibt den Zufallszahlensamen für die Reproduzierbarkeit an.
std Gibt die Standardisierungsmethode an, die auf die Intervall-Eingabevariablen angewendet werden soll.
step Gibt eine Schrittgröße für Störungen der Netzwerkgewichte bei globalen Optimierungen an.
t Gibt den künstlichen Temperaturparameter bei globalen Optimierungen wie simuliertem Abkühlen an.
table Gibt die Eingabetabelle an, die die Trainingsdaten enthält.
target Gibt die Ziel- oder Antwortvariable für das Training an.
targetAct Gibt die Aktivierungsfunktion für die Neuronen in der Ausgabeschicht an.
targetComb Gibt die Kombinationsfunktion für die Neuronen an den Ziel-Ausgabeknoten an.
targetMissing Gibt an, wie fehlende Werte für die Zielvariable imputiert werden sollen.
targetStd Gibt die Standardisierungsmethode an, die auf die Intervall-Zielvariable angewendet werden soll.
validTable Gibt die Tabelle mit den Validierungsdaten an, um ein Überanpassen zu überwachen und das Training frühzeitig zu beenden.
weight Gibt eine Variable zur Gewichtung der Vorhersagefehler für jede Beobachtung während des Trainings an.
Datenerstellung

Wir verwenden die Tabelle `HMEQ` aus der `SAMPSIO`-Bibliothek, um unser neuronales Netzwerk zu trainieren. Diese Tabelle enthält Informationen über Hausbesitzer, die einen Kredit beantragen. Zuerst laden wir die Daten in eine CAS-Tabelle.

Kopiert!
1DATA casuser.hmeq; SET sampsio.hmeq; RUN;

Beispiele

Dieses Beispiel trainiert ein einfaches Mehrschicht-Perzeptron (MLP) mit einer verborgenen Schicht von 10 Neuronen, um die Variable `BAD` basierend auf anderen Eingaben in der `HMEQ`-Tabelle vorherzusagen. Wir verwenden den L-BFGS-Algorithmus für 20 Iterationen.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2ACTION neuralNet.annTrain /
3 TABLE={name='hmeq', caslib='casuser'},
4 inputs={{name='LOAN'}, {name='MORTDUE'}, {name='VALUE'}, {name='YOJ'}, {name='DEROG'}, {name='DELINQ'}, {name='CLAGE'}, {name='NINQ'}, {name='CLNO'}},
5 nominals={{name='REASON'}, {name='JOB'}, {name='BAD'}},
6 target='BAD',
7 hiddens={10},
8 nloOpts={maxIters=20, algorithm='LBFGS'},
9 seed=1234;
10RUN;
11QUIT;
Ergebnis :
Das Modell wird trainiert und die Ergebnisse, einschließlich der Iterationshistorie und der Modellanpassungsstatistiken, werden angezeigt. Die Ausgabe zeigt den Trainingsfortschritt und die endgültige Fehlermessung des Modells.

Dieses Beispiel zeigt ein detaillierteres Training. Wir partitionieren die Daten in Trainings- (50%) und Validierungssätze (50%). Wir verwenden ein MLP mit zwei verborgenen Schichten (20 und 15 Neuronen) und unterschiedlichen Aktivierungsfunktionen (TANH und RECTIFIER). Als Optimierungsalgorithmus wird der stochastische Gradientenabstieg (SGD) mit einer Lernrate von 0.01 und einem Momentum von 0.5 verwendet. Eine L1-Regularisierung wird ebenfalls angewendet, um eine Überanpassung zu verhindern. Das trainierte Modell wird zur späteren Verwendung in einer Tabelle gespeichert.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2dataProcessing.partition /
3 TABLE={name='hmeq', caslib='casuser'},
4 partInd=true, fraction=0.5, seed=1234,
5 casOut={name='hmeq_part', caslib='casuser', replace=true};
6RUN;
7 
8ACTION neuralNet.annTrain /
9 TABLE={name='hmeq_part', where='_PartInd_ = 1'},
10 validTable={name='hmeq_part', where='_PartInd_ = 0'},
11 inputs={{name='LOAN'}, {name='MORTDUE'}, {name='VALUE'}, {name='YOJ'}, {name='DEROG'}, {name='DELINQ'}, {name='CLAGE'}, {name='NINQ'}, {name='CLNO'}},
12 nominals={{name='REASON'}, {name='JOB'}, {name='BAD'}},
13 target='BAD',
14 hiddens={20, 15},
15 acts={'TANH', 'RECTIFIER'},
16 targetAct='SOFTMAX',
17 errorFunc='ENTROPY',
18 std='STD',
19 nloOpts={algorithm='SGD', sgdOpt={learningRate=0.01, momentum=0.5}, regL1=0.001, maxIters=50, printFreq=1},
20 seed=5678,
21 modelTable={name='ann_model', caslib='casuser', replace=true};
22RUN;
23QUIT;
Ergebnis :
Das neuronale Netzwerk wird mit den angegebenen Parametern trainiert. Die Ausgabe zeigt die Iterationshistorie für sowohl die Trainings- als auch die Validierungsdaten, was eine Überwachung auf Überanpassung ermöglicht. Das trainierte Modell wird in der Tabelle `ann_model` in der `casuser`-Bibliothek gespeichert.

In diesem Beispiel wird die Aktion `annTrain` für das unüberwachte Lernen verwendet, um eine Autoencoder-Architektur zu erstellen. Es wird kein `target`-Parameter angegeben, sodass die Eingabevariablen sowohl als Eingaben als auch als Ziele dienen. Das Ziel ist es, eine komprimierte Darstellung der Daten in der verborgenen Schicht zu lernen. Wir verwenden eine Architektur mit drei verborgenen Schichten (10, 5, 10 Neuronen), um die Daten zu kodieren und zu dekodieren. Der Parameter `listNode='HIDDEN'` wird im `code`-Parameter verwendet, um nur die Werte der Neuronen der mittleren verborgenen Schicht (die Kodierung) im Scoring-Code auszugeben.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2ACTION neuralNet.annTrain /
3 TABLE={name='hmeq', caslib='casuser'},
4 inputs={{name='LOAN'}, {name='MORTDUE'}, {name='VALUE'}, {name='YOJ'}, {name='DEROG'}, {name='DELINQ'}, {name='CLAGE'}, {name='NINQ'}, {name='CLNO'}},
5 hiddens={10, 5, 10},
6 std='MIDRANGE',
7 nloOpts={maxIters=100, algorithm='LBFGS'},
8 code={casOut={name='hmeq_encoded', replace=true}, listNode='HIDDEN'};
9RUN;
10QUIT;
Ergebnis :
Die Aktion trainiert ein Autoencoder-Netzwerk. Die Ausgabe zeigt die Optimierungsergebnisse. Zusätzlich wird eine CAS-Tabelle namens `hmeq_encoded` erstellt, die den SAS-DATA-Step-Code enthält, um die ursprünglichen Daten in eine 5-dimensionale Darstellung zu transformieren, die den Ausgaben der mittleren verborgenen Schicht entspricht.

FAQ

Was ist der Zweck der Aktion `annTrain`?
Wie gibt man die zu trainierende Netzwerkarchitektur an?
Welche Aktivierungsfunktionen können für die Neuronen in den versteckten Schichten verwendet werden?
Wie kann man die Anzahl der Neuronen in den versteckten Schichten definieren?
Wie wird die Fehlerfunktion für das Training des Netzwerks spezifiziert?
Wie werden fehlende Werte in den Eingabedaten behandelt?
Welche Optimierungsalgorithmen sind für das Training verfügbar?
Kann das Training mit Gewichten aus einem vorherigen Lauf fortgesetzt werden?
Wie kann man eine Validierungstabelle verwenden, um das Training frühzeitig zu beenden?
Was ist der Zweck des `saveState` Parameters?

Zugehörige Szenarien

Anwendungsfall
Vorhersage der Kundenreaktion auf eine Marketingkampagne

Eine Bank möchte vorhersagen, welche Kunden am wahrscheinlichsten ein neues Anlageprodukt abonnieren werden, basierend auf ihren demografischen Daten und ihrer Bankhistorie. Zie...

Anwendungsfall
Vorausschauende Wartung von Industriemaschinen mit unvollständigen Sensordaten

Ein Fertigungsunternehmen sammelt Sensordaten von seinen Maschinen, um Ausfälle vorherzusagen. Aufgrund von Sensorstörungen oder Übertragungsproblemen sind die Daten oft unvolls...

Anwendungsfall
Inkrementelles Training eines Betrugserkennungsmodells mit neuen Daten

Ein Finanzinstitut verfügt über ein bestehendes neuronales Netzwerk zur Betrugserkennung, das auf historischen Transaktionsdaten trainiert wurde. Um mit neuen Betrugsmustern Sch...