Vistas de página en total

domingo, 13 de septiembre de 2020

Introducción al Machine Learning

 Para lo que sigue diremos que un algoritmo es inteligente cuando para una determinada tarea el algoritmo mejora (en base a una cierta métrica) a medida que incorpora experiencia, en el sentido de que conoce de antemano los resultados de una cantidad finita de situaciones/ejemplos/input.

En la misma linea podremos caracterizar la acción de aprender como la suma de 3 sub acciones:

 i) la representación de las características relevantes del problema, ii) identificar el objetivo(función) y como se evalúan las características sobre este, iii) obtener una técnica de optimización que permita dentro de sus capacidades minimizar el error. 

Notar que si bien estamos reduciendo el problema a optimizar, este no es un problema clásico pues no conocemos la función que queremos a optimizar, de hecho una parte fundamental del proceso es ii)  consiste en encontrarla. Sin embargo, considerar que existe probabilidad de encontrar un mínimo a través de una simple heuristica de escoger siempre lo que más convenga.

Por supuesto bajo esta definición y siguiendo el sentido de la intución memorizar no es a priori inteligente, un ejemplo de aquello y clásico error es testear o mediar la eficiencia del algoritmo en base de la misma data de entrenamiento o experiencia, creando la ilusión de éxito. Por otro lado también hay que tener cuidado con la data de testeo pues si sobreajustamos el algoritmo de forma de que mejore su efectividad para cierta prueba estaremos perjudicando a futuro su rendimiento ante nuevos desafíos, intuitivamente entre más pruebas significativa o de calidad tengas mejor aprenderás, este problema suele ser solucionado dividiendo aleatoriamente la data de testeo, en por ejemplo 20 subconjuntos de forma que el modelo se ajusta de diferentes formas y luego se promedia los resultados de los parámetros encontrados, a esto se le llama cross-validation.

Ya comprenderás que el objetivo es simular la acción de inferir o generalizar. El factor creatividad parece ser subjetivo por tanto se deja a espera de formulación.

Ha quedado claro que la experiencia o la data es importante, sin embargo no es suficiente. Por ejemplo piensa en querer predecir el resultado de una función boolena dado cien características por experimento, entonces aunque tuvieses un millón de experiencias te faltaría dos a la cien menos un millón de clases por conocer ejemplos. A falta de información no existe opción alguna de predecir la clase tirando una monea al aire. Concluimos que todo algoritmo necesita de alguna suposición extra a los datos para lograr generalizar, aquí se habla de los no free lunch theorems los cuales establecen que ningún algoritmo podrá lidiar con las posibles adivinanzas aleatorias sobre todas las posibles funciones posibles que logren aprender. En otras palabras para un problema de optimizacion que consista en encontrar una función de densidad de probabilidad no existirá ningún algoritmo que ofrezca un atajo, osea que cualquier par de algoritmos de optimizacion serán equivalentes si promediamos su rendimientos sobre todo el espacio de problemas posibles. Notar entonces que si un algoritmo de optimización es mejor para cierta tarea eso implica que será peor para otro problema, i.e aquí no existe una solución celestial.

Pensar en encontrar una función dentro del espacio de funciones matemáticas parece una tarea abrumadora, pero tener en cuenta que de forma natural buscamos funciones suaves en el sentido de que ejemplos parecidos presenten respuestas parecidas, esto acota enormemente el espacio de hipótesis. Además, un programa nace de la combinación de data y conocimiento extra del problema a trabajar por el algoritmo.

A la hora de evaluar el rendimiento de un algoritmo de manera general aparecen dos fenómenos el overtefitting o sobre ajustes, este sucede cuando el algoritmo presenta alta varianza puede aprender bien con el entrenamiento pero rendir mal ante nuevas situaciones. También esta el underfitting que se presenta cuando existe alto bias o sesgo es decir la experiencia no fue lo suficientemente buena como para aprender lo deseado y se aprendió otra cosa parecida.

