Google+ Seguidores

jueves, 9 de agosto de 2018

Introducción a las Redes Neuronales: Parte #2 - Aprendiendo matemáticas usando Redes Neuronales

Introducción:

Nuestro objetivo es construir y entrenar una red  neuronal, que pueda predecir la salida de una expresión matemática sin conocer su formula exacta. Considerando la siguiente expresión: (a+b)*2.

Lo que único que utilizaremos sera la librería numpy.

Resultado de imagen para inteligencia artificial

Matemáticas con redes neuronales:

Sera un ejemplo muy sencillo, que nos permitirá reforzar nuestras habilidades. La neurona tendrá 2 entradas y una salida.

El conjunto de entrenamiento constara de las siguientes entradas y salidas:

Inputs  Output
2, 3         10
1, 1         4
5, 2         14
12, 3       30

Tomaremos las entradas para el entrenamiento y las usaremos para ajustar los pesos y mediante una formula poder calcular la salida de la neurona.

Luego calcularemos el error comparando la salida esperada con la de la neurona. Dependiendo del valor del error calculado se ajustaran los pesos.

Todo esto se repetirá 10,000 de esta manera la neurona sera más eficaz. Este proceso es conocido como propagación hacia atrás.

Implementación:

from numpy import array, dot, random

# Declaramos la clase
class neural_network:
    def __init__(self):
        random.seed(1)
        # Pesos aleatorios. 2 entradas y una salida
        self.weights = 2 * random.random((2,1)) - 1
        
    def train(self, inputs, outputs, num):
        for iteration in range(num):
            output = self.predict(inputs) # Salida de la neurona
            error = outputs - output # Calculamos el error
            # Formula Ajuste: 0.01 * entradas * array(entradas) 
            ajuste = 0.01*dot(inputs.T, error)
            self.weights += ajuste
        
    def predict(self, inputs):
        # Calcular la salida de la neurona
        return dot(inputs, self.weights)
    
# Entradas
x = array([[2,3],[1,1],[5,2],[12,3]])

# Salidas
y = array([[10,4,14,30]]).T

# Entrenamiento de la red
red = neural_network()
red.train(x,y,10000)

# Dato de prueba
test1 = array([15,2])

# Mostramos la salida de la red
print("Resultado: %s" % red.predict(test1))

Resultado: [34.]

Efectivamente, (15+2)*2 es igual a 34.

Como pueden observar, es un ejemplo muy sencillo y practico. 

¿Alguna duda? No dudes en dejar tu comentario.

1 comentario :
Write comentarios
  1. Haré mi comentario oportunamente , una vez explore los contenidos e ilustraciones.
    Gracias

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Powered by Blogger .