You are on page 1of 9

Práctica Redes Neuronales artificiales

Objetivo
Aplicar los conceptos relacionados con las Redes Neuronales Artificiales (RNA)
como uno de los paradigmas utilizados en el aprendizaje automático o aprendizaje
de máquina (Machine Learning).

Fundamento teórico
IBM (2021) presenta la siguiente definición:
Las redes neuronales artificiales son modelos simples del funcionamiento del
sistema nervioso. Las unidades básicas son las neuronas, que generalmente
se organizan en capas. Una red neuronal es un modelo simplificado que
emula el modo en que el cerebro humano procesa la información: Funciona
por el trabajo simultáneo de un número elevado de unidades de
procesamiento interconectadas que parecen versiones abstractas de
neuronas.
Las neuronas biológicas tienen como elementos principales: las dendritas donde
entran las señales, el cuerpo o soma donde se procesan y la salida constituida por
el axón, la red se forma por la interconexión de las entradas de unas neuronas con
las salidas de otras lo que se conoce como sinapsis.

Figura 1. Comparación entre neurona biológica y neurona artificial


Fuente: Barragán (2020)

La unidad base de una RNA es la neurona, la cual está organizada en capas, un


conjunto de capas constituye una red neuronal, la que, a su vez, con la adición de
interfaces de entrada y de salida más un módulo algorítmico forman un sistema
neuronal (Figura 2) (Del Brío B. M. & Sanz A., 2007, p. 12).

Figura 2. Estructura jerárquica de un sistema basado en RNA

Fuente: Del Brío M. & Sanz A. (2007), p.11.

Con relación a la organización de las redes neuronales artificiales IBM (2021)


describe:
Las unidades de procesamiento se organizan en capas. Hay tres partes
normalmente en una red neuronal: una capa de entrada, con unidades que
representan los campos de entrada; una o varias capas ocultas; y una capa
de salida, con una unidad o unidades que representa el campo o los campos
de destino. Las unidades se conectan con fuerzas de conexión variables
(pesos y sesgos). Los datos de entrada se presentan en la primera capa, y
los valores se propagan desde cada neurona hasta cada neurona de la capa
siguiente. Al final, se envía un resultado desde la capa de salida (Figura 3).
El proceso de aprendizaje de la red ocurre por medio de la inspección de los
registros individuales, se produce una predicción para cada registro y se van
haciendo ajustes a los pesos y sesgos cuando lleva a cabo una predicción que no
es correcta. Esto se repite en muchas ocasiones o épocas, en cada una de ellas, la
red mejora sus predicciones hasta que se alcanza la meta esperada.

Figura 3. Organización de una red neuronal

Fuente: Amaya (s.f.)