Contrario a la intuición un algoritmo inteligente más útil no es necesariamente mejor.

Otra forma que se manifiesta el sobreajuste es cuando la data presenta ruido, en el sentido de mala experiencia o en un problema de clasificación ejemplos etiquetados erróneamente, por ellos una mejor practica es controlar una fracción de falso aceptados como hipótesis nula conocido usualmente como false discovery rate.

Para combatir el usual sobreajuste se usa crossvalidation o añadiendo términos de regularización en la función de evaluación o midiendo el rendimiento de significación de añadir estructura con un test estadístico como el chi cuadrado sobre todo cuando la data es escasa. Sin embargo usualmente arreglar el sobreajuste significa generar mayor sesgo por tanto la armonía entre ambos será definitivamente lo buscado.

Otro problema que se presenta en la práctica es la pérdida de la intuición en alta dimensionalidad.  Por ejemplo si tratamos de aproximar un hipercubo a través de una hiper esfera inscrita se puede demostrar que la mayoría del volumen del hiper cubo queda fuera de la hiper esfera, entonces como nuestro espacio de características será aquel cubo, si entrenamos nuestro modelo con datos cercanos al promedio (centroide) al añadir nueva data de testeo será cada vez más probable que caigan fuera de la zona de entrenamiento y si queremos compensar con más data de entrenamiento esta crece exponencialmente.

Un cubo de 8 dimensiones tiene 2^8=256 esquinas.

 La mayoría de algoritmos rinde mejor en bajas dimensiones y en altas se vuelve incluso intratable. Para manejar esto se vuelve fundamental la practica de la llamada ingeniería de características que consiste en analizar entre ellas las realmente importantes para el problema. Por lo que nuevamente el machine learning atenta en contra la intuición, considerar información extra como hipótesis optimista no necesariamente mejora el rendimiento. Aunque si lo pensamos bien con nuestra definición de inteligencia ¿Será más eficiente para lograr una tarea aquel que tiene demasiada información? que no es relevante o mínimamente lo es, probablemente las posibilidades a confundirse aumentan. Para solucionar los problemas de alta dimensionalidad usualmente se utilizan algoritmos de reducción.

Uno de los mayores avances de la reciente década tiene que ver con encontrar cotas de ejemplos mínimos que garanticen el rendimiento, es decir tenemos garantías probabilísticas de que el pensamiento inductivo funcione. Usualmente estas cotas son poco útiles, a veces del orden doble exponencial de las características sin embargo garantizan que la probabilidad de que el modelo produzca un clasificador incorrecto disminuye a medida que aumenta el tamaño del conjunto de entrenamiento. Consecuencia de esto es que un peor algoritmo mejor entrenado (con mucha cantidad de datos) supera a uno mejor poco entrenado. 

La clave está en la ingeniería de característica, con esto nos referimos a las técnicas basadas en el conocimiento del problema, la intuición y creatividad aplicadas a generar entre los datos duros inputs más correlacionados a lo que se está buscando. Los más útiles algoritmos son aquellos capaces de incorporar continuamente conocimiento sobre el problema. El problema de decidir cuál información incorporar al problema dado que se interpreta relevante no es un tarea que pueda realizar un algoritmo de forma eficiente ni mejor que nuestra propia inteligencia. 

 Después de todo el machine learning consiste en explotar los datos.

Además de los problemas clásicos de computación cientifica: tiempo y memoria, el aprendizaje estadistico sobre datos incorporta uno nuevo, la escabilidad.  Puesto que más datos significa incorporar clasificadores más complejos que suelen ser más lentos, una solución entonces es buscar caminos más cortos.

Por otro lado para decidir que modelo escoger lo que recientemente se está ocupando es el model ensembles que con una técnica de bagging se forman diferentes conjuntos de entrenamientos por medio de aleatoriedad y se entrenan diferentes algoritmos para luego ver quien obtuvo los mejores resultados. Esto resuelta pues reduce mucho la varianza o dispersión y solamente implica un pequeño incremento del sesgo o precisión o bias. Existen otra técnicas llamadas boosting y stacking.

