¿Por qué no es posible entrenar una red neuronal profunda con una precisión del 100%?

Esta es una respuesta derivada del popular libro Deep Learning de Ian Goodfellow, Yoshua Bengio y Aaron Courville (varios nombres respetados en el campo).

Por “100% de precisión”, supongo que está hablando de la precisión de la prueba – el rendimiento de su modelo en datos que fueron excluidos de la capacitación. Lograr una precisión de entrenamiento del 100% es trivial: ¡solo crea un modelo que memorice cada ejemplo de entrenamiento! Sin embargo, dicho modelo no sería útil, ya que sería incapaz de generalizar a ejemplos no vistos (por ejemplo, los datos de la prueba).

La respuesta principal

La mayoría de los procesos en este mundo pueden modelarse razonablemente como estocásticos. Por ejemplo, podemos modelar el tiempo que lleva cepillarse los dientes todas las mañanas como una variable aleatoria que sigue alguna distribución de probabilidad. Existe incertidumbre sobre el tiempo que lleva cepillarse los dientes: algunos días pueden demorar 3 minutos y otros días pueden demorar 15 minutos (porque tropezó con su gato y también tuvo que amamantar un moretón nuevo).

Los datos solo describen el mundo que nos rodea. En consecuencia, podemos pensar en la mayoría de los datos como aleatorios, generados por una distribución de probabilidad ruidosa. Un modelo de aprendizaje automático intenta aprender esta distribución subyacente generadora de datos. El modelo ideal sería uno que comprenda perfectamente esta distribución. Sin embargo, debido a que hay (probablemente) algo de ruido en la distribución, incluso un modelo tan ideal a veces cometería errores. Esto se llama Bayes Error .

Por supuesto, con un conjunto de prueba lo suficientemente pequeño, es posible una precisión del 100%. Sin embargo, a medida que continúe agregando más y más muestras de prueba, es probable que su modelo comience a cometer algunos errores debido a las razones explicadas anteriormente.

Porque cuando entrenas una red neuronal, interpolas una función hipotética. Es decir, existe una función hipotética [math] h (a_i) = b_i [/ ​​math] para cualquier valor real de [math] i [/ math] que no tiene forma matemática absoluta y usted entrena su red, que es simple a conjunto de pesos, veranos, multiplicadores y filtros, para interpolar la función [math] h [/ math]. Sin embargo, nunca puede obtener una precisión del 100%, ya que no hay un sistema real que actúe de manera tan consistente. Para elaborar, no existe una función en el universo conocido que proporcione siempre los resultados esperados. Por supuesto, ignoro las funciones matemáticas que son como [matemática] y = [/ matemática] [matemática] x ^ 2 [/ matemática] etc. Por cierto, con suficientes datos, podría entrenar un NN que le dé la suma de dos números, es decir, [matemáticas] f (a, b) = a + b [/ matemáticas]. [Matemáticas] [/ matemáticas]

es posible. sin embargo, esto depende completamente del conjunto de datos subyacente y la arquitectura del modelo.

Al entrenar una red, está ajustando una función que simplemente recibe datos y hace una predicción. por lo tanto, no es demasiado difícil tallar esa función de tal manera que se ajuste perfectamente a sus datos de prueba.

así que es posible alcanzar el 100% de precisión … pero no es lo ideal. Es probable que los modelos con ese nivel de precisión estén demasiado ajustados al conjunto de prueba, suponiendo que el problema sea relativamente complejo.

Recuerde que tener una precisión del 100% probablemente indica sobre aprendizaje / sobre ajuste. La idea es extraer un patrón de los datos de entrenamiento para que pueda tener un rendimiento predictivo decente en una entrada invisible. Cien por ciento de precisión podría significar solo una memorización del conjunto de entrenamiento y resultar en una generalización deficiente.

Con suficientes nodos y capas, es posible aumentar la precisión arbitrariamente. Pero no es necesariamente algo bueno.

A menudo digo: el verdadero desafío en el aprendizaje automático no es aprender, sino descubrir qué no aprender.

Esto solo es cierto si el dominio del problema es suficientemente complejo. Para problemas simples, es posible entrenar una red neuronal profunda para que sea 100% precisa. Por ejemplo, si el problema es decidir si la foto es de un as de espadas o una jota de corazones y el dominio del problema consiste solo en fotos de cualquiera de las tarjetas (tomadas con la misma cámara en las mismas condiciones), 100% de precisión es ciertamente realizable.

A medida que mejora la tecnología de aprendizaje profundo, aumentará el nivel de complejidad donde se puede lograr una precisión del 100%. Las redes neuronales ya han excedido la precisión humana en numerosos dominios problemáticos y definitivamente hay dominios problemáticos no triviales en los que los humanos pueden alcanzar el 100% de precisión. 😎

Porque siempre hay algunas excepciones que no puedes encontrar en tus datos de entrenamiento. Si existen esas excepciones, o valores fuera de rango, que se encuentran en sus datos de entrenamiento, puede ser posible hacer un modelo de alta precisión, pero en muchos casos, eso es demasiado adecuado.

También es porque la red neuronal es solo una aproximación de los datos reales. La red neuronal puede estar tan cerca de inferir datos reales, pero es solo una emulación del cerebro humano, y el cerebro humano no siempre es 100%.

¿Por qué no es posible entrenar una red neuronal profunda con una precisión del 100%?

En su conjunto de entrenamiento, es fácil de hacer.

Es solo una mala idea, ya que probablemente significa que has superado el resultado.

Esto significa que cuando lo prueba, puede estar muy lejos del 100%.