Inteligencia Artificial (IA) local

Antes de que andes preguntando a tu dios; sí, veras como ejecutar tu IA en local, sin internet.

La inteligencia artificial (IA) es una evolución de los buscadores y algoritmos. La IA trata de simular el mismo funcionamiento que nuestro cerebro; a una entrada de información, la red neuronal se reconfigura internamente para producir la salida correcta (por ejemplo; si recibe como entrada una foto de un perro, la salida tiene que ser identificar a ese ser vivo como un perro, o más características).

La finalidad es que luego de haber entrenado a la IA con datos específicos (llamado; ‘dataset’), su red neuronal producirá una salida específica y que luego cuando entra información nueva, y desconocida, pueda identificar patrones para detectar relaciones para hacer asociaciones nuevas (tal y como hace nuestro cerebro). Por ejemplo; si hemos entrenado a la IA para detectar perros, y luego de forma más especializada razas concretas, cuando le demos una foto de un lobo podrá detectar las similitudes y decirnos que un perro (a pesar de que no es tan así, pero sí están emperentados biológicamente).

La IA se puede entrenar para cualquier información que se pueda pasar como digital; y hoy en día es cualquier cosa.

Machine Learning (ML)

Es un subcampo dentro de la IA. Busca la creación, optimmización y depuración de algoritmos estadísticos que le permitan a la red neuronal entender las relaciones entre los diferentes datos de entrenamiento (‘dataset’). Esto con el fin de que al entrar un dato nuevo, el algoritmo pueda detectar tales relaciones y similitudes y dar una salida apropiada.

Algo que voy a repetir de diferentes formas a lo largo de este capítulo, la IA no solamente es para texto, puede usarse para cualquier cosa que se pueda usar como dato de entrada y codificado.

Deep Learning

Es un subcampo dentro del ML. Es el eslabón más profundo dentro de la ejecución de una red neuronal, ya que se enfoca en las neuronas y como aprenden mediante; clasificaciones, regresiones y representaciones de la información introducida.

‘Deep’ viene de las varias capas creadas en la red neuronal.

