Entrega y presentación
La entrega será en formato PDF. Leer Entrega y presentación de tareas.
Calificación
La tarea se calificará con una nota de 0 a 10.
Actividades
Descarga el fichero enunciado_redes_neuronales y realiza las siguientes actividades.
Se ha usado la versión de Python 3.9.13 para ejecutar los todos los cuadernos ya que la librería de Tensorflow no es compatible con Python 3.11.5. Si no recuerdas como instalar una versión de Python en concreto puedes volver a leer el artículo Tutorial: Entornos de desarrollo para Aprendizaje Automático.
(Voluntaria) Tutorial
Lee el artículo Tutorial: Tensorflow Playground.
Experimentación con TensorFlow Playground
Propuestas de cambios:
- Subir el ratio of training to test data al 70%
- Dejar una única capa interna con una neurona
- Añadir 2 neuronas más a la capa interna (de forma que tenga 3 neuronas)
- Cambiar el dataset al que tiene 4 zonas cuadradas diferentes
- Cambiar el dataset al que tiene el remolino (necesitará más capas con más neuronas)
- Cambio valores de los hiperparámetros
- Adición de ruido a los datos de entrada
Conclusiones:
- Pocas neuronas en las capas ocultas provocarán infraajuste o underfitting.
- Demasiadas neuronas en las capas ocultas provocarán overfitting (la red neuronal tiene más capacidad de procesamiento de información que la cantidad de información contenida en el conjunto de entrenamiento que no es suficiente para entrenar a todas las neuronas de las capas ocultas) y mucho más tiempo de procesamiento.
📷 Haz una o varias capturas para demostrar que la actividad ha sido realizada satisfactoriamente por ti. Deberá verse la fecha y hora en la barra de inicio.
Dataset circle
Encontrar la estructura mínima necesaria para lograr una clasificación exitosa del data set “circle”.
📷 Efectúa captura de pantalla de, al menos, la estructura mínima óptima que consideres (aunque también puedes añadir las de las diferentes pruebas que vayas haciendo). Deberá verse la fecha y hora en la barra de inicio.
(Voluntaria) Dataset spiral
Encontrar una estructura de red neuronal profunda que logre un modelo de clasificación exitoso para el dataset “spiral”.
En este caso, que es más complicado, es probable que necesites incorporar algún parámetro de entrada más. Pues por muchas capas y neuronas que incluyas, y por muchas iteraciones (o tiempo de entrenamiento) que dejes pasar, va a ser muy complicado que el entrenamiento proporcione un modelo sin errores. Por ejemplo, en este caso, se aproxima bastante, pero hay algunas áreas con puntos del color contrario y además se observa una inestabilidad importante en la corrección de los parámetros erróneos (gráfica de arriba a la derecha).
Entrenamiento inestable en Tensorflow Playground
Te recomiendo que incluyas algún parámetro de entrada tipo “sin”
📷 Efectúa captura de pantalla de, al menos, la estructura mínima óptima que consideres (aunque también puedes añadir las de las diferentes pruebas que vayas haciendo). Deberá verse la fecha y hora en la barra de inicio.
(Voluntaria) Breve Historia de las Redes Neuronales Artificiales
Lee el artículo Breve Historia de las Redes Neuronales Artificiales y responde a las siguientes preguntas sobre el mismo:
- ¿Cómo es también llamada la neurona artificial?
- ¿Cuántas salidas binarias puede tener un perceptrón?
- ¿Qué diferencia hay entre un perceptrón y una neurona sigmoide?
- En una red tipo feedforward ¿puede haber bucles?
- ¿Para qué son buenas las Redes Neuronales Convolucionales?
- En las redes neuronales convolucionales, ¿de que depende el número de nodos de salida?
- ¿Para qué se suelen aplicar las redes neuronales LSTM?
- ¿Utilizar pesos aleatorios al inicializar las redes es una buena idea?
- En las GAN, ¿cuál es la función del generador?
Aprendizaje Profundo: una Guía rápida
Lee el artículo Aprendizaje Profundo: una Guía rápida y responde a las siguientes preguntas sobre el mismo:
- ¿Cuántas neuronas hay en la capa de salida del ejemplo?
- ¿Qué son los pesos?
- ¿Cómo crees que se calcula la función de coste en la última capa?
- ¿Cuál es el valor ideal de la función de coste?
- ¿Con qué algoritmo se minimiza la función de coste?
Una sencilla Red Neuronal en Python con Keras y Tensorflow
Lee el artículo Una sencilla Red Neuronal en Python con Keras y Tensorflow y responde a las siguientes preguntas sobre el mismo:
- ¿Por qué usa la puerta lógica XOR para su ejemplo?
- ¿Qué funciones de activación conoces a parte de
relu
? - ¿Qué función de pérdida utiliza en el ejemplo?
- ¿Se puede guardar una red entrenada?
- ¿Tiene sentido utilizar una red neuronal para resolver la tabla de verdad de un XOR?
(Voluntaria) Crear una Red Neuronal en Python desde cero
Lee el artículo Crear una Red Neuronal en Python desde cero y responde a las siguientes preguntas sobre el mismo:
- ¿Qué es el Bias?
- ¿Qué significa epoch?
- ¿Qué es el learning rate? ¿Cuánto vale el learning rate en código de ejemplo?
- ¿Dónde utiliza derivadas y por qué?
Si quieres saber como se uso esta red neuronal puedes leer el artículo Programa un coche Arduino con Inteligencia Artificial
ML.4.1.IntroRRNN-MNIST
Dado el fichero ML.4.1.IntroRRNN-MNIST
, lee, ejecuta y responde a las preguntas que aparecen a lo largo del mismo.
Si es necesario escribir código para responder a alguna pregunta déjalo indicado en un bloque de código.
📸 Haz una o varias capturas de pantalla donde se vea lo que has ejecutado el fichero correspondiente.
(Voluntaria) Ejemplo_RRNN_convolucionales
Lee, ejecuta y comprende el fichero Ejemplo_RRNN_convolucionales
.
(Voluntaria NO recomendada) Notebooks de Google
Lee, ejecuta y comprende los ficheros:
1.1-beginner.ipynb
1.2-classification.ipynb
1.3-csv.ipynb
1.4-KerasGuide_sequential_model. ipynb
2.1 -advanced.ipynb
2.2-basics.ipynb
2.3-keras.ipynb
Estos cuadernos están en inglés.
(Voluntaria) Demos Keras
Lee, ejecuta y comprende los ficheros:
demoKeras1.ipynb
demoKeras2.ipynb
(Voluntaria NO recomendada) 10_neural_nets_with_keras
En el entorno holm3
, lee, ejecuta y intenta comprender el fichero 10_neural_nets_with_keras.ipynb
.
Si quieres que te funcione en tu máquina local sin problema deberás importar el entorno llamado environment.yml
de la siguiente manera:
1
$conda env create -f environment.yml
Posteriormente puedes activar el entorno de la siguiente manera:
1
$conda activate homl3
Este cuaderno está en inglés.
Este cuaderno está hecho usando Python 3.10.14
(Voluntaria NO recomendada) 11_training_deep_neural_networks
En el entorno holm3
, lee, ejecuta e intenta comprender el fichero 11_training_deep_neural_networks.ipynb
.
Este cuaderno está en inglés.
Este cuaderno está hecho usando Python 3.10.14
Bibliografía
- https://github.com/ageron/handson-ml3
- https://www.khanacademy.org/
- https://playground.tensorflow.org
- https://www.aprendemachinelearning.com/breve-historia-de-las-redes-neuronales-artificiales/
- https://www.aprendemachinelearning.com/aprendizaje-profundo-una-guia-rapida/
- https://www.aprendemachinelearning.com/una-sencilla-red-neuronal-en-python-con-keras-y-tensorflow/
- https://www.aprendemachinelearning.com/crear-una-red-neuronal-en-python-desde-cero/
- https://www.aprendemachinelearning.com/programa-un-coche-arduino-con-inteligencia-artificial/
- https://github.com/cristinagom/machinelearning/tree/main