Esta web es un compendio sobre materiales de Inteligencia Artificial. Se partirá de unos conceptos básicos relacionados con IA, y unas nociones básicas sobre los lenguajes de programación que se utilizarán, para luego profundizar en aspectos como sistemas de clasificación, aprendizaje automático, redes neuronales, etc.
El uso de estos materiales está sujeto a una licencia Creative Commons CC BY-NC.
Para comenzar a introducirnos en el campo de la Inteligencia Artificial, conviene estar familiarizado con unos conceptos que leeremos durante todo el curso, así como con los lenguajes y herramientas que vamos a utilizar.
Para poder desarrollar aplicaciones basadas en inteligencia artificial es necesario tener unas nociones básicas (y no tan básicas) de programación. A continuación se tienen apuntes de programación en diferentes lenguajes apropiados para el campo de la inteligencia artificial
En cuanto a lenguajes de programación, a día de hoy Python es el más ampliamente utilizado. Para empezar a familiarizarnos con este lenguaje, su sintaxis y las posibilidades que ofrece, tenemos estos recursos.
R es otro lenguaje de programación ampliamente usado en el análisis estadístico de datos, y también para algunas tareas de machine learning. Aquí veremos los aspectos más relevantes del lenguaje, para familiarizarnos con él.
Ahora que hemos tratado los aspectos importantes de los lenguajes de programación vamos a dar un "aperitivo" de lo que luego vamos a necesitar en gran parte de las aplicaciones basadas en inteligencia artificial. Para que un programa tome una decisión necesita disponer de unos datos de entrada sobre los que tomarla, y esos datos es necesario que sean los adecuados, y estén en el formato correcto. Para este propósito podemos utilizar diversos módulos o librerías que nos van a ayudar a recopilar información, filtrarla y formatearla para el propósito del programa en cuestión.
Para empezar, vamos a explicar algunas nociones básicas relacionadas con el análisis de datos
Introducción al análisis de datosA continuación veremos cómo afrontar estas etapas en distintos lenguajes, con las librerías relevantes de cada uno.
Comenzaremos analizando las librerías y procesos más habituales en lenguaje Python, que es, quizá, el más habitual para este tipo de procesos
Pasamos ahora a explicar las librerías y métodos más importantes para el tratamiento y análisis de datos en R, con varios ejemplos.
Como se ha comentado en el documento de conceptos básicos, existen varias ramas dentro del mundo de la inteligencia artificial, en las que se aplican diferentes técnicas o estrategias para resolver problemas. En esta sección veremos algunas de ellas, catalogándolas en diferentes categorías.
Comenzaremos viendo algunas técnicas más o menos básicas. Comenzaremos explicando algunos principios que tenemos que tener en cuenta en (casi) todo proceso basado en IA.
Las técnicas deterministas producen siempre el mismo resultado final a partir de un estado determinado. Existen varias de estas técnicas, y veremos aquí sólo algunos ejemplos.
Las técnicas estocásticas no producen siempre el mismo resultado final a partir de un estado determinado, porque en ellas interviene de un modo u otro la aleatoriedad. Por ejemplo, a la hora de calcular la probabilidad o no de que algo suceda. Veremos a continuación algunos ejemplos de estas técnicas; estos ejemplos concretos se englobarían dentro de la rama de aprendizaje por refuerzo
El aprendizaje por refuerzo es un subgrupo de técnicas dentro del machine learning mediante las que un programa aprende a mejorar su funcionamiento a base de recompensas en cada acción realizada. Veremos algunas de las técnicas más habituales aquí
El machine learning es quizá, a día de hoy, la rama más importante dentro de la inteligencia artificial. Comprende una serie de técnicas que hacen que un sistema aprenda por sí mismo a dar una solución apropiada a un problema. Veremos algunos de los tipos de machine learning existentes, con sus técnicas más habituales
El deep learning es una subcategoría dentro del machine learning que incluye técnicas que realizan un análisis más detallado o profundo de los datos de entrada para producir un resultado. Fundamentalmente hablaremos de redes neuronales profundas, pero existen distintos tipos y utilidades. Comentaremos aquí algunos de los principales.
Keras es una de las librerías más populares y sencillas para trabajar con redes neuronales, y su integración con la librería TensorFlow de Google a partir de su versión 2 le ha dado aún más popularidad. En este apartado veremos cómo utilizar ambas para crear distintos tipos de redes neuronales.
En esta sección cubriremos otros aspectos también relacionados con el desarrollo de aplicaciones basadas en inteligencia artificial, como el uso de modelos pre-entrenados o el acceso a servicios en la nube, entre otras cosas.
El uso de modelos pre-entrenados puede suponer un ahorro de tiempo considerable, puesto que utilizaremos un modelo ya hecho que se puede ajustar al problema que pensamos resolver. Estos modelos suelen estar disponibles de forma online, bien a través de alguna web que permite acceder a ellos mediante una API, o bien alojados en algún proveedor cloud.
En este apartado echaremos un vistazo a algunas de las herramientas más relevantes para desarrollar modelos basados en IA. Algunas de ellas permitirán realizar la tarea previa de análisis y limpieza de datos de forma sencilla y visual, y otras nos ayudarán a desarrollar el modelo y/o desplegarlo en distintas plataformas.