Tenemos varios métodos de entrenamiento de la red, aunque debemos tener en cuenta que no son las únicas formas;

  1. Supervisada (SL: Supervised Learning)

    • Conjunto de datos etiquetado

      En el entrenamiento supervisado, se utiliza un dataset que contiene ejemplos de entrada y sus correspondientes etiquetas o salidas esperadas. Cada entrada tiene un resultado correcto asociado, que el modelo debe aprender a predecir.

    • Proceso de entrenamiento

      La red neuronal recibe las entradas del dataset, pasa los datos a través de sus capas, y produce una salida (predicción). Esta salida se compara con la salida esperada (la etiqueta) mediante una función de pérdida (o función de error), que mide qué tan lejos está la predicción del modelo del resultado correcto.

    • Retropropagación y ajuste automático

      Si la predicción es incorrecta, el modelo utiliza un proceso llamado retropropagación (backpropagation) para ajustar automáticamente los pesos y sesgos de la red. Esto se realiza mediante un algoritmo de optimización, como descenso por gradiente. Este proceso iterativo busca minimizar el error al ajustar los parámetros para que las futuras predicciones sean más precisas.

  2. Semisupervisado (WS: Weak supervision)

    En este enfoque, el modelo se entrena con una combinación de datos etiquetados y datos no etiquetados, lo que lo hace muy útil cuando es costoso o difícil obtener un dataset completamente etiquetado.

    Características:

    • Datos etiquetados y no etiquetados

      El modelo recibe una pequeña porción de datos etiquetados (es decir, datos que tienen una salida o etiqueta conocida) y una gran cantidad de datos no etiquetados (sin salida conocida). Dado que etiquetar datos puede ser costoso, esta técnica permite aprovechar los datos no etiquetados para mejorar el entrenamiento.

    • Proceso de entrenamiento

      El modelo comienza aprendiendo de los datos etiquetados de manera supervisada, utilizando las etiquetas conocidas para ajustar los parámetros.

      Luego, se usa una técnica para tratar de estimar o inferir las etiquetas de los datos no etiquetados, de modo que el modelo pueda mejorar su capacidad para generalizar y aprender de toda la información disponible.

    • Aprovechamiento de grandes volúmenes de datos

      En muchos casos, es fácil recopilar grandes cantidades de datos no etiquetados (por ejemplo, imágenes, texto, etc.), pero el etiquetado manual puede ser costoso. El aprendizaje semi-supervisado permite utilizar ambos tipos de datos.

    • Mejora en la generalización

      El uso de datos no etiquetados ayuda a que el modelo no dependa únicamente de los pocos datos etiquetados, mejorando así su capacidad para generalizar a datos nuevos o desconocidos.

  3. No supervisado

    A diferencia del aprendizaje supervisado, en el que el objetivo es predecir etiquetas a partir de ejemplos ya etiquetados, en el aprendizaje no supervisado el objetivo principal es descubrir patrones ocultos o estructura subyacente en los datos.

    El objetivo del aprendizaje no supervisado es encontrar patrones, agrupamientos o estructuras dentro del conjunto de datos. No se espera que el modelo genere predicciones exactas como en el caso del aprendizaje supervisado.

    Catacterísticas:

    • Sin etiquetas

      En el aprendizaje no supervisado, los datos no tienen etiquetas ni salidas esperadas. El modelo trabaja con las entradas brutas y debe identificar por sí mismo las relaciones o agrupaciones dentro de los datos.

    Tareas comunes:

    • Clustering (agrupamiento)

      El modelo agrupa los datos en clústeres o grupos de objetos similares basándose en sus características. Un ejemplo común es el algoritmo K-means, que agrupa datos en un número fijo de clústeres, donde los puntos dentro de un mismo clúster son más similares entre sí que a los puntos en otros clústeres.

    • Reducción de dimensionalidad

      Técnicas como Análisis de Componentes Principales (PCA) se utilizan para reducir el número de variables en un conjunto de datos, manteniendo la mayor cantidad de información posible. Esto es útil para visualizar datos o para mejorar el rendimiento de otros algoritmos.

    • Detección de anomalías

      Se utiliza para identificar datos que no siguen los patrones generales, como identificar transacciones fraudulentas en datos financieros.

  4. Aprendizaje reforzado

    En este contexto, se deja a la IA en un ambiente dinámico con un motor que detecta el ambiente y las decisiones de la IA. Si la IA hace las cosas bien le emite una señal de recompensa, la red neuronal entiende eso y sigue, pero si lo hace mal se emite una señal acorde y la IA repite hasta hacerlo bien.

    Cuando tiene varias señales de haber hecho bien las cosas, la IA busca relaciones y patrones en común para aprender y seguir haciendo cosas.

    Por eso es un constante prueba y error (a veces miles de miles de esos) hasta que empieza a hacerlo bien y ahi empieza aprender.

  5. Auto aprendizaje

    Desde 1982 existe un algoritmo, relativamente simple, que es parecido al aprendizaje no supervisado: se basa en que a una entrada determinada, el algoritmo analice la entrada y actualice una matriz de memoria en donde; una situación ‘s’ dispara una acción ‘a’, luego se recibe como respuesta una situación deribada (s’) donde luego se actualiza la matriz de memoria.

    Este tipo de aprendizaje no tiene señales de recompensa y sin manipulación de datos, pesos o bias.

  6. Aprendizaje futuro o representacional

    A mi me gusta llamarlo ‘general’.

    El aprendizaje futuro o aprendizaje representacional es un enfoque que intenta capturar y aprender representaciones más generales y transferibles de los datos, en lugar de memorizar o aprender directamente patrones específicos de cada tarea. Este tipo de aprendizaje se centra en identificar patrones de alto nivel, estructuras y características en los datos que se pueden reutilizar o transferir a tareas similares o incluso distintas. En inteligencia artificial y machine learning, el aprendizaje representacional tiene como objetivo que los modelos comprendan mejor los conceptos subyacentes, facilitando que puedan adaptarse a nuevas situaciones con menos ajustes.

    Los modelos, en especial los de deep learning, aprenden representaciones a distintos niveles, desde características más simples (como bordes en imágenes) hasta conceptos complejos (como el reconocimiento de caras). Esta jerarquía ayuda a crear una representación del conocimiento cada vez más abstracta y reutilizable.

    En muchos casos, el aprendizaje representacional se basa en la creación de embeddings, o representaciones numéricas de alta dimensión que capturan relaciones entre entidades. En NLP (Procesamiento del Lenguaje Natural), por ejemplo, los embeddings de palabras permiten que el modelo relacione palabras similares (como “rey” y “reina”) en un espacio semántico que representa significados y contextos.

    Se aplican técnicas como el aprendizaje contrastivo, en el cual el modelo aprende a distinguir entre representaciones similares y distintas. Esto ayuda a que el modelo refine sus representaciones de manera más robusta y distintiva.

  7. Aprendizaje continuo

    Generalmente cuando se termina el entrenamiento del modelo, se bloquean sus variables internas para hacerlas inmutables y que de esa manera la misma no cambie (si sigue entrenando) conforme pasa el tiempo. Pero si la misma no se bloquea se puede seguir entrenándola con cada uso para que mejore según necesitemos.

  8. Decisión por árbol

    Se usa una estructura de árbol para partir de una observación inicial y variar de acuerdo a las características que se consideren (las ramificaciones) para llegar las conclusiones.

