🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram
Youtube
Si eres fanático, como yo, de las aplicaciones que mejoren la calidad de vida de las personas, basadas en lo último que nos entrega la tecnología, seguramente te has dado cuenta que lo que hace mejores y eficientes esas aplicaciones es todo lo que involucre Artificial Intelligence (AI o en español: Inteligencia Artificial) y Machine Learning (ML o en español: Aprendizaje automático).
Algunas de estas aplicaciones que utilizan AI/ML son el filtrado de correo no deseado en nuestras cuentas de correo electrónico que utiliza técnicas de ML para identificar y marcar los mensajes no deseados. Los sistemas de recomendación en plataformas de streaming de vídeo, ecommerce, o música también utilizan ML para sugerir contenido que pueda interesarnos en función de nuestro historial de interacciones, el reconocimiento de voz y la traducción automática también se basan en el ML.
AWS tiene muchos servicios que utilizan AI/ML que nos permiten crear aplicaciones con poco o nada de conocimiento de IA/ML, por ejemplo Amazon Rekognition para análisis de imágenes y videos, Amazon Textract para extraer información relevante de documentos, o Amazon Personalize para personalizar la experiencia de tus clientes empleando un motor de recomendaciones, y hasta aplicaciones ya listas AI Explorer.
Pero, te has preguntado ¿qué es AI?, ¿qué es ML?, ¿cómo aprende ML?, en este blog voy a responder esas preguntas y además te voy a explicar las fases de vida de un proyecto de ML, para que la próxima vez que estes creando una aplicación que utilice algún servicio increíblemente novedoso basado en AI/ML entiendas que hay detrás y que lo hace tan increíble.
No te preocupes, no te voy aburrir con matemáticas 😉.
¿Qué es Artificial Intelligence?
AI es todo lo que simula el comportamiento humano, de ahí viene lo de “inteligencia artificial”, porque es una inteligencia creada por el humano.
Fig. 1 Artificial Intelligence, Machine Learning, Deep Learning y Symbolic IA.
La IA incorpora (Fig. 1) la Symbolic AI (Inteligencia Artificial simbólica), es lo que conocemos como programación tradicional, reglas de salida asociadas a entradas o criterios de decisión, y por supuesto, también incorpora al ML, que a su vez se sub-divide en Deep Learning (DL o español: aprendizaje profundo).
¿Qué es Machine Learning?
ML se centra en la creación de sistemas o modelos que puedan aprender de los datos y mejorar su desempeño en tareas específicas sin necesidad de ser programados explícitamente, haciendo que aprendan de experiencias pasadas o ejemplos para tomar decisiones sobre datos nuevos. A diferencia de la programación clásica donde el programador humano escribe las reglas a seguir en código para transformar los datos de la entrada en las respuestas buscadas (Fig. 2).
Fig. 2 Symbolic AI vs Machine Learning
Ahora te voy a explicar los términos más relevantes en ML:
**Modelo: **es la representación que explica las observaciones. El modelo entrenado es el resultado de aplicar un algoritmo ML con un conjunto de datos; este modelo entrenado es utilizado para la inferencia con nuevas observaciones.
Algoritmo: es el procedimiento para aprender un modelo capaz de generalizar desde los datos de entrenamiento.
Entrenamiento: procesamiento iterativo de aplicar el algoritmo de aprendizaje. Consiste en:
- Aplicar el modelo (como está) a las variables de las observaciones y obtener los resultados según el modelo.
- Comparar los resultados del modelo con los valores reales.
- Establecer una forma de calcular el error entre el modelo y la realidad.
- Utilizar el error como base para actualizar el modelo de forma de disminuir el error.
- Repetir hasta que el modelo alcance los niveles de errores que nos hemos propuesto y que sea capaz de generalizar con observaciones que no ha visto en el entrenamiento.
Pruebas: medición del rendimiento de un modelo de datos a través de datos de prueba que no ha visto.
Despliegue: integración del modelo a un ambiente en producción.
Dataset: es un conjunto de datos, pueden ser imágenes, texto, numéricos, todo lo que se puede juntar como datos relevantes.
¿Cómo aprende un modelo de Machine Learning?
Para que el modelo aprenda este debe ser “entrenado” mostrándole los datos para que los entienda y cree una relación entre éstos y el resultado esperados. Esta relación, viene en forma de coeficientes o parámetros y es lo que el modelo aprende, es algo así como cuando ajustamos un ecualizador musical para obtener la mejor experiencia de sonido.
Para aprender estos parámetros, inicialmente el modelo requiere una definición.
Por ejemplo:
Modelo: La relación entre Centímetros y Pulgadas viene dada por la formula
El aprendizaje del modelo consiste en aplicar un algoritmo para obtener A y B a partir de las observaciones de Cm y Pulgadas que podamos tener de los datos entregados. Este algoritmo (conocido como algoritmo de ML) se aplica de forma iterativa sobre todos los datos (algunas veces más de una vez) para encontrar los parámetros A y B. Después de varias iteraciones del algoritmo obtenemos un modelo entrenado, capaz de generalizar la relación entre centímetros y pulgadas para cualquier observación nueva:
Modelo entrenado:
Observando la Fig. 1 vemos que dentro de ML encontramos a DL, una nueva pregunta que responder.
¿Qué es Deep Learning?
Es una técnica de ML que utiliza redes neuronales profundas (en inglés: deep neural networks) para aprender de los datos.
Estas redes neuronales son un tipo de modelo de aprendizaje automático que está compuesto por muchas capas de nodos interconectados que se ajustan a medida que se exponen a los datos.
El DL es un aprendizaje jerárquico donde las primeras capas aprenden representaciones elementales de los datos que transmiten a la siguiente como entrada, estas generan nueva información que entregan a la siguiente como entrada, así sucesivamente procesando y destilando los datos a través de cada capa, las cuales puede transformar los datos de una forma relevante para la siguiente capa hasta que las ultimas aprenden abstracciones más asociadas a la inferencia o decisión que se debe tomar en la salida produciendo la predicción.
En ejemplo es la Fig. 3 se introduce una imagen en un modelo entrenado clasificador de animales ¿qué animal es?, las capas iniciales separan la imagen en porciones pequeñas obteniendo representaciones básicas que se van abstrayendo cada vez más y de acuerdo a su entrenamiento previo, hasta que la capa de salida nos indica el resultado obtenido: las probabilidades de que sea algún de los animales que conoce.
Fig. 3 Representación del aprendizaje de datos por un modelo de clasificador de animales.
A su vez ML se sub-divide en varios tipos de aprendizaje, te los explico brevemente a continuación.
Tipos de aprendizaje en ML:
•Supervisado: Es el tipo de aprendizaje que hemos hablado hasta ahora. Las entradas y salidas del modelo, conocidas también como variables y etiquetas respectivamente, son utilizados en el entrenamiento para generalizar el modelo. Es capaz de aprender de los errores para mejorar las predicciones.
Se divide en dos tipos:
Regresión: se utiliza para predecir la relación entre variables independientes y una variable dependiente. Se basa en la idea de que la variable dependiente puede ser modelada como una combinación lineal de la variable independiente y un término de error.
Por ejemplo, la Fig. 5 muestra un ejemplo sencillo de como los valores de una propiedad aumentan a medida que la superficie de esta es mayor, creando una relación lineal entre ambas características.
Fig. 5. Ejemplo de Regresión: Relación entre la superficie de una propiedad y su valor.
Clasificación: se utiliza para asignar datos a una de varias categorías (clases) en función de ciertas características. Una vez que el clasificador ha sido entrenado, se puede utilizar para hacer predicciones sobre datos nuevos y desconocidos.
Existen modelos clasificadores binarios que entregan un valor entre 0 y 1 y modelos clasificadores multi-clase capaces de entregar un listado de probabilidades entre 0 y 1, uno para cada clase (nuestro ejemplo de los animales en Deep Learning)
• No supervisado: Las etiquetas no se conocen, el modelo construye los patrones y la estructura de los datos.
Se divide en dos tipos:
Clusterización: Es una técnica utilizada para dividir un conjunto de datos en grupos (clústers) de acuerdo a ciertas características. La idea es que los datos en un mismo clúster sean similares entre sí, mientras que los datos en diferentes clústers sean diferentes.
La clusterización se utiliza comúnmente para la exploración de datos y el análisis de grupos. Por ejemplo, la Fig. 6
Fig. 6 Ejemplo Clusterización: Agrupación de figuras de acuerdo a sus características.
Reducción de Dimensionalidad: es una técnica utilizada en el aprendizaje automático para reducir la cantidad de características (variables) en un conjunto de datos mientras se mantiene la información más importante. Esto se logra mediante la eliminación de características redundantes o irrelevantes, lo que permite a los modelos de aprendizaje automático entrenarse más rápido y con mejores resultados.
•Aprendizaje por refuerzo: es una técnica (Fig. 7) en la que un agente interactúa con su entorno y recibe recompensas o castigos en función de sus acciones. El agente aprende a través de la exploración y la experimentación, y se esfuerza por maximizar la recompensa total que recibe a lo largo del tiempo. Esto se logra mediante la selección de acciones que, según el agente, tienen mayor probabilidad de producir una recompensa.
Un ejemplo es AWS Deep Racer, donde se entrenan modelos para que compitan en carreras como autos dentro de pistas (virtuales o físicas).
Fig. 7 Tipos de aprendizaje en machine Learning: Aprendizaje por refuerzo.
Ahora que tenemos más claro que es AI/ML y cómo funciona podemos abordar un proyecto de ML identificando las fases en el ciclo de vida.
Fases del ciclo de vida de un proyecto de Machine Learning.
El ciclo de vida de ML es el proceso iterativo y cíclico (Fig. 8), agrega claridad, visión de todo el proceso y estructura para maximizar el éxito de un proyecto de ML.
La mejor forma de aprender es con ejemplos, metiendo las manos, pero en este blog no tenemos código para “ensuciarnos”, así que desarrollemos las fases suponiendo que queremos construir un modelo que evalúa el fraude bancario:
• Identificar el objetivo comercial: Es la fase más importante. debemos tener la idea del problema a resolver, el valor medible para el negocio y el criterio de éxito. Hay que preguntarse ¿Hace falta usar ML?, ya que no siempre es necesario, además el requerimiento para los datos, evaluar las capacidades de la organización y alinear a los lideres.
En el modelo que evalúa el fraude bancario: el objetivo comercial es disminuir el fraude en las transacciones bancarias. Una disminución de la tasa de fraude en X puntos porcentuales significa mejora en los costos de reembolsos en Y y mejora en la satisfacción de clientes en Z.
• Define la solución de ML: Si estamos en esta fase ya sabemos que nuestro problema se soluciona con ML, se definen las métricas de desempeño y el criterio de éxito. Se crea la estrategia para la recolección y etiquetado de los datos.
En el modelo que evalúa el fraude bancario: Se selecciona un modelo Supervisado - Clasificador, debe identificar correctamente un 85% de las transacciones fraudulentas para cumplir con el objetivo. El error de catalogar una transacción fraudulenta como correcta no debe superar el 10%. Los datos que utilizaremos será el histórico de las transacciones son su etiqueta “fraudulenta” - “legal”, y además la información de los clientes anonimizada.
•Procesamiento de datos: Se debe definir los medios disponibles para obtener los datos (eventos, series de tiempo, dispositivos IoT, eventos en redes sociales y más). Definida la ingesta y agregación de estos se deben etiquetar, y preparar para introducirlos usarlos en el aprendizaje del modelo.
En el modelo que evalúa el fraude bancario: Establecemos los procesos de ingesta y procesamiento de datos, para construir los datasets de entrenamiento y de prueba.
•Despliegue: Entrenado, ajustado y evaluado el modelo de ML, lo llevamos a producción para hacer inferencias. En esta etapa se definen la estrategia de despliegue, la infraestructura sobre cual operará, el patrón de latencia de inferencia (realtime, async o batch) y como se va a disponibilizar hacia las aplicaciones.
En el modelo que evalúa el fraude bancario: debemos enfocarnos en una infraestructura capaz de soportar inferencias en tiempo real (realtime), porque queremos revisar las transacciones en el momento que se hagan y ser capaces de bloquear los fraudes antes de que avancen. Por ejemplo, un servicio web a invocar al momento de la transacción.
•Monitoreo: Definimos reglas para detectar problemas y enviar alertas. Los problemas a detectar en esta fase incluyen: calidad de los datos y el modelo, desviación del sesgo entre otros. De ser necesario se debe re-entrenar el modelo.
En el modelo que evalúa el fraude bancario: revisamos sí los datos que nos están llegando estadísticamente son similares con los que entrenaron el modelo, también debemos entregar las inferencias y el resultado final de la transacción en forma de reportes o paneles de visualización (es importante corroborar que el proyecto está cumpliendo con los objetivos). Otra acción en esta etapa es utilizar expertos para revisar transacciones dudosas para ayudar a efectivamente quede definida el nivel de fraude y retroalimentar el modelo con datos nuevos para re-entrenamiento.
Lo más importante de estos modelos (aparte de que tenga buen desempeño) es que la gente que lo usa crea en él, por ejemplo ¿qué pasaría si un cliente está haciendo una compra legal y el modelo la etiquete como fraudulenta bloqueándole la tarjeta?, tendríamos un cliente molesto con ganas de cambiarse de banco.
Siempre hay que pensar en nuestro cliente, como brindarle el mejor servicio, como mejorar su calidad de vida o simplemente como hacerlo feliz, porque el cliente no necesariamente es una persona de quien recibes una recompensa monetaria o un área en tu organización; un cliente también puede ser tu familia quienes disfrutaran de alguna aplicación novedosa que tu como desarrollador, ahora con conocimientos en AI/ML, creaste para tu hogar.
Conclusiones:
Espero hayas disfrutado esta lectura y haber despertado curiosidad en ti en desarrollar más productos basados en AI/ML ahora que ya sabes las respuestas a las preguntas: ¿Qué es Artificial Intelligence?, ¿Qué es Machine Learning? y ¿Como aprende un modelo de ML?. Profundizamos en el concepto de ML, los tipos que aprendizajes y el sub-conjunto de ML llamado Deep Learning y al final desarrollamos las fases de un proyecto de ML con un ejemplo de fraude bancario.
Desde ahora en adelante cada vez que emplees un Servicio AI/ML en una aplicación lo harás sabiendo que detrás hay un modelo de ML trabajando para ti y te puedes aventurar a identificar qué tipo de aprendizaje es.
Referencias:
Deep Learning with Python, Second Edition - Autor François Cholle
AWS Well-Architected machine learning lens: https://docs.aws.amazon.com/wellarchitected/latest/machine-learning-lens/machine-learning-lens.html
Architect and build the full machine learning lifecycle with AWS: An end-to-end Amazon SageMaker demo: https://aws.amazon.com/es/blogs/machine-learning/architect-and-build-the-full-machine-learning-lifecycle-with-amazon-sagemaker/
SkillBuilder Machine Learning plan: https://explore.skillbuilder.aws/learn/lp/28/machine-learning-learning-plan
¿Qué es la inteligencia artificial?: https://aws.amazon.com/es/machine-learning/what-is-ai/
MLU-EXPLAIN: https://mlu-explain.github.io/