generar pesos y umbrales de una red neuronal en visual basic

12
[email protected] God bless Generar pesos y umbrales de forma aleatoria en una red neuronal Tomemos como ejemplo una red neuronal multicapa que se compone de la anterior estructura donde tenemos: 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 oculta Unos umbrales en la primera capa y la capa de salida, cada uno compuestos por la cantidad de neuronas por 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.

Upload: jair-ospino-ardila

Post on 05-Dec-2014

197 views

Category:

Documents


9 download

DESCRIPTION

programamos la forma de como general los pesos y umbrales en una red neuronal en el lenguaje de programación visual basic

TRANSCRIPT

Page 1: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

Generar pesos y umbrales de forma aleatoria en una red neuronal

Tomemos como ejemplo una red neuronal multicapa que se compone de la

anterior estructura donde tenemos:

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 oculta

Unos umbrales en la primera capa y la capa de salida, cada uno

compuestos por la cantidad de neuronas por 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.

Page 2: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

Campo de prueba

Dependiendo del tipo de red conocemos o no las entradas y salidas. Esto

debido a que existen redes supervisadas y no supervisadas. Para nuestro

ejemplo planteamos que es una red supervisada sonde conocemos la

entradas y salidas de modo que no hay que lidiar con eso ya que las

conocemos y en el caso de tener que utilizarlas solo bastaría con asignarles

esos valores a unas variables y listo.

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 tenemos que

hacer es crear una variable tipo vector de forma vacía, de tal modo que

podamos asignarle un tamaño cualquiera en cualquier momento.

En este caso hemos creado los vectores que almacenaran los umbrales de la

capa oculta U1 y de la capa de salida U2.

Page 3: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

Utilizando Matrices

Para crear Matrices de forma dinámica en Visual Basic, lo que tenemos que

hacer es crear una variable tipo Matriz de forma vacía, de tal modo que

podamos asignarle un tamaño cualquiera en cualquier 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

Page 4: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

manera que a las posiciones que deseamos que tenga un vector le restamos

uno.

Estamos diciendo 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. Si se puede apreciar 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; pues 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 estructura grafica de nuestra red, 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

Page 5: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

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 aburrida. 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.

Page 6: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

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.

Page 7: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

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.

Page 8: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

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]

Page 9: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

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.

Page 10: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

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.

Page 11: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

Page 12: Generar Pesos y Umbrales de una Red Neuronal en Visual Basic

[email protected]

God bless

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 Home Basic

Nota: Si deseas el archivo fuente envía un mensaje al correo

solicitándolo. Sin ningún costo solo conserva los créditos. En el fuente

ya se encuentran validados los campos para el mejor funcionamiento

del programa.