neuralNet

annTrain

L'essentiel
En resumen
Para los profesionales que buscan implementar soluciones de Deep Learning en SAS Viya, la acción annTrain constituye el recurso fundamental del conjunto neuralNet. Su arquitectura está pensada para facilitar el entrenamiento exhaustivo de redes neuronales, permitiendo abordar con solvencia tareas tanto de regresión como de clasificación. Esta herramienta destaca por su versatilidad al admitir estructuras como el perceptrón multicapa, y por incorporar algoritmos de optimización avanzados (como ADAM) que garantizan la calidad del modelo final frente al sobreajuste. A continuación, hemos estructurado un apartado de dudas frecuentes y soluciones prácticas para ayudarle a configurar correctamente la acción y a desplegar sus modelos mediante el código de puntuación SAS.

Descripción

La acción `annTrain` entrena una red neuronal artificial. Permite definir la arquitectura de la red (como MLP, GLIM), especificar las funciones de activación y de combinación, y configurar el proceso de optimización utilizando diversos algoritmos como LBFGS o SGD. Esta acción es fundamental para construir y ajustar modelos de redes neuronales sobre datos en CAS.

neuralNet.annTrain { acts={"EXP"|"IDENTITY"|"LOGISTIC"|"RECTIFIER"|"SIN"|"SOFTPLUS"|"TANH"}, applyRowOrder=TRUE|FALSE, arch="DIRECT"|"GLIM"|"MLP", attributes={{...}, ...}, bias=double, casOut={...}, code={...}, combs={"ADD"|"LINEAR"|"RADIAL"}, delta=double, dropOut=double, dropOutInput=double, errorFunc="ENTROPY"|"GAMMA"|"NORMAL"|"POISSON", freq="variable-name", fullWeights=TRUE|FALSE, hiddens={64-bit-integer-1, ...}, includeBias=TRUE|FALSE, inputs={{...}, ...}, inversePriors=TRUE|FALSE, listNode="ALL"|"HIDDEN"|"INPUT"|"OUTPUT", missing="MAX"|"MEAN"|"MIN"|"NONE", modelId="string", modelTable={...}, nAnns=64-bit-integer, nloOpts={...}, nominals={{...}, ...}, nTries=64-bit-integer, randDist="CAUCHY"|"MSRA"|"NORMAL"|"UNIFORM"|"XAVIER", resume=TRUE|FALSE, samplingRate=double, saveState={...}, scaleInit=64-bit-integer, seed=double, std="MIDRANGE"|"NONE"|"STD", step=double, t=double, table={...}, target="variable-name", targetAct="EXP"|"IDENTITY"|"LOGISTIC"|"SIN"|"SOFTMAX"|"TANH", targetComb="ADD"|"LINEAR"|"RADIAL", targetMissing="MAX"|"MEAN"|"MIN"|"NONE", targetStd="MIDRANGE"|"NONE"|"STD", validTable={...}, weight="variable-name" };
Parámetros
ParámetroDescripción
acts Especifica la función de activación para las neuronas en cada capa oculta.
applyRowOrder Especifica que la acción debe utilizar un orden de filas preespecificado.
arch Especifica la arquitectura de red que se va a entrenar (por ejemplo, MLP para Perceptrón Multicapa).
attributes Especifica atributos temporales, como un formato, para aplicar a las variables de entrada.
bias Especifica un valor de sesgo fijo para todas las neuronas ocultas y de salida.
casOut Especifica la tabla de salida donde se guardará el modelo entrenado.
code Solicita que la acción produzca código de puntuación SAS DATA step.
combs Especifica la función de combinación para las neuronas en cada capa oculta.
delta Especifica el parámetro de recocido al realizar una optimización global de recocido simulado (SA).
dropOut Especifica la tasa de dropout para las capas ocultas, útil para la regularización.
dropOutInput Especifica la tasa de dropout para las capas de entrada.
errorFunc Especifica la función de error para entrenar la red (por ejemplo, ENTROPY para clasificación, NORMAL para regresión).
freq Especifica una variable numérica que contiene la frecuencia de ocurrencia de cada observación.
fullWeights Genera el modelo de pesos completo para el optimizador LBFGS.
hiddens Especifica el número de neuronas ocultas para cada capa oculta en el modelo.
includeBias Indica si se deben incluir parámetros de sesgo para las unidades ocultas y de salida.
inputs Especifica las variables de entrada a utilizar en el análisis.
inversePriors Calcula el peso aplicado al error de predicción de cada variable objetivo nominal.
listNode Especifica los nodos a incluir en la tabla de salida generada por el código de puntuación.
missing Especifica cómo imputar los valores faltantes para las variables de entrada.
modelId Especifica un nombre de variable de ID de modelo que se incluye en el código de puntuación DATA step generado.
modelTable Especifica la tabla que contiene un modelo de red neuronal artificial para inicializar los pesos.
nAnns Especifica el número de redes a seleccionar entre el número especificado de intentos.
nloOpts Especifica las opciones de optimización no lineal.
nominals Especifica las variables de entrada y objetivo nominales a utilizar en el análisis.
nTries Especifica el número de intentos al entrenar redes con pesos iniciales aleatorios.
randDist Especifica las distribuciones para generar aleatoriamente los pesos iniciales de conexión de la red.
resume Reanuda una optimización de entrenamiento utilizando los pesos obtenidos de un entrenamiento anterior.
samplingRate Especifica la fracción de los datos a utilizar para construir una red neuronal.
saveState Especifica la tabla en la que se guardará el estado del modelo para futuras predicciones.
scaleInit Especifica cómo escalar los pesos iniciales.
seed Especifica la semilla de número aleatorio para generar números aleatorios para inicializar los pesos de la red.
std Especifica la estandarización a utilizar en las variables de intervalo.
step Especifica un tamaño de paso para las perturbaciones en los pesos de la red al realizar optimizaciones globales.
t Especifica el parámetro de temperatura artificial al realizar optimizaciones globales.
table Especifica la tabla de entrada que contiene los datos de entrenamiento.
target Especifica la variable objetivo o de respuesta para el entrenamiento.
targetAct Especifica la función de activación para las neuronas en la capa de salida.
targetComb Especifica la función de combinación para las neuronas en los nodos de salida objetivo.
targetMissing Especifica cómo imputar los valores faltantes para la variable objetivo.
targetStd Especifica la estandarización a utilizar en las variables objetivo de intervalo.
validTable Especifica la tabla con los datos de validación para la detención temprana.
weight Especifica una variable para ponderar los errores de predicción para cada observación durante el entrenamiento.
Creación de Datos de Ejemplo

