Generar pesos y umbrales en una red neuronal
-
Upload
jair-ospino -
Category
Education
-
view
1.372 -
download
0
Transcript of Generar pesos y umbrales en una red neuronal
Innovación y Futuro
Jair Ospino Ardila
Generar pesos y umbrales de forma aleatoria en una red
neuronal
Tomemos como ejemplo una red neuronal multicapa que se compone de la
siguiente estructura donde tenemos:
Figura 1. Red neuronal multicapa
Una capa de entrada con 2 neuronas
Una capa oculta con tres neuronas
Una capa de salida con dos neuronas
Una matriz de pesos (Iw) entre las neuronas de entradas y la primera
capa culta
Unos umbrales en la primera capa y la capa de salida, cada uno
compuestos por la cantidad de neuronas de cada capa
Una matriz de pesos (Lw) entre la primera capa y la capa de salida
Nota: lo primordial para este tipo de problemas más que saber programar es tener claro como está compuesta nuestra red neuronal.
Campo de prueba: Dependiendo del tipo de red conocemos o no las entradas y salidas. Esto se debe a que existen redes supervisadas y no supervisadas. Para nuestro ejemplo planteamos que es una red supervisada donde conocemos las entradas y salidas.
Nos ocuparemos en esta ocasión de generar los pesos y los umbrales de forma
aleatoria.
Utilizaremos la herramienta de Visual Studio.Net para la creación de nuestro proyecto, bajo el lenguaje de programación Visual Basic.
Utilizando Vectores Para crear vectores de forma dinámica en Visual Basic, lo que debemos hacer
es crear una variable tipo vector de forma vacía, de tal modo que podamos
asignarle un tamaño cualquiera en determinado momento.
En este caso hemos creado los vectores que almacenaran los umbrales de la
capa oculta U1 y de la capa de salida U2.
Utilizando Matrices Para crear Matrices de forma dinámica en Visual Basic, lo que debemos hacer
es crear una variable tipo Matriz de forma vacía, de tal modo que podamos
asignarle un tamaño cualquiera en determinado momento.
Nota: Como en nuestro caso las neuronas van a contener valores numéricos no enteros, lo ideal es que declaremos estos vectores con un tipo de datos que almacene datos no enteros
Creando vector para la capa Oculta y capa de Salida Para que sea mucho más dinámica nuestra creación de pesos y umbrales
crearemos un vector que nos almacene la cantidad de neuronas por cada capa.
Hemos creado un vector con el nombre de capas que almacenará las neuronas
de la capa oculta y la capa de salida. Aunque son dos capas en Visual Basic la
primera posición de un vector empieza en cero (0), de tal manera que a las
posiciones que deseamos que tenga un vector le restamos uno.
Es decir, que en la posición cero (capas (0)) guardará las neuronas de la capa
oculta y en la posición uno (capas (1)) guardara las neuronas de la capa de
salida. Se puede apreciar que: en el caso que nuestra red neuronal tenga n
capas la última posición del vector es la capa de salida y si además estamos
preguntándonos que ¿si nuestra red tiene n capas como hacemos para incluir
las neuronas de las otras capas? La respuesta está en que el vector que
hayamos creado no debe tener las posiciones fijas sino también vacías para
poder asignarles el valor correspondiente a la cantidad de capas.
Creación del formulario grafico
Para mirar de forma interactiva crearemos un formulario de tal forma que
podamos visualizar los procesos dentro de la red.
Creando la matriz de pesos Iw y Lw
Como se puede apreciar en la Figura 1, los pesos Iw se forman a partir de las
entradas con las neuronas de la primera capa, es decir con la posición cero del
vector capas (0) y la matriz Lw se forma a partir de el vector en la posición
cero y las salidas es decir el vector en la posición final.
Damos doble clic sobre el botón Generar para empezar con nuestra
creación
Nota: se recomienda validar los campos antes de realizar cualquier procedimiento, no se hace en esta guía para que no sea muy extensa. Esto se debe hacer debido a que las matrices y vectores van a manejar números y no letras y a demás se necesitan datos en los objetos del formulario
Lo primero que haremos es llenar el vector y redimensionar las matrices
a los valores especificados en el formulario.
Creación y recorrido de la matriz Iw
Creación y recorrido de la matriz Lw
Nota: en los anteriores códigos, lo que hacemos es crear las matrices de pesos y asignarle a los objetos del formulario (MatrizIw, MatrizLw) las posiciones del recorrido de la matriz. Estos no son los valores de los pesos. Esto se hizo para ver que las matrices se han creado de forma correcta y que cada posición corresponde a la requerida.
Si ejecutamos la aplicación tendremos hasta ahora una matriz de posiciones.
Creando Valores de pesos para las matrices Iw Como los pesos deben estar contenidos dentro de un rango establecido de [-
1,1], lo que haremos será un artificio matemático para conseguir esos valores.
Creando Valores de pesos para las matrices Lw Como los pesos deben estar contenidos dentro de un rango establecido de [-
1,1], lo que haremos será un artificio matemático para conseguir esos valores.
Artificio Matemático: Para entender nuestro artificio matemático hay que tener en cuenta que la función Rnd() solo genera números en el rango de [0,1] es decir entre 0 y 1. Al multiplicarlo por el límite superior tendremos 2 Al multiplicarlo por el límite inferior tendremos 0 Ahora si a ambos números le restamos 1 tendremos que: Lim Superior (2 - 1) = 1 Lim Inferior (0 - 1) = -1 Obteniendo así el rango que deseamos [-1,1]
Nota: Es indispensable que el programador tenga conocimientos matemáticos para resolver problemas que tengan que ver con métodos numéricos. Ya que la mayoría de aplicaciones desarrolladas en un lenguaje de programación incluyen muchos artificios y formulas matemáticas.
Si ejecutamos nuestra aplicación tendremos hasta ahora los pesos que
estábamos buscando.
Creando Valores de Umbrales U1 y U2
Como los umbrales son las neuronas de cada capa, lo que demos hacer es
tomar el valor de cada neurona por capa y asignárselo al vector
correspondiente de cada umbral.
Tendremos al igual que las matrices redimensionar de forma dinámica los
vectores de los umbrales.
Ahora al ejecutar nuestra aplicación ya hemos conseguido nuestro propósito
en esta guía. Obtener los pesos y umbrales de una red neuronal multicapa.
Creado por Jair Ospino Ardila Correo [email protected] Fecha 11/04/2013 Lugar Valledupar – Cesar País Colombia Creado en Visual Studio 2010 professional_x86 Lenguaje Visual Basic.NET Sistema Operativo Windows 7
Para ver más visita:
http://innovacionyfuturo.wordpress.com/tutoriales/inteligencia-artificial/