#10 Optimizaciones, la ruta a una mejor toma de decisiones.

  • Autor de la entrada:
En este momento estás viendo #10 Optimizaciones, la ruta a una mejor toma de decisiones.
Imagen de cacaroot de Getty Images Pro en Canva

Tiempo estimado de lectura: 11 minutos.

¡Buenos días y buenos datos!

Hoy utilizamos las matemáticas para elegir los mejores escenarios.

La optimización real es la contribución más revolucionaria de la investigación moderna para los procesos de decisión.

George Dantzing. Padre de la programación lineal

Aparte de proporcionar de una manera científica y sin los sesgos particulares de cada uno, cuáles son las mejores opciones para la toma de decisiones de negocio, los procesos de optimización están en el centro del desarrollo de la inteligencia artificial.

Son los algoritmos que la mayor parte de los modelos de analítica avanzada utiliza para seleccionar los mejores parámetros en sus procesos de entrenamiento y aprendizaje de los datos.

Sin las optimizaciones no hubiera sido posible avanzar en el aprendizaje automático. ¿Empezamos?

¿Qué es una optimización?

Gráfico de un paraboloide paraboloide dado por f(x,y) = -(x²+y²)+4. El máximo global en (0, 0, 4) está indicado por un punto rojo. Original de Sam Derbyshire de Wikipedia en inglés

Según Wikipedia:

En el caso más simple, un problema de optimización consiste en maximizar o minimizar una función real eligiendo sistemáticamente valores de entrada (tomados de un conjunto permitido) y computando el valor de la función.

En resumen, un problema de optimización consiste en una función del tipo: y = f(xi) donde el problema a resolver es encontrar las «xi«que maximizan o minimizan el valor de la «y».

Las optimizaciones son muy utilizadas en aprendizaje automático ya que se usan para optimizar hiperparámetros o parámetros que minimizan las funciones de pérdida de otros modelos como regresiones lineales, logísticas, k-means o redes neuronales.

Podríamos decir que es una «superfunción» que aplica sobre el resto de algoritmos para conseguir los mejores resultados.

Las optimizaciones te ayudan a decidir la mejor inversión o gasto para tu objetivo de rentabilidad

Por otro lado, las optimizaciones también se utilizan para resolver problemas de negocio cuando queremos elegir el mejor escenario entre varios disponibles.

Por ejemplo, una empresa de telecomunicaciones utilizaría optimizadores para decidir:

  • Cual es la opción de inversión en despliegue de red móvil necesaria para maximiza el RoI (Retorno de Inversión) generado por dicha inversión
  • Para un gasto publicitario dado, una optimización serviría para seleccionar el reparto del gasto entre canales publicitarios que genera un mayor número de ventas.

En general, todos los problemas que buscan la mejor inversión o gasto para un objetivo de rentabilidad concreto, son de este tipo.

El método de Descenso por Gradiente

Los métodos de optimización más comunes son los de descenso por gradiente que se basan en derivadas.

El punto mínimo o máximo de una curva es aquel donde la inclinación de la tangente (o derivada) de la curva en ese punto es cero.

Un ejemplo para ilustrarlo de manera sencilla lo vemos en la imagen donde la tangente (línea roja) es la derivada de la salida «y» con respecto a una única variable de entrada «x».

¿Derivada o gradiente?

Se llama gradiente cuando tenemos 2 o más variables de entrada y por tanto tendremos varias derivadas de la función. Como lo habitual en cualquier problema de aprendizaje automático es tener mucho datos o características, de ahí el nombre de esta técnica.

¿Cómo funciona?

El método de descenso por gradiente consiste en calcular derivadas a lo largo de los diferentes puntos de la función que se quiere optimizar hasta que:

  • O alcanza convergencia que ocurre donde la inclinación de la tangente es cercana a cero.
  • O finaliza un número máximo de iteraciones.

Es por tanto un proceso iterativo donde los parámetros a configurar son: el número máximo de iteraciones a realizar y una velocidad de aprendizaje (learning rate) que determina cómo de rápido movemos la tangente o gradiente a lo largo de la curva.

Ventajas y desventajas del Descenso por Gradiente

Es una técnica rápida y sencilla pero si el conjunto de datos es muy grande puede llegar a ser muy costoso computacionalmente. En estos casos hay procesos como el descenso de gradiente estocástico o en mini-bloques (mini-batches) donde en lugar de calcular el gradiente sobre todo el conjunto de entrada, cada iteración se calcula sobre una muestra de datos seleccionada aleatoriamente.

Otras complicaciones que nos podemos encontrar cuando resolvemos un problema de optimización son:

  • Mínimos locales: las funciones se pueden complicar tanto que tengan varios mínimos o máximos locales donde podemos llegar a caer y nos pueden hacer creer que hemos llegado al mínimo o máximo global.
  • Convergencia muy lenta: si los componentes del gradiente son muy pequeños, cercanos a cero, las iteraciones serán muy pequeñas. Esto resulta en un proceso de convergencia muy lento.
  • Diferentes inclinaciones para una misma velocidad de aprendizaje en la iteración. Esto también ralentiza el proceso.
  • Puntos de silla o saddle points: puntos en el gradiente de la función donde todos los componentes del gradiente son cercanos a cero. Llegamos a un punto de bloqueo.
  • O simplemente que directamente no podamos calcular la función derivada. Normalmente los algoritmos que usan información derivada son más rápidos y eficientes pero puede que la función se complique mucho y no sea posible calcularla.

Para resolver estos problemas hay otros algoritmos de optimización en los que no voy a entrar:

  • Momentum, Adagrad, Adam etc,… que usan información derivada
  • Algoritmos poblacionales, algoritmos genéticos para situaciones donde no se pueda utilizar la información derivada

Si quieres información más detallada sobre las diferentes alternativas, te recomiendo leer este artículo de Jason Brownlee.

Y hasta aquí por el momento. ¿Qué te ha parecido? ¿Has aprendido algo nuevo? Espero haberte ayudado un poquito y si te ha gustado, compártelo en redes y dímelo en comentarios.

Nos vemos en las siguientes entregas de «La época de la información» con recomendadores y sistemas de aprendizaje vía grafos pero mientras, te dejo unos artículos y vídeos sobre este tema.

Bibliografía y referencias

Nota: recuerda que si el vídeo está en inglés, Youtube facilita la traducción simultanea a otro idioma. Para activar la traducción simultanea al español, sigue estos pasos: ¿Cómo activar la traducción simultanea en Youtube?