Este código carga el conjunto de datos `iris` de la librería `sashelp` en una tabla CAS llamada `mycas.iris`. Este conjunto de datos se utilizará para los ejemplos de entrenamiento de redes neuronales.

¡Copiado!
1DATA mycas.iris;
2 SET sashelp.iris;
3RUN;

Ejemplos

Este ejemplo entrena un Perceptrón Multicapa (MLP) simple para clasificar las especies en el conjunto de datos `iris`. Utiliza una capa oculta con 10 neuronas. El modelo entrenado se guarda en la tabla `ann_model`.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 ACTION neuralNet.annTrain /
3 TABLE={name='iris', caslib='mycas'},
4 inputs={'SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'},
5 target='Species',
6 hiddens={10},
7 casOut={name='ann_model', caslib='mycas', replace=true};
8RUN;
9QUIT;
Resultado :
La acción entrena el modelo y genera varias tablas de resultados, incluyendo 'OptIterHistory' que muestra el historial de optimización, 'ModelInfo' con detalles del modelo, y 'OutputCasTables' que lista la tabla de salida del modelo guardado.

Este ejemplo entrena una red neuronal más compleja. Estandariza las variables de entrada usando el método 'MIDRANGE'. Utiliza una tabla de validación (`valid_data`) para la detención temprana. La arquitectura es un MLP con dos capas ocultas. Se utiliza el optimizador LBFGS con regularización L1 y se guardan tanto el modelo como el estado de la optimización.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 partition.partition TABLE={name='iris', caslib='mycas'}, partInd={name='_partInd_', label='Partition Indicator'}, sampPct=70, sampPct2=30, seed=123;
3 ACTION TABLE.partition / TABLE={name='iris', caslib='mycas', where='_partInd_=1'}, casOut={name='train_data', caslib='mycas', replace=true};
4 ACTION TABLE.partition / TABLE={name='iris', caslib='mycas', where='_partInd_=2'}, casOut={name='valid_data', caslib='mycas', replace=true};
5 ACTION neuralNet.annTrain /
6 TABLE={name='train_data', caslib='mycas'},
7 validTable={name='valid_data', caslib='mycas'},
8 inputs={'SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'},
9 target='Species',
10 arch='MLP',
11 hiddens={20, 15},
12 acts={'TANH', 'RECTIFIER'},
13 targetAct='SOFTMAX',
14 errorFunc='ENTROPY',
15 std='MIDRANGE',
16 nloOpts={algorithm='LBFGS', regL1=0.005, maxIters=200, printOpt={printFreq=10}},
17 casOut={name='ann_model_detailed', caslib='mycas', replace=true},
18 saveState={name='ann_state', caslib='mycas', replace=true};
19RUN;
20QUIT;
Resultado :
El modelo se entrena utilizando el 70% de los datos y se valida con el 30% restante. El historial de iteraciones mostrará la convergencia del optimizador LBFGS. Las tablas de salida incluirán el modelo detallado (`ann_model_detailed`) y el estado del optimizador (`ann_state`), que puede ser usado para reanudar el entrenamiento.

FAQ

¿Cuál es el propósito de la acción `annTrain` en SAS Viya?
¿Qué especifica el parámetro `arch` en la acción `annTrain`?
¿Cómo se definen las capas ocultas y el número de neuronas en un modelo `annTrain`?
¿Qué funciones de error se pueden utilizar para entrenar la red con `annTrain`?
¿Es posible reanudar un entrenamiento de red neuronal previamente guardado?
¿Cómo se puede especificar una tabla de validación y para qué sirve en `annTrain`?

Escenarios asociados

Caso de uso
Predicción de Fuga de Clientes con Datos de Validación

Una empresa de telecomunicaciones desea predecir qué clientes tienen una alta probabilidad de cancelar su suscripción (churn). El objetivo es entrenar un modelo de red neuronal ...

Caso de uso
Reanudación de Entrenamiento para Modelo de Detección de Anomalías

Una planta de fabricación utiliza sensores para monitorear el estado de sus máquinas. Se entrena un modelo inicial para predecir fallos. A medida que se recopilan nuevos datos d...

Caso de uso
Manejo de Valores Faltantes y Ponderación de Observaciones

Un hospital está analizando datos de pacientes para predecir la probabilidad de reingreso. Los datos clínicos a menudo están incompletos (valores faltantes) y algunos pacientes,...