neuralNet annTrain

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

Scénario de test & Cas d'usage

Contexto empresarial

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 de fallos, el modelo debe ser actualizado sin reentrenar desde cero para ahorrar tiempo y recursos computacionales.
Sobre el conjunto : neuralNet

Entrenamiento de redes neuronales artificiales clásicas.

Descubrir todas las acciones de neuralNet
Preparación de datos

Crea dos lotes de datos de sensores. El primer lote ('batch_1') representa los datos históricos de entrenamiento. El segundo lote ('batch_2') representa nuevos datos que llegan posteriormente.

¡Copiado!
1DATA maquina_sensores;
2 call streaminit(123);
3 DO lote = 1 to 2;
4 IF lote = 1 THEN num_obs = 5000; ELSE num_obs = 1000;
5 DO i = 1 to num_obs;
6 temperatura = 80 + rand('Normal', 0, 5);
7 vibracion = 5 + rand('Normal', 0, 1.5);
8 presion = 30 + rand('Normal', 0, 2);
9 fallo = 0;
10 IF temperatura > 90 and vibracion > 7 and rand('Uniform') > 0.3 THEN fallo = 1;
11 IF presion < 28 and rand('Uniform') > 0.6 THEN fallo = 1;
12 IF lote = 1 THEN OUTPUT maquina_sensores;
13 ELSE IF lote = 2 THEN OUTPUT maquina_sensores_nuevos;
14 END;
15 END;
16RUN;
17 
18PROC CAS;
19 TABLE.loadTable / caslib='casuser' path='maquina_sensores.sashdat' casOut={name='sensores_batch_1', replace=true};
20 TABLE.loadTable / caslib='casuser' path='maquina_sensores_nuevos.sashdat' casOut={name='sensores_batch_2', replace=true};
21QUIT;

Étapes de réalisation

1
Entrenamiento inicial con el primer lote de datos. Se guardan los pesos del modelo en la tabla 'initial_model_weights'.
¡Copiado!
1PROC CAS;
2 neuralNet.annTrain /
3 TABLE='sensores_batch_1',
4 inputs={'temperatura', 'vibracion', 'presion'},
5 target='fallo',
6 hiddens={15},
7 arch='MLP',
8 nloOpts={maxIters=50, algorithm='LBFGS'},
9 seed=987,
10 casOut={name='initial_model_weights', replace=true};
11RUN;
2
Reanudar el entrenamiento utilizando el segundo lote de datos y los pesos del modelo anterior. El parámetro 'resume=true' es clave.
¡Copiado!
1PROC CAS;
2 neuralNet.annTrain /
3 TABLE='sensores_batch_2',
4 modelTable={name='initial_model_weights'},
5 resume=true,
6 inputs={'temperatura', 'vibracion', 'presion'},
7 target='fallo',
8 hiddens={15},
9 arch='MLP',
10 nloOpts={maxIters=50, algorithm='LBFGS'},
11 seed=987,
12 casOut={name='resumed_model_weights', replace=true};
13RUN;
14QUIT;

Resultado esperado


La primera acción entrena un modelo y guarda sus pesos. La segunda acción carga estos pesos y continúa el proceso de optimización con los nuevos datos. El historial de iteraciones del segundo paso debe comenzar con un nivel de error similar al último nivel de error del primer paso, demostrando que el entrenamiento se reanudó correctamente.