Introducción
La Inteligencia Artificial es un área de las ciencias de la computación cuyo objetivo es desarrollar programas y máquinas capaces de aprender y resolver problemas como lo haría un humano. Dentro de esta área destaca el concepto de Machine Learning, que se agrupa una serie de modelos que permiten a las máquinas aprender y mejorar de forma automática, sin necesidad de ser explícitamente programadas. En este contexto, Deep learning es un subconjunto de modelos de machine learning, cuya estructura fue inspirada en las conexiones neuronales del cerebro humano.
Se dice que Machine Learning es una rama de la inteligencia artificial que desarrolla algoritmos matemáticos que permiten a los computadores aprender. En la jerga de la disciplina, aprender significa que los algoritmos son capaces de generar predicciones—a partir de una muestra de datos—que sean generalizables, es decir, que sean válidas para nuevos datos, distintos a los utilizados para entrenar el modelo (entrenar un modelo significa estimar los parámetros del modelo o ajustar el modelo a los datos).
Por qué predecir demasiado bien es un problema
En los modelos matemáticos que subyacen tras los algoritmos de machine learning, se asume que los datos son generados por una función que tiene un componente aleatorio. Es por ello que no debería ser posible obtener una regresión con error igual a cero, ya que el componente aleatorio es por definición impredecible.
Los modelos de machine learning se optimizan de forma de minimizar una función de error, lo que implica que, en muchas ocasiones, se produzca un sobreajuste a los datos de entrenamiento (overfitting), lo que significa que el modelo está identificando y prediciendo patrones propios del componente aleatorio de los datos.
Si luego usamos dicho modelo para hacer predicciones con un nuevo conjunto de datos, el error de predicción será significativamente mayor al obtenido previamente, ya que la parte aleatoria de los nuevos datos no será igual a la que observamos en los datos de entrenamiento.
Entendiendo el sobreajuste con un ejercicio de simulación
Sea una variable dependiente x, que usamos para generar una variable y mediante una función lineal: , donde e es una variable aleatoria distribuida normalmente y con media igual a cero.
Suponga que queremos hacer una predicción de y, y que no conocemos la función que generó los datos. Dado que los datos son continuos es razonable abordar este problema mediante una regresión lineal.
Luego de probar varias formas funcionales, podríamos llegar a la conclusión de que es el mejor modelo para predecir y, ya que es el que genera el error menor de predicción entre todos los modelos usados.
Sin embargo, dado que los datos fueron generados por una función lineal, podemos decir que en este caso estaría siendo una aproximación de e, el componente aleatorio. Al estar modelando dicho componente estaríamos obteniendo un menor error de predicción que si hubiéramos ajustado la función , que es la verdadera función generadora de datos (lo que no debería ocurrir). Por lo tanto, en dicha situación estaríamos sobreajustando el modelo.
También puede ocurrir que haya un subajuste del modelo, que se produce cuando el modelo no es capaz de explicar bien la variabilidad de los datos, debido a que es demasiado simple como para capturar la complejidad de las relaciones y patrones en los datos.
El problema de optimización de modelos de machine learning consiste en elegir un modelo que sea lo suficientemente simple como para no producir sobreajuste, pero no tan simple como para caer en el subajuste. Generalmente, el principal aspecto de este problema es el sobreajuste: determinar cuánto ajuste es suficiente, ya que fácilmente podemos aumentar la complejidad de un modelo, por ejemplo, añadiendo variables adicionales.
Los malos modelos memorizan en lugar de aprender
Podemos hacer una analogía del proceso de machine learning con el proceso de aprendizaje humano. Imagina que debes estudiar para una prueba de una materia para la cual no tienes conocimientos, pero tienes un libro con ejercicios resueltos para aprender (los datos de entrenamiento).
Puedes estudiar (entrenar) de dos maneras. La primera es memorizar los ejercicios, de forma tal que, si te evalúan con los mismos ejercicios, puedas responder sin problemas. Sin embargo, si te evalúan con un ejercicio nuevo, que no memorizaste, serías incapaz de responder. De la misma manera, un algoritmo sobreajustado se desempeña mal al predecir con datos que no ha visto antes.
La segunda estrategia es aprender la mecánica de los ejercicios. No simplemente memorizarlos, sino comprender realmente cómo se resuelven los ejercicios. Para esto podrías entrenar con una parte de los ejercicios (conociendo las respuestas) y reservar otra parte para evaluar qué tanto has aprendido, sin ver las soluciones. Esta misma estrategia se usa para entrenar modelos de machine learning, al separar los datos en un set de entrenamiento y otro de testeo, lo que permite que los algoritmos aprendan en lugar de memorizar.
Cuando se dice que los modelos de machine learning “aprenden”, no se trata de un concepto publicitario cuyo objetivo es posicionar estos modelos como una tecnología avanzada relacionada con la inteligencia artificial, sino que el aprendizaje efectivamente ocurre. Estamos en presencia de aprendizaje cuando un algoritmo es capaz de analizar un conjunto de datos generados con una función desconocida, y producir una función matemática que se asemeje a dicha función, generando predicciones generalizables; en otras palabras, buenas predicciones, tanto para los datos de entrenamiento como para nuevos conjuntos de datos.