Estás combinando dos términos aquí.
Verificación: prueba de la corrección de la implementación de su software
Validación: prueba si el modelo hace predicciones correctas
- ¿Cuál es la diferencia entre traducción automática y memoria de traducción?
- Quora: ¿Se volverá sensible la base de datos de Quora?
- ¿Cómo depende IoT de la IA?
- Después de aprender Python, ¿cómo aprendo el aprendizaje automático / IA?
- ¿Cuándo comenzará a ver el mundo la eficacia de la IA y en qué dominios será prominente?
La validación generalmente se aborda en el aprendizaje automático al dividir el conjunto de datos en fragmentos y entrenar en una pieza, y luego evaluar la bondad del ajuste en la otra pieza (o piezas). Esta es una prueba cruda de validación sensata, y a menudo se conoce como ‘validación cruzada’. Consulte la discusión en el capítulo 5 del texto de Goodfellows, ‘Aprendizaje profundo‘ sobre el error de generalización para obtener más información sobre este tipo de caracterización.
Su pregunta, sobre la exactitud del código del software, es de verificación . Los principales marcos de software (tensorflow, theano, caffe, etc.) tienen conjuntos sólidos de pruebas de regresión que proporcionan cierto nivel de confianza en que el software se implementa correctamente. Si está codificando el software usted mismo, desafortunadamente es difícil saber si el bajo rendimiento se debe a su selección de hiperparámetros, problemas en el algoritmo en sí mismo o un error en su implementación.
En general, nada supera los cálculos realizados a mano (por ejemplo, independientemente del software para las unidades base de la implementación). Por ejemplo, dada una entrada particular a una sola neurona, uno puede verificar que la salida del software sea correcta. Se pueden realizar cálculos similares para varias piezas del software en diferentes capas de granularidad. Idealmente, estas verificaciones de cálculo deben codificarse y ejecutarse periódicamente como pruebas unitarias .
Probar el acoplamiento entre estos bloques de construcción es más difícil. Para esto, la mejor solución suele ser volver a crear una red conocida con un perfil de error conocido y probar que la implementación actual está cerca del error conocido. Debido al redondeo de punto flotante y a las diferentes arquitecturas de hardware, versiones de software, etc., no se espera que el error sea idéntico, pero normalmente se puede verificar que no difiere en más de un pequeño porcentaje y detecta muchos errores.
La otra pieza crítica para verificar (ya que son propensos a errores) es el cálculo de derivados para la retropropagación. Esto se detalla bien en el capítulo 11 del texto de Goodfellows. La esencia es calcular derivadas numéricas (usando diferencias finitas) y compararlas con las calculadas por software. Una alternativa muy rápida es calcular los derivados utilizando un software alternativo, como SymPy, Mathematic