deepLearn

dlTune

##set_deeplearn ##ai ##deeplearning

Description

Prêt à trouver les réglages magiques de votre réseau de neuronesUn réseau de neurones est un modèle d'IA bio-inspiré composé de couches de nœuds interconnectés, capable d'apprendre des relations complexes dans les données pour prédire ou classifier avec précision. ? L'action optimise automatiquement les hyperparamètres de votre modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). d'apprentissage profondL'apprentissage profond (Deep Learning) est une branche de l'IA utilisant des réseaux de neurones multicouches pour modéliser des données complexes et automatiser l'extraction de caractéristiques. (Deep LearningSous-ensemble du Machine Learning basé sur des réseaux de neurones artificiels profonds. Il excelle dans l'extraction automatique de motifs complexes depuis des données brutes (images, texte, son).). Elle explore intelligemment les espaces de paramètres (comme le ou la ) pour booster la précision de vos réseaux convolutifs, récurrents ou standards.

Syntaxe Officielle
proc cas;
deepLearn.dlTune /
bestWeights={casouttable}
dataSpecs={{dlDataSpecOpts-1}, ...}
forceEqualPadding=TRUE | FALSE
gpu={gpuOptions}
initWeights={castable}
inputs={"variable-1", ...}
missing="MAX" | "MEAN" | "MIN" | "NONE"
modelTable={castable} *
modelWeights={casouttable} *
nominals={"variable-1", ...}
nThreads=integer
optimizer={dlTuneOptimizerOpts} *
recordSeed=double
repeatWeightTable=TRUE | FALSE
seed=double
sequence={dlSequenceOptions}
table={castable} *
target="variable"
targetMissing="MAX" | "MEAN" | "MIN" | "NONE"
targetSequence={"variable-1", ...}
textParms={dlTextOptions}
texts={"variable-1", ...}
tuneState={casouttable}
validFreq=integer
validTable={castable} *
weight="variable";
run; quit;

Paramètres Clés

Nom du paramètre Description
modelTable Spécifie la table en mémoire qui contient la définition du modèle. (Requis)
table Spécifie les paramètres de la table d'entrée contenant les données d'entraînement. (Requis)
validTable Spécifie la table de validation pour évaluer le modèle pendant l'optimisation. Doit avoir les mêmes colonnes que la table d'entraînement. (Requis)
modelWeights Spécifie la table en mémoire utilisée pour stocker les poids optimisés du modèle. (Requis)
optimizer Les réglages de l'algorithme d'optimisation (ADAM, LBFGS, LARS, etc.) et les plages d'hyperparamètres à explorer. (Requis)
bestWeights Sauvegarde les poids ayant la plus faible erreur (loss) dans une table CAS. Pratique pour garder le meilleur du meilleur !
gpu Active et configure l'utilisation du GPU. Mettez 'gpu=1' pour turbocompresser vos calculs sur toutes les cartes graphiques disponibles.
initWeights Table contenant les poids initiaux du modèle pour démarrer l'entraînement (transfer learning).
inputs Liste des variables d'entrée à utiliser dans l'analyse.
target La variable cible (ou de réponse) que le modèle doit apprendre à prédire.
dataSpecs Définit les métadonnées (variables, type de données) liées aux couches d'entrée et de sortie.

Préparation des données

Chargement des données en mémoire

Avant d'optimiser, chargeons les tables d'entraînement et de validation en mémoire (casuser).

1PROC CAS;
2 TABLE.loadTable / path="train_data.sashdat", caslib="casuser", casout={name="train_data", replace=true};
3 TABLE.loadTable / path="valid_data.sashdat", caslib="casuser", casout={name="valid_data", replace=true};
4RUN;
5QUIT;

Exemples d'utilisation

Optimisation basique (Tuning)

Exemple d'optimisation simple d'un modèle avec l'algorithme ADAM, en définissant une petite recherche sur le taux d'apprentissage.

1PROC CAS;
2 DEEPLEARN.dlTune /
3 TABLE={name="train_data"}
4 validTable={name="valid_data"}
5 modelTable={name="my_model"}
6 modelWeights={name="tuned_weights"}
7 inputs={"var1", "var2", "var3"}
8 target="target_var"
9 optimizer={algorithm={method="ADAM", learningRate={lowerBound=0.0001, upperBound=0.1, logScale=true}}, maxEpochs=5, miniBatchSize={value=16}, nParmSets=5};
10RUN;
11QUIT;
Résultat Attendu :
Le processus évalue 5 jeux d'hyperparamètres (nParmSets) et sauvegarde les meilleurs poids dans la table 'tuned_weights'.
Tuning intensif avec GPU et sauvegarde des meilleurs poids

Une recherche d'hyperparamètres avancée exploitant le GPU, avec recherche sur le taux d'apprentissage et la taille du mini-batch, en sauvegardant le meilleur état de poids.

1PROC CAS;
2 DEEPLEARN.dlTune /
3 TABLE={name="train_data"}
4 validTable={name="valid_data"}
5 modelTable={name="dl_model"}
6 initWeights={name="initial_weights"}
7 modelWeights={name="final_tuned_weights"}
8 bestWeights={name="best_weights_history"}
9 inputs={"image_uri"}
10 target="label"
11 gpu={devices={0,1}, precision="FP32"}
12 nThreads=8
13 optimizer={
14 algorithm={method="ADAM",
15 learningRate={lowerBound=1e-5, upperBound=0.1, logScale=true},
16 momentum={lowerBound=0.8, upperBound=0.99}}
17 maxEpochs=20
18 miniBatchSize={lowerBound=16, upperBound=128}
19 nParmSets=20
20 tuneIter=5
21 };
22RUN;
23QUIT;
Résultat Attendu :
L'action répartit le travail sur 2 GPUs, explore 20 combinaisons d'hyperparamètres, affine le taux d'apprentissage, le momentum et la taille de lot, puis sauvegarde les poids optimaux dans la table 'best_weights_history'.