Python
Python será nuestro lenguaje en esta asigntura. Es un lenguaje que sigue el paradigma imperativo, es de sintaxis sencilla y legible, interpretado, multiplataforma y de tipado dinámico. Si tienes Linux o Mac OS ya lo tienes por defecto en tu ordenador. Si usas Windows puedes descargarlo desde www.python.org. Hay muchos libros y tutoriales en Internet para aprender Python, éste está muy bien.
Como editor de código usaremos PyCharm.
Búsquedas
Los algoritmos de búsqueda llevan a cabo el descubrimiento de caminos, preferiblemente óptimos, en grafos. Aprenderemos cómo llevar a cabo búsquedas de diferentes formas: primero en profundidad, primero en anchura, con profundidad limitada... Una característica de estos métodos es que pueden ser informados, es decir, la búsqueda la orientan en función de información que se tiene sobre el problema en particular. Al modo en cómo utilizamos esta información para mejorar la búsqueda es a lo que denominamos heurística.
Prácticas
Referencias
- Apuntes de clase (Búsqueda informada)
- Artificial Intelligence: a modern approach. Russell, Stuart J; Norvig, Peter
Redes neuronales
Las redes neuronales artificiales son un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso biológico. Se trata de un sistema de interconexión de neuronas que colaboran entre sí para producir un estímulo de salida.
Apuntes
- Redes neuronales 1
- Redes neuronales 2
- Redes neuronales 3
- Redes neuronales 4
- Redes neuronales 5
- Redes neuronales 6
- Redes neuronales 7 + Enunciado práctica
- Redes neuronales 8
- Redes neuronales 9
- Demostrador de neurona artificial
- Demostrador de red neuronal artificial
PyTorch
- PyTorch 1
- PyTorch 2
- PyTorch 3
- PyTorch 4
- PyTorch 5
- PyTorch 6 (Iris)
- PyTorch 7 (MNIST)
- PyTorch 8 (MNIST - conv.)
Prácticas
- Cálculo manual de una red neuronal
- MNIST en Keras
- Participa en el dataset de preguntas del alumnado
- Código base de la práctica
- Redes neuronales con TensorFlow
- Código base para redes neuronales convolutivas con TensorFlow
- Series temporales
- Práctica 2: Red convolutiva en Keras (dataset)
Ejercicios y exámenes
- Preguntas de exámenes
- Resolución del ejercicio de redes del examen de la convocatoria ordinaria 2018
Referencias
- Backpropagation Tutorial
- A Step by Step Backpropagation Example
- How the backpropagation algorithm works
- Demo visual del funcionamiento de una red
- Introducción al TensorFlow
- Convolutional Neural Networks for Visual Recognition
Aprendizaje por refuerzo
El aprendizaje por refuerzo es un área del aprendizaje automático inspirada en la psicología conductista, cuya ocupación es determinar qué acciones debe escoger un agente en un entorno dado con el fin de maximizar alguna noción de "recompensa" o premio acumulado.
Apuntes
Prácticas
Referencias
- Transparencias de la asignatura
- A Painless Q-Learning Tutorial
- Sutton & Barto Book - Reinforcement Learning: An Introduction
- REINFORCEjs is a Reinforcement Learning library that implements several common RL algorithms supported with fun web demos
- Deep Reinforcement Learning: Pong from Pixels
- OpenAI Gym A toolkit for developing and comparing reinforcement learning algorithms. It supports teaching agents everything from walking to playing games like Pong or Go.
Sistemas basados en reglas
Los sistemas basados en reglas trabajan mediante la aplicación de reglas, comparación de resultados y aplicación de las nuevas reglas basadas en situación modificada. También pueden trabajar por inferencia lógica dirigida, bien empezando con una evidencia inicial en una determinada situación y dirigiéndose hacia la obtención de una solución, o bien con hipótesis sobre las posibles soluciones y volviendo hacia atrás para encontrar una evidencia existente (o una deducción de una evidencia existente) que apoye una hipótesis en particular.
Apuntes
Apuntes de lógicaApuntes de Prolog (Ejercicios)
Apuntes de CLIPSPrácticas
Entorno de desarrollo CLIPS. (Ejemplos, Notebook Clips & Python), (Código Clips & Python)
Entorno de desarrollo SWI-Prolog. (Ejemplos). (Ejercicio práctico).
Librería Python para lógica difusa scikit-fuzzy. (Ejemplo)
Computación evolutiva
La computación evolutiva es una rama de la inteligencia artificial que involucra problemas de optimización combinatoria. Se inspira en los mecanismos de la evolución biológica.
Apuntes
- Transparencias de la asignatura: algoritmos genéticos
- Transparencias de la asignatura: programación genética
- Transparencias de la asignatura: optimización por enjambre de partículas, colonia de hormigas y simulated annealing
Prácticas
Código de ejemplo de algoritmos genéticos - Práctica de la asignaturaCódigo de ejemplo de programación genética
Código de ejemplo de enjambres de partículas
Código de ejemplo de simulated annealing
Referencias
- Ejemplo interactivo de utilización de un AG para resolver el conocido problema del viajante.
- Ejemplo interactivo de utilización de colonias de hormigas para resolver el problema del viajante.
Redes Bayesianas
Una Una red bayesiana es un modelo de grafo probabilístico que representa un conjunto de variables aleatorias y sus dependencias condicionales a través de un grafo acíclico dirigido. Por ejemplo, una red bayesiana puede representar las relaciones probabilísticas entre enfermedades y síntomas. Dados los síntomas, la red puede ser usada para computar la probabilidad de la presencia de varias enfermedades.
Apuntes
- Incertidumbre (Ejercicios)
- Redes bayesianas (Ejercicios)
- Primera práctica sobre redes bayesianas
- Inferencia exacta en redes bayesianas
Práctica
Enunciado de la prácticaPlanificación
La planificación es el proceso de generar un plan de acción para lograr un objetivo específico en un entorno dado. La planificación es un componente importante en muchos sistemas de inteligencia artificial, incluyendo sistemas robóticos, sistemas de control de procesos industriales y sistemas de asistencia personal.
Apuntes
Machine Learning
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 a las computadoras aprender. De forma más concreta, se trata de crear programas capaces de generalizar comportamientos a partir de una información suministrada en forma de ejemplos. Es, por lo tanto, un proceso de inducción del conocimiento.
Apuntes
- Código sobre clasificación bayesiana visto en clase
- Código sobre K-means visto en clase
- Un buen tutorial sobre PCA.
- Código sobre PCA visto en clase
Prácticas
Práctica: clasificador bayesiano de análisis de opinión en comentarios de la IMDB. y Dataset IMDBProcesamiento del Lenguaje Natural (NLP)
Estrategia de Inteligencia Artificial 2024Apuntes
1. Introducción
2. Modelos estadísticos del lenguaje
- Preprocesamiento (Novela)
- Modelos estadísticos del lenguaje
- Entropía, entropía cruzada y divergencia Kullback-Leibler
- Corpus de texto (web Scraping)
3. Indexación y recuperación de información
4. Estrategias de clasificación
- Aprendizaje supervisado en clasificación de texto (Naive Bayes)
- Aprendizaje supervisado en clasificación de texto (Regresión Logística)
- Casos de uso
5. Modelos del lenguaje basados en redes neuronales artificiales
- Representación vectorial del texto
- RNN
- Práctica 1: (LSTM-GloVe) (Notebook Drive)
- Modelos seq2seq 1
- Modelos seq2seq 2 - Feedback
- Modelos seq2seq 3 - Mecanismo de atención. Enunciado de práctica de la asignatura (datasets)
- Transformers
- 🤗 Hugging Face
- T5 - Ejemplo de fine tuning
- BERT
- GPT
6. Entrenamiento de LLMs de dominio específico
Exámenes
Referencias
- Curso sobre Statistical NLP
- Tutorial Word2Vec: skip-gram
- Tutorial Word2Vec: Continuous Bag Of Words (CBOW)
- NLTK (Python)
- Libro sobre NLTK: Natural Language Processing with Python
- King – Man + Woman = Queen (demo on-line)
- Modelado del lenguaje.
- Etiquetado (tagging).
Misc.
- Entropía
- Divergencia de Kullback-Leibler
- t-SNE
- Autoencoders
- VAE
- U-Net
- Conexiones residuales
- Apuntes OpenCV 1
- Apuntes OpenCV 2
- Apuntes OpenCV 3
- Apuntes sobre la transformada de Fourier
- Demostrador interactivo de la transformada de Fourier