Notar que los modelos de machine learning ocupan datos observados y no datos experimentales, osea que usualmente no tenemos control sobre estos, es por ello es que hay que recordar que estamos basándonos en correlaciones y esto no implica causalidad, un modelo predictor puede ser una guia de acción y un punto de partida para empezar a investigar la causalidad del hecho pero esto no puede ser explicado por el modelo en si mismo.

Los modelos de machine learning pueden ser muy útiles ya que para ciertos objetivos basados en datos son enormemente más eficientes y versátiles que nosotros. Sin embargo la inteligencia humana y animal tiene una virtud no alcanzada por el aprendizaje de máquinas aún, y es que nosotros aprendemos en base a pocos datos o experiencias, como dice Donald Geman:

 El punto de interés no es cuando m (tamaño muestral) tiende a infinito sino cuando m tiende a cero

Basado en: A few useful things to know about machine learning by Pedro Domingos.

  

sábado, 6 de julio de 2019

Todo problema resuelto se convierte en una idea que aplicar a los que están por resolver.

-René Descartes

Desafío

Un profesor susurra un entero positivo p al estudiante P, un entero positivo q al estudiante Q y un entero positivo r al estudiante R. Los estudiantes no conocen los otros dos números pero saben que la suma de los tres números es 14. Los estudiantes realizan las siguientes afirmaciones:

 - Ya sé que Q y R tienen números diferentes,- afirma P.
 - Pues entonces ya sé que los tres números son diferentes,- dice Q.
 - Ahora ya sé cuáles son los tres números,- concluye R.

¿Cuál es el producto de los números?


R:30


Como P afirma que Q y R tienen números diferentes, de las 14 opciones para P solamente puede afirma ello en los casos impares (P conoce su número p) pues 14-p quedaría impar y por tanto no es divisible por dos. En caso contrario, de p ser par entonces existen combinaciones de números iguales que dan 14.
Explícitamente, digamos p=

14 -- Dejarían a q=r=0. Absurdo.
13-- Dejarían a q+r=1. Absurdo, q y r son números enteros positivos.
12-- Podría ocurrir que q=r=1. No podría haberlo afirmado.
11-- Posible.
10-- Podría ocurrir que q=r=2. No podría haberlo afirmado.
9-- Posible.
8--  Podría ocurrir que q=r=3. No podría haberlo afirmado.
7-- Posible.
6--  Podría ocurrir que q=r=4. No podría haberlo afirmado.
5-- Posible.
4--  Podría ocurrir que q=r=5. No podría haberlo afirmado.
3-- Posible.
2--  Podría ocurrir que q=r=6. No podría haberlo afirmado.
1-- Posible.

Luego, Q sabe que p y r son diferentes. Entonces r no puede ser impar pues podría ser igual a p, osea que r es par, lo cual significa que 14-r=p+q es par y como p es impar, q debe ser también impar.

Pero R es capaz de concluir que sabe los números. Pero la única configuración posible dada la información de Q, de que los tres números son diferentes y la capacidad de R de no tener dudas en la pareja de números.

 Es Explícitamente (como q y p son impares),  los casos r=

14--  Dejarían a q=p=0. Absurdo.
12-- Entonces 14-12= 1+1. (Se descarta por lo afirmado por Q).
10-- Entonces 14-10= 3+1.
8-- Entonces 14-8= 5+1 o 3+3. (Se descarta por lo concluido por R).
6-- Entonces 14-6=  5+3 o 7+1. (Se descarta por lo concluido por R).
4-- Entonces 14-4= 5+5 o 9+1 o 7+3. (Se descarta por lo concluido por R).
2-- Entonces 14-2= 11+1 o 9+3 o 7+5. (Se descarta por lo concluido por R).

Para r=10 y por tanto q=3 y p=1 o viceversa.

De cualquier forma el producto de los tres números es 30.