domingo, 29 de mayo de 2022

Machine Learning

Introducción


Antes de abordar este tema técnico, veamos una aproximación al mismo, a través de algunos cambios ocurridos desde finales del SXX, dónde vimos surgir la programación en Lenguaje Basic que estuvo disponible incluso para niños de colegios en plataformas de vídeo juegos como Atari. Luego vimos lenguajes como Pascal, C y C++, el desarrollo de Sistemas Expertos y Lógica Difusa en las universidades. Para finalmente aprovechar el desarrollo de Visual Basic y Visual Studio en el desarrollo de aplicaciones formales para empresas. Ya en pleno SXXI los lenguajes se reorientaron a necesidades empresariales como JAVA o hacia la investigación y desarrollo de “redes neuronales” como Python. Así fueron todos estos cambios en pocas décadas.

Estos antecedentes sirven para decir que hemos podido ver el paso desde el vacío digital, el horror vacui de la nada “informática”, a los computadores PC/Notebook en el hogar y los primeros usos avanzados de los mismos en el Trabajo, dónde incluso podemos encontrar computadores cuánticos para sofisticados procesos de encriptación y otros múltiples actos de “magia” informática. Pero ahora, estamos en un nivel superlativamente mayor, mucho más evolucionado, a poco tiempo (décadas) de alcanzar la singularidad informática, el momento en el que los computadores en la forma de Inteligencia Artificial (IA) serán más “inteligentes” que los Humanos y tendrán “conciencia” propia.

Sin embargo y por el momento, nos encontramos en la época del Machine Learning, Deep Learning y Redes Neuronales, que son la base para las próximas IAs, pero en su forma actual ya son poderosas herramientas informáticas que aumentan nuestra propia capacidad para “resolver problemas”, para “hacer predicciones” basadas en datos y que “brindan a las organizaciones conocimientos para tomar decisiones más precisas sobre ventas, marketing, desarrollo de productos y otras áreas estratégicas” [4] y eso es lo que intentaremos apreciar en este trabajo, a partir de la información del curso de “Toma de Decisiones Basadas en Datos” de Emeritus/Cambridge.

Desarrollo


Es necesario comenzar por algunas definiciones:

Machine Learning [1]: “es una disciplina científica del ámbito de la Inteligencia Artificial que crea sistemas que ‘aprenden automáticamente’. ‘Aprender’ en este contexto quiere decir ‘identificar patrones complejos’ en millones de datos (¿Big Data?). La máquina que realmente ‘aprende’ es un algoritmo que revisa los datos y es capaz de predecir comportamientos futuros. ‘Automáticamente’, también en este contexto, implica que estos sistemas se mejoran de forma autónoma con el tiempo, sin intervención humana.” En realidad – machine learning -, no es una única técnica, existe una gran variedad de ellas, e incluso se pueden combinar entre sí para lograr el objetivo final , que es poder predecir el comportamiento de un sistema sin conocer su modelo interno.

Deep Learning [2]: “se define como un algoritmo automático estructurado o jerárquico que ‘emula el aprendizaje humano’ con el fin de obtener ciertos conocimientos. Destaca porque no requiere de reglas programadas previamente, porque el propio sistema es capaz de ‘aprender’ por sí mismo para efectuar una tarea a través de una fase previa de entrenamiento.”

Red Neuronal [3]: “es un modelo simplificado que emula el modo en que el cerebro humano procesa la información, a través de sus neuronas (véase la Ilustración 1): Funciona simultaneando un número elevado de unidades de procesamiento interconectadas que parecen versiones abstractas de neuronas. Las unidades de procesamiento se organizan en capas (véase la Ilustración 2). Hay tres partes normalmente en una red neuronal: una capa de entrada, con unidades que representan los campos de entrada; una o varias capas ocultas; y una capa de salida, con una unidad o unidades que representa el campo o los campos de destino. Las unidades se conectan con fuerzas de conexión variables (o ponderaciones). Los datos de entrada se presentan en la primera capa y los valores se propagan desde cada neurona hasta las neuronas de la capa siguiente. Al final, se envía un resultado desde la capa de salida.” 


Ilustración 1: Neurona Biológica vs Neurona Artificial

 

Ilustración 2: Modelo de Capas: verde – entrada, azul – capa oculta y amarillo – salida.


Con estas definiciones ya tenemos suficiente abstracción, así que veamos cómo se aplican estos conceptos en el mundo de hoy.

Machine Learning