En el inicio los pesos y sesgos son aleatorios lo que produce predicciones que están
lejos de los resultados esperados. La red va aprendiendo mediante un proceso en
el que la red es entrenada. Se le presentan ejemplos de los que se sabe el resultado,
las respuestas obtenidas se comparan con los resultados que se conocen. Los
datos obtenidos de ello sirven para modificar los pesos y los sesgos. Durante el
entrenamiento la red mejora su precisión y una vez entrenada se le pueden
presentar nuevos ejemplos en los que no se sabe el resultado (IBM, 2021).
Requerimientos
Lenguaje Phyton o Google Colab (https://colab.research.google.com)
Librería TensorFlow
Librería NumPy
Framework Keras

Procedimiento
Aplicaremos las redes neuronales en el problema de predecir la temperatura en
grados Fahrenheit a partir de una cantidad en grados centígrados. Para ello,
utilizaremos una serie de datos de entrada y de resultados esperados, con los
cuáles se realizará el entrenamiento de la red neuronal. A continuación, se presenta
el código que deberá programarse en lenguaje Phyton y se utilizarán además las
librerías TensorFlow, NumPy y el framework Keras.

Figura 4. Proceso para convertir grados centígrados a Fahrenheit

Fuente: Elaboración propia.

Actividad 1. Programar el siguiente código considerando una red con una capa
de entrada y una de salida, ambas con 1 neurona (Figura 4).
Teclear en +código para ir agregando código a cada celda e ir dando click para
compilar.
“Importar las librerías a utilizar tensorflow para IA y numpy para trabajar arreglos
numéricos”
import tensorflow as tf
import numpy as np

“Declaramos arreglos de números para entradas y resultados que serán los


ejemplos que utilizará la red para aprender”
centigrados = np.array([-40, -10, 0, 8, 15, 22, 38], dtype= float)
fahrenheit = np.array([-40, 14, 32, 46, 59, 72, 100], dtype= float)

“Diseñar modelo de red neuronal, con el framework Keras definir entradas y salidas.
Se define el modelo que las conecta, para redes sencillas, el secuencial”.
capa = tf.keras.layers.Dense(units=1, input_shape=[1])
modelo = tf.keras.Sequential([capa])

“Se prepara el modelo para el entrenamiento de la red, se define el optimizador y el


de pérdida, taza de aprendizaje (0.1)”
modelo.compile(
optimizer= tf.keras.optimizers.Adam(0.1),
loss = 'mean_squared_error'
)

“Inicia el entrenamiento, se utiliza la función fit, se definen entradas, resultados y el


número de vueltas o épocas, verbose para que no genere basura”
print("Comenzando entrenamiento.....")
historial = modelo.fit(centigrados, fahrenheit, epochs=1000, verbose=False)
print("Modelo entrenado")

“Vemos el resultado de la función de pérdida”


import matplotlib.pyplot as plt
plt.xlabel("# Epoca")
plt.ylabel("Magnitud de pérdida")
plt.plot(historial.history["loss"])

“Realizar la predicción”
print("Hagamos una predicción!!!!")
resultado = modelo.predict([50.00])
print("EL resultado es" + str (resultado) + "fahrenheit!")

“Vemos la estructura interna de la red, los datos asignados después del


entrenamiento”
print("Variables internas del modelo")
print(capa.get_weights())

Actividad 2. Programar el siguiente código con las modificaciones necesarias,


para dos capas ocultas de 3 neuronas (Figura 5).

Figura 5. Red neuronal con 2 capas ocultas y 3 neuronas por capa.

Fuente: Elaboración propia.


Teclear en +código para ir agregando código a cada celda e ir dando click para
compilar.

“Importar las librerías a utilizar tensorflow para IA y numpy para trabajar arreglos
numéricos”
import tensorflow as tf
import numpy as np

“Declaramos arreglos de números para entradas y resultados que serán los


ejemplos que utilizará la red para aprender”
centigrados = np.array([-40, -10, 0, 8, 15, 22, 38], dtype= float)
fahrenheit = np.array([-40, 14, 32, 46, 59, 72, 100], dtype= float)

“Diseñar modelo de red neuronal, con el framework Keras definir entradas y salidas.
Se define el modelo que las conecta, para redes sencillas, el secuencial”.
oculta1 = tf.keras.layers.Dense(units=3, input_shape=[1])
oculta2 = tf.keras.layers.Dense(units=3)
salida = tf.keras.layers.Dense(units=1)
modelo = tf.keras.Sequential([oculta1, oculta2, salida])

“Se prepara el modelo para el entrenamiento de la red, se define el optimizador y el


de pérdida, taza de aprendizaje (0.1)”
modelo.compile(
optimizer= tf.keras.optimizers.Adam(0.1),
loss = 'mean_squared_error'
)

“Inicia el entrenamiento, se utiliza la función fit, se definen entradas, resultados y el


número de vueltas o épocas, verbose para que no genere basura”
print("Comenzando entrenamiento.....")
historial = modelo.fit(centigrados, fahrenheit, epochs=1000, verbose=False)
print("Modelo entrenado")

“Vemos el resultado de la función de pérdida”


import matplotlib.pyplot as plt
plt.xlabel("# Epoca")
plt.ylabel("Magnitud de pérdida")
plt.plot(historial.history["loss"])

“Realizar la predicción”
print("Hagamos una predicción!!!!")
resultado = modelo.predict([50.00])
print("EL resultado es" + str (resultado) + "fahrenheit!")

“Vemos la estructura interna de la red, los datos asignados después del


entrenamiento”
print("Variables internas del modelo")
print (oculta1.get_weights())
print (oculta2.get_weights())
print (salida.get_weights())

1. Actividad 3. Con base en las actividades 1 y 2, programar un nuevo modelo


con más datos de entrada y resultados diferentes a los de las actividades
anteriores. Además, incluir más capas ocultas con más neuronas.

Resultados y conclusiones
Referencias
Amaya, L. (s.f.). Redes NEURALES - curso- Fundamentos - luisamayateacher.
Google Sites.
https://sites.google.com/site/luisamayateacher/redes-neurales---curso

Barragán, A. (2020, 1 de septiembre). ¿Qué es Una red neuronal artificial? CEBE


Belgica. https://cebebelgica.es/es_ES/blog/10/que-es-una-red-neuronal-
artificial.html

Del Brío, B. M., & Sanz, A. (2006). Redes neuronales Y sistemas borrosos (3a ed.).
Editorial Ra-Ma.

Documentos de IBM. (2021). IBM - Estados Unidos.


https://www.ibm.com/docs/es/spss-modeler/SaaS?topic=networks-neural-model

You might also like