Pero también tenemos una complementación a todos los tipos anteriores muy interesante:

  1. Reducción dimensional

    La reducción dimensional se basa en realizar un análisis de la información que va entrar y se va a procesar para identificar información que no sea útil para el modelo. Con el fin de simplificarla y mejorar el nivel de precisión resultante.

    Técnicamente se dice que es reducir la dimensión de la información (3D) a una más pequeña (2D). Como ejemplo; si una IA tiene que evaluar si por el color de una estrella es una enana blanca o una super nova, no necesita (en principio, de forma más esencial) la información sobre la profundidad de campo.

    La información adicional pero no requerida para la tarea puede hacer ‘alucionar’ al modelo.

Búsqueda vertical y horizontal

Acá entenderás lo dicho antes en referencia a que son la evolución de los buscadores.

La búsqueda vertical es la más simple e intuitiva de todas; insertas una palabra y se busca todo lo que la tenga dentro de unas bases de datos. Mientras que la búsqueda horizontal, hace lo mismo que la vertical pero incluyendo la información de búsquedas anteriores, luego corre algoritmos que las analizan y hacen predicciones.

La búsqueda horizontal es lo que permite que la IA pueda recordar el contexto de una conversación; si estás hablando sobre la bacteria Vibrio Cholerae (que produce la cólera) analizando los síntomas y su medio de actuación, y luego preguntas algo sobre perros o gatos, la IA tommará eso en cuenta para realizar una nueva búsqueda que se aproxime a ese contexto ya dado anteriormente.

Dataset

En el contexto de inteligencia artificial (IA) y machine learning (aprendizaje automático), un dataset (o conjunto de datos) es una colección estructurada de datos que se utiliza para entrenar, validar y probar un modelo de IA o de aprendizaje automático. Los datasets son esenciales para que los algoritmos de machine learning puedan aprender patrones, hacer predicciones y realizar tareas específicas.

Un dataset generalmente incluye varias instancias o ejemplos, y cada instancia contiene un conjunto de características o atributos que describen esa instancia. Dependiendo del tipo de tarea, los datasets pueden variar en estructura y contenido:

  1. Datasets para tareas de clasificación

    Aquí, cada instancia está etiquetada con una clase o categoría. Por ejemplo, en un dataset de imágenes de animales, cada imagen podría estar etiquetada como “gato”, “perro”, etc.

  2. Datasets para tareas de regresión

    En este caso, cada instancia está asociada a un valor numérico continuo. Por ejemplo, en un dataset que predice precios de casas, cada entrada incluiría características de una casa (como tamaño, ubicación) y el precio de venta.

  3. Datasets de entrenamiento, validación y prueba

    Para entrenar y evaluar correctamente un modelo, los datasets generalmente se dividen en tres partes:

    • Dataset de entrenamiento: Utilizado para enseñar al modelo a identificar patrones.
    • Dataset de validación: Sirve para ajustar los hiperparámetros del modelo y evitar el sobreajuste (overfitting).
    • Dataset de prueba: Se usa para evaluar el rendimiento del modelo final, en datos no vistos previamente.

