Particularmente en el contexto de las competencias de kaggle, he notado que el rendimiento del modelo tiene que ver con la selección de características / ingeniería. Si bien puedo entender completamente por qué sucede esto cuando se trata de los algoritmos ML más convencionales / de la vieja escuela, no veo por qué este sería el caso cuando se usan redes neuronales profundas.
Citando el libro Deep Learning:
El aprendizaje profundo resuelve este problema central en el aprendizaje de la representación mediante la introducción de representaciones que se expresan en términos de otras representaciones más simples. El aprendizaje profundo permite a la computadora construir conceptos complejos a partir de conceptos más simples.
Por lo tanto, siempre pensé que si "la información está en los datos", una red neuronal suficientemente profunda y bien parametrizada recogería las características correctas dado el tiempo de entrenamiento suficiente.
Respuestas:
¿Qué sucede si la red "suficientemente profunda" es intratablemente enorme, ya sea haciendo que la capacitación del modelo sea demasiado costosa (las tarifas de AWS se suman) o porque necesita implementar la red en un entorno con recursos limitados?
¿Cómo puede saber, a priori, que la red está bien parametrizada? Puede llevar mucha experimentación encontrar una red que funcione bien.
¿Qué sucede si los datos con los que está trabajando no son "compatibles" con los métodos de análisis estándar, como una cadena binaria que comprende miles o millones de bits, donde cada secuencia tiene una longitud diferente?
¿Qué sucede si le interesan los datos a nivel de usuario, pero se ve obligado a trabajar con una base de datos que solo recopila datos a nivel de transacción?
Nos gustaría vivir en un mundo donde el análisis de datos es "llave en mano", pero este tipo de soluciones generalmente solo existen en casos especiales. Se trabajó mucho para desarrollar CNN profundos para la clasificación de imágenes: el trabajo previo tuvo un paso que transformó cada imagen en un vector de longitud fija.
La ingeniería de características le permite al profesional transformar directamente el conocimiento sobre el problema en un vector de longitud fija susceptible de redes de retroalimentación. La selección de características puede resolver el problema de incluir tantas características irrelevantes que cualquier señal se pierde, así como reducir drásticamente el número de parámetros para el modelo.
fuente
Las palabras claves aquí son priores y escala . Como un simple ejemplo, imagine que está tratando de predecir la edad de una persona a partir de una fotografía. Con un conjunto de datos de imágenes y edades, puede entrenar un modelo de aprendizaje profundo para hacer las predicciones. Esto es objetivamente realmente ineficiente porque el 90% de la imagen es inútil, y solo la región con la persona es realmente útil. En particular, la cara de la persona, su cuerpo y tal vez su ropa.
Por otro lado, podría usar una red de detección de objetos previamente capacitada para extraer primero los cuadros delimitadores para la persona, recortar la imagen y luego pasarla a través de la red. Este proceso mejorará significativamente la precisión de su modelo por varias razones:
1) Todos los recursos de la red (es decir, los pesos) pueden centrarse en la tarea real de predicción de edad, en lugar de tener que buscar primero a la persona. Esto es especialmente importante porque la cara de la persona contiene características útiles. De lo contrario, las características más finas que necesita pueden perderse en las primeras capas. En teoría, una red lo suficientemente grande podría resolver esto, pero sería lamentablemente ineficiente. La imagen recortada también es considerablemente más regular que la imagen original. Mientras que la imagen original tiene un montón de ruido, es discutible que las discrepancias en la imagen recortada estén mucho más correlacionadas con el objetivo.
2) La imagen recortada se puede normalizar para tener la misma escala . Esto ayuda a la segunda red a lidiar con problemas de escala, porque en la imagen original, las personas pueden ocurrir cerca o lejos. La normalización de la escala de antemano hace que se garantice que la imagen recortada tenga una persona que llene toda la imagen recortada (a pesar de estar pixelada si estuvieran muy lejos). Para ver cómo esto puede ayudar a escalar, un cuerpo recortado que tiene la mitad del ancho y la altura de la imagen original tiene 4x menos píxeles para procesar, y por lo tanto, la misma red aplicada a esta imagen tendría 4x el campo receptivo de la red original en cada capa.
Por ejemplo, en la competencia del pulmón kaggle, un tema común en las principales soluciones fue algún tipo de preprocesamiento en imágenes pulmonares que las recortó tanto como fue posible y aisló los componentes de cada pulmón. Esto es especialmente importante en las imágenes en 3D ya que el efecto es cúbico: al eliminar el 20% de cada dimensión, ¡elimina casi la mitad de los píxeles!
fuente
Mi intuición sobre este fenómeno está relacionada con la complejidad del modelo que se debe aprender. Una red neuronal profunda puede aproximarse a cualquier función en teoría , pero la dimensión del espacio de parámetros puede ser realmente grande, como en millones. Por lo tanto, encontrar una buena red neuronal es realmente difícil. Me gusta pensar en la ingeniería de características como una ventaja para el algoritmo, proporcionándole información adicional con respecto a la representación de datos que es lo suficientemente buena en cierto sentido. Por supuesto, esta no es una explicación formal, esta pregunta podría ser realmente difícil de responder con rigor científico.
fuente