Introducción a las Redes Neuronales Parte – 2

En la Parte 1 de Introducción a las redes neuronales, aprendimos sobre una de las neuronas artificiales más simples llamada neurona de McCulloch-Pitts y la implementamos en Python.

El problema con la neurona MP es que en realidad no hay aprendizaje involucrado. Los pesos se ajustan manualmente.

En este artículo veremos Perceptron, que es una mejora de la neurona MP. A diferencia de la neurona MP, el perceptrón puede aprender los pesos con el tiempo.

También veremos cómo entrenar un Perceptron desde cero para clasificar operaciones lógicas como AND u OR.

Perceptrón:

Un perceptrón es básicamente un clasificador binario. Es un algoritmo para determinar un hiperplano que separa dos categorías de datos.

Un perceptrón típico tendrá

    • Entradas
    • Pesos y sesgo
    • Función de activación

perceptrón

El perceptrón recibe datos de entrada multiplicados por pesos aleatorios y les agrega sesgo. Un sesgo funciona como un nodo de entrada que siempre produce un valor constante.

text =quad sum_^ mathrm_ mathrm_+mathrm

text =x_ w_+x_ w_+x_ w_+b

Luego se aplicará una función de activación a la suma ponderada. La suma ponderada no es más que la suma de todas las entradas multiplicada por sus pesos + sesgo.

Aquí vamos a utilizar el escalón unitario o la función de activación heaviside. Es una función de activación basada en un umbral.

step_activation_function

f(x)=left{begin
0 & text x<0 \
1 & text x geq 0
endright.

Si el valor de entrada es mayor que 0, devuelve 1, de lo contrario, devuelve 0.

Aprendizaje de perceptrones:

Ahora veamos los pasos exactos involucrados en el entrenamiento de un perceptrón.

Entrenar un perceptrón es simple y directo. Necesitamos obtener un conjunto de pesos que clasifique cada instancia en nuestro conjunto de entrenamiento.

El primer paso es inicializar los pesos y el sesgo de forma aleatoria.

Luego tenemos que calcular la entrada neta multiplicando la entrada con los pesos junto con el sesgo.

y_=sum_^ x_ w_+b

Luego tenemos que aplicar la función de activación sobre la entrada neta. Aquí usamos la función de paso que aplasta la entrada entre 0 y 1.

y = Φ(yen)

Y en el paso final, si el valor predicho no es igual al valor objetivo, entonces tenemos que actualizar los pesos y el sesgo.

error = t – y

Aquí t es el valor objetivo e y es el valor predicho.

La actualización de pesos y sesgos es la siguiente:

wi(nuevo) = wi(antiguo) + alfa * error * xi

b(nuevo) = b(antiguo) + alfa * error

El alfa aquí es el tasa de aprendizaje.

Implementación:

Ahora entrenemos un perceptrón para predecir la salida de una puerta OR lógica.


Ahora probemos con el operador AND. Sólo tenemos que cambiar los valores objetivo.

y = [0, 0, 0, 1]

Ahora, si ejecutamos el programa, obtendremos la salida como 0. Dado que 0 Y 1 es 0

Puede intentar cambiar los valores de prueba como [0,0],[1,0] o [1,1].

Ahora, si intenta clasificar XOR con el perceptrón cambiando los valores objetivo (y), sin importar cuántas épocas entrene la red, nunca podrá clasificar, ya que no es clasificable linealmente.

Entonces, ¿cómo podemos clasificar funciones que no son linealmente separables? Para eso, necesitamos un perceptrón multicapa que tenga más capas que un perceptrón normal.

CONCLUSIÓN:

En este artículo hemos aprendido qué es un perceptrón y cómo implementarlo desde cero en python.

Un perceptrón es un clasificador binario que determina un hiperplano que separa dos categorías de datos. Sin embargo, el problema con el perceptrón es que es un clasificador lineal. No puede tratar con problemas no lineales.

En la siguiente parte, aprenderemos sobre el perceptrón multicapa que puede manejar problemas no lineales.

Fuente del artículo

Deja un comentario