En machine learning, la calidad y cantidad del dataset son cruciales. Un dataset representativo, diverso y correctamente etiquetado es clave para el éxito del modelo de IA.

Data mining

El data mining (o minería de datos) es el proceso de explorar grandes volúmenes de datos para descubrir patrones, tendencias y relaciones significativas que no son obvias a simple vista. En el contexto de machine learning y aprendizaje automático, el data mining es una fase crucial, ya que ayuda a identificar la información útil que puede alimentar modelos predictivos y analíticos, apoyando la toma de decisiones.

Objetivo del Data Mining:

El objetivo principal del data mining es extraer conocimiento de datos grandes y complejos, lo cual ayuda a:

  • Identificar patrones recurrentes que se pueden utilizar para hacer predicciones o entender mejor un fenómeno.
  • Detectar anomalías o casos atípicos en los datos (útil en detección de fraudes, por ejemplo).
  • Clasificar y segmentar los datos en grupos o categorías, lo que facilita la personalización en marketing, las recomendaciones, y otros tipos de análisis.

Técnicas comunes de Data Mining:

  1. Clustering / Agrupación

    Agrupamiento de datos similares en categorías o clústeres. Se usa en segmentación de clientes, agrupación de documentos, etc.

  2. Clasificación

    Asignación de etiquetas o categorías a datos nuevos, basándose en ejemplos etiquetados previamente. Ejemplo: Clasificar correos como “spam” o “no spam”.

  3. Reglas de asociación

    Identificación de relaciones entre variables en conjuntos grandes. Un ejemplo clásico es la “análisis de cesta de mercado,” donde se identifican productos que tienden a comprarse juntos.

  4. Reducción de dimensionalidad

    Técnicas como PCA que simplifican los datos al reducir su complejidad, facilitando la visualización y el procesamiento.

  5. Detección de anomalías

    Identificación de datos inusuales o atípicos que no siguen el patrón general, útil para aplicaciones de seguridad o salud.

Proceso de Data Mining:

  1. Preparación de datos

    Involucra limpiar, transformar y seleccionar los datos que serán procesados. Esto incluye manejo de valores faltantes y corrección de inconsistencias.

  2. Elección del modelo y técnica de análisis

    Seleccionar el algoritmo o enfoque adecuado para extraer los patrones según el tipo de datos y el objetivo. Aquí puede incluirse aprendizaje supervisado, no supervisado o técnicas estadísticas.

  3. Evaluación e interpretación de resultados

    Evaluar los patrones descubiertos para asegurarse de que son válidos y útiles. En este paso se pueden ajustar los parámetros o técnicas si es necesario.

  4. Implementación y monitoreo

    Una vez que los patrones son validados, se implementan para generar valor, ya sea como modelos predictivos en producción o como información para la toma de decisiones.

Relación con Machine Learning:

El data mining y el machine learning están estrechamente relacionados, pero no son lo mismo. El data mining se enfoca en explorar y encontrar patrones en los datos, mientras que el machine learning se centra en entrenar modelos predictivos que puedan tomar decisiones o hacer predicciones basadas en esos datos. Sin embargo, el data mining proporciona las bases para entrenar modelos de machine learning al identificar los datos más relevantes y transformarlos en el formato adecuado para los algoritmos.

El machine learning usa principalmente modelos aritméticos de deep learning.

Token

Un token es una unidad mínima de texto que se utiliza para representar palabras, subpalabras o caracteres, y sirve como entrada a modelos de procesamiento del lenguaje natural para su análisis o aprendizaje.

En procesamiento del lenguaje natural (NLP)

Un token es la unidad básica de texto que un modelo utiliza para procesar lenguaje. Los tokens suelen ser palabras, pero también pueden ser fragmentos de palabras, caracteres individuales o secuencias que tengan un significado. Los procesos de tokenización dividen un texto en estas unidades más pequeñas.

