Aprendizaje automático
El aprendizaje automático (del inglés machine learning), es el subcampo de las ciencias de la computación, y una rama de la inteligencia artificial, cuyo objetivo es desarrollar técnicas que permitan que las computadoras aprendan. Se dice que un agente aprende cuando su desempeño mejora con la experiencia y mediante el uso de datos; es decir, cuando la habilidad no estaba presente en su genotipo o rasgos de nacimiento.[1] "En el aprendizaje de máquinas un computador observa datos, construye un modelo basado en esos datos y utiliza ese modelo a la vez como una hipótesis acerca del mundo y una pieza de software que puede resolver problemas".[2]
En muchas ocasiones el campo de actuación del aprendizaje automático se solapa con el de la estadística inferencial, ya que las dos disciplinas se basan en el análisis de datos. Sin embargo, el aprendizaje automático incorpora las preocupaciones de la complejidad computacional de los problemas. Muchos problemas son de clase NP-hard, por lo que gran parte de la investigación realizada en aprendizaje automático está enfocada al diseño de soluciones factibles a esos problemas. El aprendizaje automático también está estrechamente relacionado con el reconocimiento de patrones. El aprendizaje automático puede ser visto como un intento de automatizar algunas partes del método científico mediante métodos matemáticos. Por lo tanto es un proceso de razonamiento inductivo.
El aprendizaje automático tiene una amplia gama de aplicaciones, incluyendo motores de búsqueda, diagnósticos médicos, detección de fraude en el uso de tarjetas de crédito, análisis de mercado, clasificación de secuencias de ADN, reconocimiento del habla y del lenguaje escrito, juegos y robótica.
El aprendizaje automático nació de la búsqueda de inteligencia artificial. Ya en los primeros días de la IA como disciplina académica, algunos investigadores se interesaron en hacer que las máquinas aprendiesen. Trataron de resolver el problema con diversos métodos simbólicos, así como lo que ellos llamaron 'redes neurales' que eran en general perceptrones y otros modelos básicamente basados en modelos lineares generalizados como se conocen en las estadísticas.
Muchos lenguajes de programación se pueden utilizar para implementar algoritmos de aprendizaje automático. Los más populares para 2015 eran R y Python.[3] R es muy usado ante todo en el campo académico, mientras que Python es más popular en la empresa privada.
Modelos[editar | editar código]
El aprendizaje automático tiene como resultado un modelo para resolver una tarea dada. Entre los modelos se distinguen[4]
- Los modelos geométricos, construidos en el espacio de instancias y que pueden tener una, dos o múltiples dimensiones. Si hay un borde de decisión lineal entre las clases, se dice que los datos son linealmente separables. Un límite de decisión lineal se define como w * x = t, donde w es un vector perpendicular al límite de decisión, x es un punto arbitrario en el límite de decisión y t es el umbral de la decisión.
- Los modelos probabilísticos, que intentan determinar la distribución de probabilidades descriptora de la función que enlaza a los valores de las características con valores determinados. Uno de los conceptos claves para desarrollar modelos probabilísticos es la estadística bayesiana.
- Los modelos lógicos, que transforman y expresan las probabilidades en reglas organizadas en forma de árboles de decisión.
Los modelos pueden también clasificarse como modelos de agrupamiento y modelos de gradiente. Los primeros tratan de dividir el espacio de instancias en grupos. Los segundos, como su nombre lo indican, representan un gradiente en el que se puede diferenciar entre cada instancia. Clasificadores geométricos como las máquinas de vectores de apoyo son modelos de gradientes.
Aprendizaje supervisado[editar | editar código]
El aprendizaje supervisado se caracteriza por contar con información que especifica qué conjuntos de datos son satisfactorios para el objetivo del aprendizaje. Un ejemplo podría ser un software que reconoce si una imagen dada es o no la imagen de un rostro: para el aprendizaje del programa tendríamos que proporcionarle diferentes imágenes, especificando en el proceso si se trata o no de rostros.
En el aprendizaje automático supervisado, el algoritmo produce una función que establece una relación entre las entradas y las salidas deseadas del sistema. En el marco del aprendizaje automático se suele distinguir entre regresión y clasificación, dependiendo de si la salida es una variable cuantitativa o cualitativa.
La transducción es similar al aprendizaje supervisado, pero no construye de forma explícita una función. Trata de predecir las categorías de los futuros ejemplos basándose en los ejemplos de entrada, sus respectivas categorías y los ejemplos nuevos al sistema.
Regresión[editar | editar código]
Una de las técnicas clave en el aprendizaje automático supervisado es el análisis de regresión. Este se usa para entrenar y testear modelos de regresión para predecir valores de variables cuantitativas, normalmente continuas. El conjunto de datos se divide en una parte para entrenamiento y en otra para testeo. La precisión de la predicción de un modelo se evalúa utilizando medidas de ajuste como la raíz del error cuadrático medio, lo que permite comparar modelos de regresión. Para evitar el sobreajuste del modelo al conjunto de datos de entrenamiento y mejorar la generalización, se aplican técnicas de regularización como Ridge, LASSO y la regularización de red elástica.
Clasificación[editar | editar código]
En el contexto del aprendizaje automático, se denomina clasificación al caso en el que el sistema de aprendizaje trata de etiquetar (clasificar) una serie de vectores utilizando una entre varias categorías (clases). La base de conocimiento del sistema está formada por ejemplos de etiquetados anteriores. No es más que un análisis de regresión donde la variable dependiente es una variable categórica o cualitativa. Las técnicas empleadas incluyen regresión logística, árboles de decisión, métodos de conjunto (ensemble methods) y técnicas de conjunto (ensemble techniques) como bosques aleatorios (random forests) y aumento de gradientes (gradient boosting).
Este tipo de aprendizaje se ha mostrado muy útil en problemas de investigación biológica, biología computacional y bioinformática. También se emplea para predecir la pérdida de clientes, detectar fraude o categorizar productos.
Árboles de decisiones[editar | editar código]
El aprendizaje por árboles de decisión usa un árbol de decisión como modelo predictivo que mapea observaciones a conclusiones sobre el valor de un objeto dado.
Este tipo de aprendizaje usa un árbol de decisiones como modelo predictivo. Se mapean observaciones sobre un objeto con conclusiones sobre el valor final de dicho objeto.
Los árboles son estructuras básicas en la informática. Los árboles de atributos son la base de las decisiones. Una de las dos formas principales de árboles de decisiones es la desarrollada por Quinlan de medir la impureza de la entropía en cada rama, algo que primero desarrolló en el algoritmo ID3 y luego en el C4.5. Otra de las estrategias se basa en el índice GINI. El algoritmo de CART es una implementación de esta estrategia.[5]
Reglas de asociación[editar | editar código]
Los algoritmos de reglas de asociación procuran descubrir relaciones interesantes entre variables. Entre los métodos más conocidos se hallan el algoritmo a priori, el algoritmo Eclat y el algoritmo de patrón frecuente.
Algoritmos genéticos[editar | editar código]
Los algoritmos genéticos son procesos de búsqueda heurística que simulan la selección natural. Usan métodos tales como la mutación y el cruzamiento para generar nuevas clases que puedan ofrecer una buena solución a un problema dado.
Máquinas de vectores de soporte[editar | editar código]
Las máquinas de vectores de soporte (MVS9 son una serie de métodos de aprendizaje supervisado usados para clasificación y regresión. Los algoritmos de MVS usan un conjunto de ejemplos de formación clasificada en dos categorías para construir un modelo que prediga si un nuevo ejemplo pertenece a una u otra de dichas categorías.
Redes bayesianas[editar | editar código]
Una red bayesiana, red de creencia o modelo acíclico dirigido es un modelo probabilístico que representa una serie de variables de azar y sus independencias condicionales a través de un grafo acíclico dirigido. Una red bayesiana puede representar, por ejemplo, las relaciones probabilísticas entre enfermedades y síntomas. Dados ciertos síntomas, la red puede usarse para calcular las probabilidades de que ciertas enfermedades estén presentes en un organismo. Hay algoritmos eficientes que infieren y aprenden usando este tipo de representación.
Aprendizaje no supervisado[editar | editar código]
En el aprendizaje no supervisado, el programa no cuenta con datos que definan qué información es satisfactoria o no. El objetivo principal de estos programas suele ser encontrar patrones que permitan separar y clasificar los datos en diferentes grupos, en función de sus atributos. Siguiendo el ejemplo anterior un software de aprendizaje no supervisado no sería capaz de decirnos si una imagen dada es un rostro o no pero sí podría, por ejemplo, clasificar las imágenes entre aquellas que contienen rostros humanos, de animales, o las que no contienen. La información obtenida por un algoritmo de aprendizaje no supervisado debe ser posteriormente interpretada por una persona para darle utilidad.
En el aprendizaje automático no supervisado, todo el proceso de modelado se lleva a cabo sobre un conjunto de ejemplos formado tan solo por entradas al sistema. Se trabaja con un conjunto de datos que no cuenta con variable objetivo. Por lo tanto, el sistema tiene que ser capaz de reconocer patrones en el conjunto de datos y descubrir agrupaciones ocultas, para poder asignar una etiqueta a las nuevas entradas.
Las técnicas fundamentales de aprendizaje no supervisado se basan en el análisis de grupos (las más comunes son el agrupamiento jerárquico o basado en conectividad, y el método conocido como k-medias basado en centroide) y en la reducción de dimensionalidad (análisis de componentes principales, análisis factorial, DBSCAN...) para encontrar información en conjuntos de datos no etiquetados.
El análisis de grupos (en inglés, clustering) es la clasificación de observaciones en subgrupos (clusters) para que las observaciones en cada grupo se asemejen entre sí según ciertos criterios. Las técnicas de agrupamiento hacen inferencias diferentes sobre la estructura de los datos; se guían usualmente por una medida de similitud específica y por un nivel de compactamiento interno (similitud entre los miembros de un grupo) y la separación entre los diferentes grupos.
Los algoritmos de aprendizaje semisupervisado combinan los algoritmos de aprendizaje supervisado y no supervisado. Se tiene en cuenta los datos marcados y los no marcados.
Aprendizaje profundo[editar | editar código]
El aprendizaje profundo (calco del inglés deep learning) es una rama del aprendizaje automático que se basa en el uso de algoritmos para modelar y comprender datos complejos. Estos algoritmos se inspiran en la estructura y función del cerebro humano, utilizando múltiples capas de procesamiento para extraer y transformar información de manera iterativa. El objetivo es crear modelos que puedan aprender representaciones abstractas de los datos, lo que les permite realizar tareas como el reconocimiento de patrones, la clasificación y la predicción con alta precisión.[7] El aprendizaje automático profundo está detrás de sistemas de reconocimiento de imagen y de voz y de procesamiento del lenguaje natural.
En esencia, el aprendizaje profundo busca identificar las mejores maneras de representar los datos para facilitar el aprendizaje de tareas específicas. Por ejemplo, una imagen puede representarse como un conjunto de pixeles, pero algunas representaciones, como las que resaltan las características importantes de la imagen, pueden hacer que sea más fácil para un modelo determinar si la imagen contiene un rostro humano.
Los algoritmos de aprendizaje profundo, como otros algoritmos de aprendizaje automático, pueden utilizarse tanto en escenarios de aprendizaje supervisado como en escenarios de aprendizaje no supervisado.
El aprendizaje profundo ha demostrado ser especialmente eficaz en áreas como la visión artificial, el reconocimiento del habla y el procesamiento de audio y música. Arquitecturas como las redes neuronales convolucionales y los transformadores han logrado resultados sobresalientes en estas áreas, superando a menudo a otros enfoques de aprendizaje automático.
El aprendizaje profundo se sustenta sobre las redes neuronales artificiales (RNA), paradigma inspirado en las neuronas de los sistemas nerviosos de los animales. Se trata de un sistema de enlaces de neuronas que colaboran entre sí para producir un estímulo de salida. Las conexiones tienen pesos numéricos que se adaptan según la experiencia. De esta manera, las redes neurales se adaptan a un impulso y son capaces de aprender.
La importancia de las redes neurales cayó durante un tiempo con el desarrollo de los vectores de soporte y clasificadores lineales, pero volvió a surgir a finales de la década de 2000 con la llegada del aprendizaje profundo. Desde la década de 2010, los avances tanto en algoritmos de aprendizaje automático como en hardware informático han dado lugar a métodos más eficientes para entrenar redes neuronales profundas que contienen muchas capas de unidades ocultas no lineales.[8] En 2019, las unidades de procesamiento gráfico (GPU), a menudo con mejoras específicas de IA, habían desplazado a las CPU como método dominante para entrenar IA comercial en la nube a gran escala.[9] OpenAI calculó la computación de hardware utilizada en los mayores proyectos de aprendizaje profundo desde AlexNet (2012) hasta AlphaZero (2017), y descubrió un aumento de 300 000 veces en la cantidad de computación necesaria, con una línea de tendencia de tiempo de duplicación de 3,4 meses.[10][11]
Definiciones[editar | editar código]
Aunque no existe una definición única y universalmente aceptada de aprendizaje profundo, el concepto central implica el uso de múltiples capas de procesamiento para extraer características y patrones de los datos. Las diferentes definiciones suelen destacar aspectos como:
- Uso de capas no lineales: Los algoritmos de aprendizaje profundo utilizan una serie de capas, cada una de las cuales aplica una transformación no lineal a los datos de entrada. Esto permite que el modelo aprenda representaciones complejas y abstractas de los datos.
- Aprendizaje de representaciones jerárquicas: El aprendizaje profundo se basa en la idea de que los datos pueden representarse en múltiples niveles de abstracción. Las capas inferiores aprenden características básicas, mientras que las capas superiores combinan estas características para formar representaciones más complejas.
En resumen, el aprendizaje profundo se caracteriza por el uso de múltiples capas de procesamiento no lineal para aprender representaciones jerárquicas de los datos, ya sea de forma supervisada o no supervisada.
La diferencia clave entre los algoritmos de aprendizaje profundo y los de aprendizaje "poco profundo" radica en el número de transformaciones que se aplican a los datos. Mientras que los algoritmos "poco profundos" pueden aplicar una o dos transformaciones, los algoritmos de aprendizaje profundo suelen utilizar muchas más capas, lo que les permite aprender representaciones más complejas.[12]: 6 Aunque no hay un número exacto de capas que defina cuándo un algoritmo se considera "profundo", la mayoría de los investigadores coinciden en que implica más de dos transformaciones intermedias.[12]: 7
Computación en la nube[editar | editar código]
Aceleración con GPU[editar | editar código]
La ejecución de algoritmos de aprendizaje profundo requiere una gran cantidad de potencia de cálculo, especialmente durante el proceso de entrenamiento. Las GPU (unidades de procesamiento gráfico) se han convertido en una herramienta esencial para acelerar este proceso, gracias a su capacidad para realizar cálculos en paralelo de manera eficiente. Esta técnica se conoce como computación de propósito general en GPU (GPGPU, del inglés general-purpose computing on graphics processing units).
El uso de GPU permite reducir significativamente el tiempo necesario para entrenar modelos de aprendizaje profundo, lo que ha impulsado el desarrollo de aplicaciones en diversos campos, como la biología. Por ejemplo, se han utilizado redes neuronales convolucionales (CNN) para segmentar glándulas en imágenes de histología, lo que puede ayudar en el diagnóstico de enfermedades.[13][14]
Servicios en la nube[editar | editar código]
Los principales proveedores de servicios en la nube, como Amazon, Azure e IBM, ofrecen servicios de infraestructura que incluyen acceso a GPU. Esto permite a los usuarios ejecutar algoritmos de aprendizaje profundo sin necesidad de invertir en hardware costoso.[15]
Google Cloud y TensorFlow[editar | editar código]
Google ofrece una plataforma de aprendizaje automático (PaaS) que incluye servicios para crear y desplegar modelos de aprendizaje profundo. Esta plataforma, que se basa en la biblioteca de código abierto TensorFlow, proporciona modelos pre-entrenados y herramientas para personalizar modelos según las necesidades específicas del usuario.
Hardware[editar | editar código]
El auge del aprendizaje profundo en la década de 2010 se ha debido tanto a los avances en los algoritmos como a las mejoras en el hardware de computación. Las GPU, a menudo optimizadas específicamente para tareas de inteligencia artificial, han superado a las CPU como la opción preferida para el entrenamiento de modelos de aprendizaje profundo a gran escala.[16]
Se ha estimado que la cantidad de potencia de cálculo necesaria para entrenar modelos de aprendizaje profundo ha aumentado exponencialmente en los últimos años. Un análisis de OpenAI reveló que la cantidad de cálculo utilizada en los proyectos de aprendizaje profundo más grandes creció 300.000 veces entre 2012 y 2017, con un tiempo de duplicación de tan solo 3,4 meses.[17]
Aprendizaje por refuerzo[editar | editar código]
El aprendizaje por refuerzo se centra en la toma de decisiones y en el aprendizaje a través de la interacción con un entorno. Conceptos clave en el proceso de aprendizaje por refuerzo son los de agentes, entornos, acciones, recompensas y políticas. Tiene importantes aplicaciones en robótica y sistemas autónomos.
El algoritmo aprende observando el mundo que le rodea. Su información de entrada es la retroalimentación que obtiene del mundo exterior como respuesta a sus acciones. Por lo tanto, el sistema aprende a base de ensayo-error.
En el aprendizaje por refuerzo, en vez de que un instructor indique al agente qué hacer, el agente inteligente debe aprender cómo se comporta el entorno mediante recompensas (refuerzos) o castigos, derivados del éxito o del fracaso respectivamente. El objetivo principal es aprender la función de valor que le ayude al agente inteligente a maximizar la señal de recompensa y así optimizar sus políticas de modo a comprender el comportamiento del entorno y a tomar buenas decisiones para el logro de sus objetivos formales.
Los principales algoritmos de aprendizaje por refuerzo se desarrollan dentro de los métodos de resolución de problemas de decisión finitos de Markov, que incorporan las ecuaciones de Bellman y las funciones de valor. Los tres métodos principales son: la programación dinámica, los métodos de Monte Carlo y el aprendizaje de diferencias temporales.[18]
Entre las implementaciones desarrolladas está AlphaGo, un programa de IA desarrollado por Google DeepMind para jugar el juego de mesa Go. En marzo de 2016 AlphaGo le ganó una partida al jugador profesional Lee Se-Dol que tiene la categoría noveno dan y 18 títulos mundiales. Entre los algoritmos que utiliza se encuentra el árbol de búsqueda Monte Carlo, también utiliza aprendizaje profundo con redes neuronales. Puede ver lo ocurrido en el documental de Netflix “AlphaGo”.
Temas del aprendizaje automático[editar | editar código]
A continuación se muestran una serie de temas que podrían formar parte del temario de un curso sobre aprendizaje automático.
- Modelado de funciones de densidad de probabilidad condicionadas: clasificación y regresión
- Modelado de funciones de densidad de probabilidad mediante modelos generativos
- Técnicas de inferencia aproximada
Véase también[editar | editar código]
Referencias[editar | editar código]
- ↑ Russell, Stuart; Norvig, Peter (2009). Inteligencia Artificial: Un Enfoque Moderno (3rd edición). p. 229.
- ↑ Russell and Norvig (2021). Artificial Intelligence: A Modern Approach (en inglés). Pearson. p. 651. ISBN 9780134610993.
- ↑ Four main languages for analytics and data mining science (KD Nuggets)
- ↑ Flach 2012 Págs. 20-21
- ↑ Flach 2012 Págs. 155-156
- ↑ Schulz, Hannes; Behnke, Sven (1 de noviembre de 2012). «Deep Learning». KI - Künstliche Intelligenz (en English) 26 (4): 357-363. ISSN 1610-1987. S2CID 220523562. doi:10.1007/s13218-012-0198-z.
- ↑ Y. Bengio, A. Courville, and P. Vincent., "Representation Learning: A Review and New Perspectives," IEEE Trans. PAMI, special issue Learning Deep Architectures, 2013 (en inglés)
- ↑ «Deep Neural Networks for Acoustic Modeling in Speech Recognition». Consultado el 23 de octubre de 2015.
- ↑ «GPUs Continue to Dominate the AI Accelerator Market for Now» (en English). Consultado el 11 de junio de 2020.
- ↑ «Application with Machine Learning Integration». Consultado el 18 de noviembre de 2020.
- ↑ Ray, Tiernan. «AI is changing the entire nature of compute» (en English). Consultado el 11 de junio de 2020.
- ↑ 12,0 12,1 J. Schmidhuber, "Deep Learning in Neural Networks: An Overview" http://arxiv.org/abs/1404.7828, 2014
- ↑ Sirinukunwattana K., Pluim JPW., Chen H., Qi X., Heng P-A., Guo YB., et al. (2017). «Gland segmentation in colon histology images: The glas challenge contest.». Med Image Anal 35: 489-502. PMID 27614792. doi:10.1016/j.media.2016.08.008.
- ↑ Shan D, Zheng J, Klimowicz A, Panzenbeck M, Liu Z, Feng D. (2021). «Deep learning for discovering pathological continuum of crypts and evaluating therapeutic effects: An implication for in vivo preclinical study.». PLoS ONE 16 (6): e0252429. doi:10.1371/journal.pone.0252429. Consultado el 14 de junio de 2021.
- ↑ «GPU Cloud Computing Solutions from NVIDIA». www.nvidia.com. Consultado el 18 de noviembre de 2016.
- ↑ Andrew Trask (2019). Grokking Deep Learning. Manning. ISBN 978-1617293702. Archivado desde el original el 14 de septiembre de 2021. Consultado el 14 de septiembre de 2021.
- ↑ «AI and Compute». OpenAI (en English). 16 de mayo de 2018. Archivado desde el original el 17 de junio de 2020. Consultado el 11 de junio de 2020.
- ↑ Sutton, Richard S., Barto, Andrew G. Reinforcement Learning: An Introduction. The MIT Press.
Bibliografía[editar | editar código]
- Bishop, Christopher (2008) Pattern Recognition and Machine Learning. Springer Verlag. ISBN=978-0-3873-1073-2.
- Flach, Peter (2012) Machine Learning: The Art and Science of Algorithms that Make Sense of Data. Cambridge University Press. ISBN 978-1-107-42222-3.
- Gollapudi, Sunila (2016) Practical Machine Learning. Packt Publishing. ISBN=978-1-78439-968-4.
- Ian H. Witten and Eibe Frank (2011). Data Mining: Practical machine learning tools and techniques Morgan Kaufmann, 664 pág., ISBN 978-0-12-374856-0.
- Mitchell, T. (1997). Machine Learning, McGraw Hill. ISBN 0-07-042807-7
- Raschka, Sebastian (2015). Python Machine Learning, Packt Open Source. ISBN 978-1-78355-513-0
Enlaces externos[editar | editar código]
- Ejemplos prácticos de Machine Learning en Español
- Blog sobre Aprendizaje Automático - La biblia del Machine Learning
- El Machine Learning cambiará el mundo
- Machine Learning Development with Perl (en inglés)
- Estudio y aplicación de técnicas de aprendizaje automático orientadas al ámbito médico: estimación y explicación de predicciones individuales. Universidad Autónoma de Madrid
- AlphaGo Archivado el 4 de febrero de 2018 en Wayback Machine.
- Machine Learning explicado (podcast)
- Machine Learning: Selección de métricas de clasificación (en español)