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.

Nociones elementales

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.

Fundamentos de programación

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

Programación general con Python

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.

Programación general con R

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.

Análisis y tratamiento de datos

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 datos

A continuación veremos cómo afrontar estas etapas en distintos lenguajes, con las librerías relevantes de cada uno.

Data science con Python

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

Data science con R

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.

Técnicas de IA

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.

Técnicas básicas

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.

Técnicas y principios básicos de la IA

Técnicas deterministas

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.

Técnicas estocásticas

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í

Machine learning

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

Introducción al machine learning

Deep learning

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.

Introducción a las redes neuronales

Deep learning con Keras/TensorFlow

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.

Otros aspectos

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.

Modelos pre-entrenados y en la nube

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.

Herramientas de modelado y despliegue

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.

 

(C) Nacho Iborra - I.E.S. San Vicente