Por ejemplo, la frase “El gato negro” podría ser tokenizada de diferentes maneras:

  • Palabras como tokens: [“El”, “gato”, “negro”]
  • Subpalabras o morfemas como tokens: [“El”, “gat”, “o”, “negr”, “o”]
  • Caracteres como tokens: [“E”, “l”, “ “, “g”, “a”, “t”, “o”, “ “, “n”, “e”, “g”, “r”, “o”]

Aquí, un token no “genera asociaciones con otras palabras”, sino que es una representación mínima sobre la cual los modelos trabajan para procesar texto.

En otros contextos de IA o machine learning

Un token también puede hacer referencia a una unidad numérica en la representación de datos, como cuando se codifican palabras o secuencias en vectores (embeddings) para que los modelos puedan manejarlas matemáticamente.

Organización por capas

Capas de una red
Copyright: sciencelearn.org.nz

Una red neuronal es un modelo computacional que imita el funcionamiento del cerebro humano a través de un conjunto de neuronas artificiales (funciones matemáticas). Cada neurona (en color verde) recibe una entrada, desde la interfaz (en color azul), la multiplica por un conjunto de pesos (parámetros), le suma un sesgo (bias) y envia el resultado a la siguiente capa. Finalmente aplica una función de activación para producir una salida (en color amarillo).

Las neuronas están organizadas en capas, y las conexiones entre capas (conocidas como sinapsis) están definidas por estos parámetros (pesos y sesgos). Cada capa de neuronas recibe la salida de la capa anterior y la envía a la siguiente, permitiendo que la red aprenda representaciones complejas a medida que avanza.

Pero puede pasar que en el medio de su procesamiento, haga relaciones entre conceptos que no son correctos, en los humanos diriamos que se ‘confundió’ mientras que en este contexto lo llamamos ‘alucinación’. La diferencia radica en que la IA / modelo no se dará cuenta de eso hasta que termine de procesar todo y dé una salida claramente errónea.

Neuronas

Como he mencionado anteriormente, las neuronas son funciones matemáticas que a una entrada le aplican una multiplicación por el conjunto pesos (parámetros) y le suma un sesgo (bias) y pasar ese nuevo resultado a la siguiente neurona.

Como tal, cada peso y sesgo deben guardar su valor en un lugar, en los lenguajes de programación es en las variables. Y como tal pueden ser mutables o inmutables al momento de ser liberado el modelo al público, generalmente suelen ser inmutables para que la gente no los modifique.

Las variables tienen valores máximos que pueden almacenar según cuantos bits se estén usando para almacenar en memoria el dato. Por eso mismo, generalmente para que los modelos de IA tengan una muy buena precisión se usan variables F32 (float 32 bits) y es por ese motivo que cuando las mismas son muy pesadas para ser ejecutadas en una computadora sin mucha potencia, se puede realizar el proceso de ‘quantización’ el cual baja el tipo de dato de la variable a uno más liviano (como INT8 o INT4, véase entero de 8 o 4 bits) pero a costa de perder precisión en las respuestas y asociaciones.

Existen las llamadas ‘bitnets’ las cuales son redes neuronales en donde las variables tienen solamente 1 bit de almacenamiento (-1, 0 ó 1).

Tipos de redes neuronales

