Está en la página 1de 7

Para crear esta estructura vamos a crear una clase, que llamaremos capa.

Además, vamos a inicializar los


parámetros (b y W) con datos aleatorios. Para esto último usaremos la función trunconorm de la librería stats, ya que
nos permite crear datos aleatorios dado un rango, media y desviación estándar, lo cual hará que a nuestra red le
cueste menos arrancar.

Función de activación: Función Sigmoide


La función sigmoide básicamente recibe un valor x y devuelve un valor entre 0 y 1. Esto hace que sea una
función muy interesante, ya que indica la probabilidad de un estado

Función de activación: Función ReLu


La función ReLu es muy simple: para valores negativos, la función devuelve cero. Para valores positivos, la función
devuelve el mismo valor. Pero, a pesar de ser tan simple, esta función es la función de activación más usada en el
campo de las redes neuronales y deep learning.
En nuestro caso, usaremos la red neuronal para solucionar un problema de clasificación de dos clases, para lo cual
usaremos una red pequeña, de 4 capas que se compondrá de:

 Una capa de entrada con dos neuronas, ya que usaremos dos variables.
 Dos capas ocultas, una de 4 neuronas y otra de 8.
 Una capa de salida, con una única neurona que predecirá la clase.
Usamos la función ReLu en todas las capas menos en la última, en la cual usaremos la función sigmoide. Es
importante recordar que en la primera capa solo se reciben los datos, no se aplica una función ni nada.
Haciendo que nuestra red neuronal prediga
Para que nuestra red neuronal prediga lo único que tenemos que hacer es definir los cáculos que tiene que seguir.
Son 3 los cálculos a seguir: multiplicar los valores de entrada por la matriz de pesos W y sumar el parámetro bias
(b) y aplicar la función de activación.

Para multiplicar los valores de entrada por la matriz de pesos tenemos que hacer una multiplicación matricial.
Calcular el error cuadrático medio es algo bastante simple: a cada valor predicho le restas el valor real, lo elevas al
cuadrado, haces la suma ponderada y calculas su raíz.

El error lo calculamos como la derivada de la función de coste sobre el resultado de la capa siguiente por la derivada
de la función de activación. En nuestro caso, el resultado del último valor está en la capa -1, mientras que la capa
que vamos a optimizar es la anteúltima (posición -2). Además, definimos un par de funciones y simplemente
tendremos que indicar el resultado de la función en la posición en ambos casos.

Si hiciéramos esto en cada capa, iríamos propagando el error generado por la estimación de la red neuronal. Sin
embargo, propagar el error por si mismo no hace nada, sino que ahora tenemos que usar ese error para optimizar
los valores de los parámetros mediante gradient descent. Para ello, calculamos las derivadas en el punto de los
parámetros b y W y restar esos valores a los valores anteriores de b y W.

Con esto ya actualizamos los parámetros de W y b en la última capa. Y calculamos el error de la siguiente capa
multiplicando matricialmente el error de esta capa (x) por los pesos de la misma, para así saber cuánto de ese error
corresponde a cada neurona de la capa.
Ponemos a prueba a nuestra red con un problema bastante sencillo: clasificar puntos de dos nubes de puntos. Para
ello, lo primero que vamos a hacer es crear una función que nos devuelva puntos aleatorios al rededor de un círculo
imaginario de radio R.

Ahora, crearemos dos sets de datos aleatorios, cada uno de 150 puntos y con radios diferentes. Para hacer que los
datos se creen de forma aleatoria es que puedan solaparse, de tal manera que a la red neuronal le cueste un poco y
el resultado no sea perfecto.

Con esto ya tendríamos nuestros datos de entrada (X) y sus correspondientes etiquetas (Y).

También podría gustarte