¿Qué puede hacer el machine learning por nosotros? Puede hacer mejores predicciones que un ser humano en muchos ámbitos. Por ejemplo, puede predecir si alguien pagará un crédito o que hay en la siguiente foto pixelada.


Ilustración 3: ¿Qué esconden los pixeles?


Machine learning también puede actuar como un chatbot, desafiando al famoso Test de Turing  y conversar con un ser humano, sin que éste se dé cuenta que chatea con una máquina, pero en su forma más simple, el chatbot sólo predice el siguiente texto luego de un texto inicial, poco más que un campo de autocompletar en un formulario. Y en su forma más sofisticada, hemos visto, por ejemplo, a la chatbot “Sofía” y otros como “Laura”, “Manuel” o “Siri”, que realmente parece ser personas que nos ‘hablan’.

Lo que hacen las técnicas de machine learning es extraer la mayor cantidad de información a partir de los datos para poder hacer sus predicciones, y lo hacen a nivel de la ‘máquina’ por lo que es difícil para el humano determinar cómo realiza efectivamente esas predicciones.

Un caso emblemático fue el de Netflix que en octubre del 2006 anunció que cualquiera que fuera capaz en un 10% su algoritmo de recomendaciones de películas ganaría un millón de dólares. Netflix liberó datos de entrenamiento al público correspondientes a 100 millones de calificaciones de 17,770 películas. Se esperaba que los competidores pudieran predecir la calificación que otorgarían los usuarios para las siguientes películas a exhibirse. En Septiembre de 2009, Pragmatic Chaos de BellKor gana el premio de un millón de dólares (este equipo tuvo un desempeño idéntico que su competidor en el conjunto de prueba, pero envió su algoritmo 20 minutos antes).

¿Cómo lo hicieron? Bueno, antes de llegar a la conclusión final de este caso (Netflix), veamos otros antecedentes previos.

Por ejemplo, es muy interesante la implementación de machine learning de Facebook para reconocer qué hay en una imagen y decirlo por audio, de manera tal que un no vidente pueda saber qué tiene en frente.


Ilustración 4: ¿Qué contiene la imagen?


Pero no nos equivoquemos, no todo en machine learning es tan “sofisticado”, también forma parte de su conjunto de herramientas las técnicas más clásicas, como la regresión lineal simple o una regresión múltiple  que predice un resultado en base a un conjunto de variables independientes con base a muchos predictores (variables independientes).

También forman parte del machine learning los árboles de decisión (una evolución de los viejos y queridos Sistemas Expertos). Uno de los retos al construir un árbol de decisión es determinar la profundidad del mismo. Los árboles de decisión más profundos tienen mayor probabilidad de sobreentrenar los datos (es decir, que sólo sirvan bien para los datos con los que se entrenó y no sirvan con datos nuevos – fallen la predicción -). Por otra parte, los árboles de decisión que no son lo suficientemente profundos son incapaces de mostrar las complejidades que tienen lugar en la vida real y se quedan muy cortos en sus soluciones.

Otra de las técnicas utilizadas en machine learning son las máquinas de soporte vectorial. La idea básica es poder separar el conjunto de datos en dos grupos a través de una ‘línea’ (puede ser un plano o hiperplano), así cada parte se asocia a una predicción distinta.

 

Ilustración 5: Máquina de Soporte Vectorial, separación de los datos por una línea


Obviamente esto puede complicarse con otros tipos de conjuntos de datos, imaginemos algo que sea del tipo circular:

 

Ilustración 6: Complejidad para separar datos en círculos


La astucia detrás de este tipo de problemas está en encontrar otra “dimensión” del problema que ayude a encontrar una solución (separar los puntos rojos de los azules con un solo ‘corte’):

 

Ilustración 7: El truco de agregar una dimensión más al problema, para poder separar fácilmente los datos


Para este ejemplo, existe una dimensión que nos da una representación tridimensional que nos permite ver que los datos se pueden separar por un plano en el eje vertical y con ello tenemos resuelto el problema.

Finalmente, lo que vemos en la industria son soluciones mixtas de todas las técnicas mencionadas. Para concluir entonces el caso de Netflix, la empresa BellKor unió esfuerzos, primero con Big Chaos y después con Pragmatic, para formar Pragmatic Chaos de BellKor. Este equipo combinó sus diferentes modelos de machine learning y superó así en más de 10% al algoritmo de Netflix para ganar la competencia.


Deep Learning