Al tipo de red neuronal se le llama; modelo y hay varios tipos:

  1. Convolutional Neural Network (CNN)

    Una red neuronal artificial convolucional o CNN (Convolutional Neural Network) es un tipo de red neuronal especialmente diseñada para procesar y analizar datos con estructura de grilla, como imágenes. Las CNN son populares en tareas de visión por computadora, como la clasificación de imágenes, el reconocimiento de objetos, la detección de rostros y el procesamiento de texto y voz.

    Las CNN se inspiran en cómo el cerebro humano procesa la información visual, simulando la forma en que las neuronas responden a estímulos en la corteza visual. En una CNN, se utilizan capas de convolución para reducir la complejidad y la dimensión de los datos, manteniendo al mismo tiempo las características más importantes. Esto permite que el modelo reconozca patrones visuales complejos sin procesar cada píxel individual.

    Una CNN recibe una imagen como entrada y pasa esa imagen a través de una serie de capas convolucionales, cada una con sus propios filtros que capturan características visuales progresivamente más abstractas. Al inicio, las primeras capas tienden a identificar bordes o patrones simples, mientras que las capas más profundas capturan estructuras más complejas, como partes de objetos o caras completas. Finalmente, la capa completamente conectada (o capas) interpreta estas características y produce la salida final, que suele ser la predicción de la red.

  2. Modelado predictivo

    Este tipo de modelos se basan en la estadistica de su entrenamiento para identificar patrones y predecir las siguientes acciones o valores. Es muy parecido a lo que hace el cerebro humano para aprender de la experiencia y predecir que tan probable es que pase algo en el futuro.

    Hay dos formas de aplicar este modelo; parámetricamente (asumen que los datos siguen una distribución específica y, por lo tanto, solo necesitan ajustar un número fijo de parámetros para realizar predicciones) y los no paramétricos (no asumen una distribución fija para los datos y, en cambio, permiten que la estructura del modelo se adapte libremente a los datos sin restricciones de parámetros fijos).

  3. Modelo de regresión

    La regresión es una técnica de modelado estadístico y de machine learning utilizada para predecir o estimar un valor continuo basándose en la relación entre una variable dependiente (eje ‘y’, la que se quiere predecir) y una o más variables independientes (eje ‘x’, las que se usan para hacer la predicción).

    En el contexto de machine learning y estadística, el objetivo de un modelo de regresión es encontrar la relación matemática que mejor explique cómo cambia la variable dependiente en función de las independientes, de manera que se puedan hacer predicciones en nuevos datos.

    El objetivo principal de la regresión es ajustar una función o modelo que describa la relación entre las variables y minimice el error en las predicciones. Esto se logra a través de técnicas de optimización que ajustan los parámetros del modelo para minimizar la función de pérdida.

    El más común de este tipo de modelos es el lineal;

    Pero también hay otras de mayor complejidad como la polinomial;

  4. Modelo Beyesian

    Es un modelo, mayormente representativo, en donde se relaciona a un objeto con otros. Al ser objetos representan tanto adjetivos como sustantivos.

    Es muy común para hacer relaciones, se usa mucho en el ámbito medicinal para detectar enfermedades según diferentes objetos presentes.

    También se llaman; diagramas de influencia.

  5. Modelo de regresión gaussiano

    Es un enfoque probabilístico no paramétrico para realizar regresión. Este modelo se basa en la suposición de que cualquier conjunto de puntos de datos puede describirse mediante una distribución conjunta gaussiana, y en lugar de estimar directamente una función específica, estima una distribución de funciones que podría explicar los datos observados. Esto permite que el modelo no solo prediga valores, sino también proporcione una estimación de incertidumbre en sus predicciones, lo que es valioso en contextos donde la confianza en los resultados es crítica.

    Un GP (Gaussian Process) es un conjunto de variables aleatorias, cada una de las cuales sigue una distribución normal, y cualquier subconjunto de ellas está también distribuido normalmente.

    El GPR (Gaussian Process Regression) no solo da una predicción, sino también una medida de incertidumbre en cada punto de predicción, lo cual es muy útil en aplicaciones donde la confianza en la predicción es relevante.

    El modelo no necesita definir explícitamente la forma de la función subyacente, por lo que puede modelar relaciones complejas en los datos.

    Los GPs son muy efectivos en contextos de datos pequeños o medianos, donde los modelos no paramétricos pueden superar a los modelos de regresión tradicionales.

    La principal desventaja de los GPs es su costo computacional, ya que requiere invertir mucho tiempo y memoria debido a la inversión de matrices, que se vuelve computacionalmente prohibitiva con datos grandes.

    El rendimiento del GPR depende en gran medida de la elección del kernel. La selección y ajuste de este kernel puede ser compleja, especialmente en problemas donde no se conoce mucho sobre los datos.