Un problema que resultó muy difícil de resolver en el pasado con las técnicas ya mencionadas de machine learning, fue hacer que la máquina pudiera diferenciar si la foto de un animal era de un gato o un perro.

 

Ilustración 8: ¿Es un gato o es un perro?


Las mejores predicciones eran de un 73% en el 2011, pero con el desarrollo de métodos de deep learning se logró un impresionante 86% en el 2012.

En realidad, al hablar de deep learning ya estamos hablando de redes neuronales y se utilizan actualmente para:

Reconocimiento de voz: convertir la voz a texto.

Búsqueda de fotos: búsqueda por imágenes.

Identificación de imágenes: describe auditivamente lo que es o contiene una imagen.

Chatbot: conversar como un humano en un chat.

Traductores de Conversación: traducen la voz a texto en otro idioma.

Diseño de medicamentos: análisis de medicamentos mediante la detección de compuestos químicos virtualmente.


Las redes neuronales deben ser entrenadas usando una gran cantidad de parámetros. Cada conexión entre dos neuronas tiene un determinado ponderador o peso, el cuál está determinado para un parámetro específico. Cada neurona tiene su propia función de activación, la cual determina cuándo se activa o no. Para que la red neuronal pueda hacer buenas predicciones se debe entrenar un largo período de tiempo con muchos datos.

 

Ilustración 9: Red neuronal con 3 capas ocultas y 70 parámetros

 

Ilustración 10: Ejemplos de distintas configuraciones de capas y parámetros


Se puede apreciar entonces que tienen una cierta complejidad intrínseca, de ahí que esta Ciencia es también considerada un Arte:

Decidir la profundidad y la amplitud de la red neuronal es más un arte que una ciencia.

Si se tiene mucha data, entonces se debería entrenar una gran red (muy compleja).

Pero si se tiene poca data, entonces se debería entrenar una red más simple.


¿Qué tan importante es la precisión de una red neuronal? Si estamos hablando de vehículos autónomos, es evidente que mucho, un 0,001% más puede hacer la diferencia entre la vida o la muerte de los pasajeros.

Otros ejemplos de aplicación de redes neuronales:

Transformación de Imágenes:  

Conversión de Imágenes:  

Música Generada con IA: Similar a los chatbot, puede predecir la siguiente nota conservando el espíritu de la pieza.

AlphaGo: Google DeepMind entrenó su red neuronal usando aprendizaje reforzado al exponer al modelo de AlphaGo a diferentes juegos históricos, y así pudo ir mejorando sus versiones.


Finalmente podemos decir que las redes neuronales son buenas tratando con datos complejos y sin estructura. Y por lo mismo, no son necesariamente buenas para todos los problemas.  Pueden sur muy útiles para desarrollar tareas “creativas”.

Google desarrolló una red neuronal llamada TensorFlow, que es una biblioteca de código abierto para el ‘aprendizaje automático’, con la cual uno puede interactuar para aprender más sobre el funcionamiento de redes neuronales, resolviendo desafíos, y con la posibilidad de personalizarla para las propias necesidades vía su programación en Python.

 

Ilustración 11: TensorFlow, ¿cómo definir esta red para que pueda predecir valores de datos en espiral?


Reflexiones Finales


El trabajo con machine learning involucra muchos procesos de prueba y error. Incluso puede ser mejor combinar varios modelos (los clásicos también) para lograr mejorar las predicciones.

El trabajo con redes neuronales (deep learning) puede entregar resultados muy positivos, superando incluso el desempeño humano, pero por la forma en que se captura el conocimiento puede resultar imposible para los humanos interpretar cómo la red es capaz de resolver los problemas.

Nos encontramos entonces frente a una poderosa herramienta que es capaz de predecir el comportamiento de sistemas complejos, sin que por ello podamos resolver el modelamiento de dichos sistemas, lo que no mejora nuestra comprensión del problema, aunque si lo resuelve y ahí está su gran valor hoy.

Bibliografía


Referencia Documento/Link Autor

1 https://cleverdata.io/que-es-machine-learning-big-data/

Andrés González

2 https://www.smartpanel.com/que-es-deep-learning/

Smart Panel

3 https://www.ibm.com/support/knowledgecenter/es/SS3RA7_sub/modeler_mainhelp_client_ddita/components/neuralnet/neuralnet_model.html

IBM Knowledge Center

4 https://www.powerdata.es/transformacion-digital

Power Data






No hay comentarios.:

Publicar un comentario