Programación Específica > Inteligencia Artificial

 Funcionamiento De Una Neurona. Rna

<< < (2/3) > >>

Hadess_inf:
Hola de nuevo, e seguido con mi lectura en las infinitas paginas del inter y ya consegui otro avanze, haber si me confirman lo que expondre:

1)En una Neurona tanto los pesos como el BIAS se inicializar aleatoriamente.
2)Es el proceso de ajuste del BIAS y PESOS el cual permite aprender a la Neurona.
3)Cuando se ajusta un peso, se trata de llevar el valor del mismo al valor del BIAS.
4)Para que la neurona se excite se evalua la salida utilizando una funcion(hardlims,Hardlim,purelin,logsig).

Variables:

BIAS
-Valor que se genera aleatoriamente.
-Valor que se suma a neta.

NETA
-Suma de los Pesos(W) por las entradas (X)

E
-Error

S
-Salida

Se tiene la siguiente neurona.
Entradas X=(2,6)
Pesos W=(0.5,-0.7)
BIAS B=0.5

S = NETA + BIAS
S = (X1*W1+X2*W2) + 0.5
S = (2*0.5 + 6*-0.7) + 0.5
S = (1 - 4.2) + 0.5
S = -3.2 + 0.5
S = -2.7
Entonces .:. hardlims(S) = -1
Por lo tanto hay error.

E = SalidaEsperada - SalidaOptenida
E = 1 - (-1)
E = 2

Nuevo valor de W1
NW1 = W1 + E*X1
NW1 = 0.5 + 2*2
NW1 = 0.5 + 4
NW1 = 4.5

Nuevo valor de W2
NW2 = W2 + E*X2
NW2 = -0.7 + 6*2
NW2 = -0.7 + 12
NW2 = 11.3

Nuevo Valor de BIAS
BIAS = BIAS + ERROR
BIAS = 0.5 + 2
BIAS = 2.5

La neurona quedo con los siguientes datos
X = (2,6)
W = (4.5,11.3)
BIAS  = 2.5

Red Aprendio.

Bueno una de las grandes dudas que tenia era como calcular el bias inicial en una neurona, ahora entiendo que tanto al bias como los pesos se le indican pesos aleatorios. En este ejemplo ya no hay una COnstante de aprendizaje, aun no entiendo porque. Ahora tratare de crear un ejercicio y luego lo posteo, Saludos.

Nebire:

--- Citar ---Sobre funciones AND, OR, XOR
AND(*): Devolvera "1" solo si todas las entradas son igual a 1, para todos los demas caso retornara "0".
OR(+): Devolvera "1" siempre y cuando haiga un "1" en algunas de las entradas, solo si todas las entradas son "0" devolvera "0".
--- Fin de la cita ---
Si.

--- Citar ---XOR: Devolvera "1" siempre y cuango ambas entradas sean diferentes. Aqui tengo otra duda, ¿el XOR solo sirve para comparar 2 valores o entradas?
--- Fin de la cita ---
La primera parte si, la 2ª no. Ya te expliqué que cuando hay más de 2 valores, el resultado se puede totalizar fácilmente sumando los '1' y si es impar da '1' si es par da '0'. Esto no es así porque sí, sino que es la consecuencia directa. Te lo reexplico otra vez con una perspectiva distinta.
Imagina una fila de lo que sea... unos son negros y otros blancos ('1' y '0') y sea la fila: '110.100.101' :
 tomo los 2 primeros y hago un xor con ellos: 1 xor 1=0
ahora tomo el resultado anterior y hago un xor con el siguiente, el 3º: 0 xor 0=0
repito el paso anterior hasta terminar:
nº de dígito | resultado anterior | XOR | valor del dígito nº | = | resultado
____________________________________________________________
4º: 0 xor 1=1     '110.100.101'
5º 1 xor 0=1     '110.100.101'
6º 1 xor 0=1     '110.100.101'
7º 1 xor 1=0     '110.100.101'
8º 0 xor 0=0     '110.100.101'
9º 0 xor 1=1    '110.100.101'
Esto mismo puede hacerse con 'and' y 'or', pero la experiencia nos enseña (y las matemáticas lo confirman) que no es necesario evaluar 2 a 2 hasta evaluar el total, sino que cuando hay muchas entradas podremos conocer el resultado de forma abreviada (igual que cuando tenemos 5 filas y 5 columnas no contamos una a una sino que aplicamos una multiplicación para simplificar la operación, porque es equivalente) si todos son 1 y la operación es and el resultado es 1, si la operación es or y al menos uno es '1' el resultado es 1, y si la operación es xor el resultado será 1 siempre que la suma de 1 sea impares.


--- Citar ---
--- Citar --- [color] indicando así que la neurona puede estar más o menos activada.[/color]
--- Fin de la cita ---
A que te refieres con esto
--- Fin de la cita ---

Que una neurona no sólo actua de forma 'si' ó 'no' también puede actuar por grados. El caso más claro para entenderlo: imagina un banco que está evaluando si conceder o no un crédito a una persona, resumir en 'si' o en 'no' es muy arriesgado, entonces a los programas (típicamente una red neuronal en su interior) lo que hace es devolver un valor entre 0 y 100 para dejar que sea el director del banco quien decida en última instancia. Si el valor devuelto es 92% seguramente el director dirá sí, pero qué pasa cuando los valores devueltos son tal como 50% ???. Lo puedes entender. Pero dicho de otro modo, puede todo ser reducido a si o no ?, por supuesto que si, pero ello deja fuera otras evaluaciones, si se ofrece un resultado. La experiencia (por ejemplo de lso banqueros) demostraron que un si o un no rotundo no era eficaz en muchos casos, al preguntar a los programadores sobre el porqué la respuesta es clara,  no es una ciencia exacta, no todo es blanco o negro, un hombre millonario que se supone pagar sus créditos puede arruinarse de la noche a la mañana y un pobre también de la noche a la mañana puede 'ganar' una lotería. Por tanto hay problemas cuando se maneja un problema complejo si se trata de reducirlo a si o no, para limitar en lo posible ese problema se establecen escalas, típicamente del 0 al 100 pero igualmente válido del 0 al 5 o del 3 al 7.... cuando se ofrece una salida de este tipo, se entiende que luego existirán etapas posteriores que serán usadas para evaluar ese dato en conjunto con otros posiblemente de otra índole entre las que no se descarta e incluso suele ser el consumidor habitual un ser humano.

Un caso más práctico: imagina un red neuronal para reconocer caracteres escritos, éstos a diferencia de los impresos puede ser distintos incluso siendo el mismo carácter cada vez que se escriba, es común que haya caracteres muy parecidos si enseñamos a la neurona que que 1 es 1 puede tener problemas cuando se encuentre i y l incluso con j por tanto ya no puede cir si es 'sí' ó si es 'no'. si el signo puede ser confuindido con 4 lo lógico es que pueda dar valores de 0,1,2,3,4 que se corresponderían con 0%, 25% 50%, 75% y 100%, cuando de valores de 0% y 100% no es problema (lo que no quiere decir que sea correcto), pero que pasa cuando dé 25%, 75% y sobretodo cuando de 50%... en dichos casos probeblemente solicitará la ayuda de 'otro' experto que dirima las dudas. Sucede igual con el '0' y la 'o' mayúscula '0O', más cuando es manuscrita, e incluso entre el '6' y la  'ó' y así con varias más...

Por eso aparte de que una neurona haya sido previamente 'instruída' para reconocer caracteres, dado que cada tipo manuscritodifeire mucho entre sí, debe seguir 'aprendiendo' después de su 'escuela' y así cuando no arroje valores discretos puede solicitarse al usuario que le asigne el carácter correcto con lo que ahora se alimenta con un nuevo aprendizaje para, por ejemplo tu tipografía manuscrita.


--- Citar --- No entiendo esto por favor te agradeceria si me lo explicas nuevamente. PD: Se que 2 en decimal es "0010" en binario y que "5" en decimal es 0101 en binario y que "6" en decimal es "0110" en binario. ¿Quizas no te refieres a eso?

--- Citar ---En el caso he aplicado un 'or' porque voy 'sumando' es decir 2d (01 en binario) 'or' 5d (1001 5 en binario) = 6d (1011 6 en binario).
--- Fin de la cita ---

--- Fin de la cita ---
Si, es correcta tu interpretación.

--- Citar ---
--- Citar ---a)1º (1*1) + 2º(2*1) + 3º(2*1) + 4º(2*1) + 5º(2*1) + 6º(3*1) + 7º(3*1) + 8º(3*1) + 9º(5*1)
B)1º (*1) + 2º(*2) + 3º(*2) + 4º(*2) + 5º(*2) + 6º(*3) + 7º(*3) + 8º(*3*1) * 9º(*1)

--- Fin de la cita ---

Se uso OR y el operador +
Se uso AND y el operador *
En conclucion para AND se usa el operador "+" y para OR se usa el operador "*". Es correcto ¿?
--- Fin de la cita ---
Hay operaciones lógicas y operaciones aritméticas, las operaciones aritméticas son suma y multiplicación hazlo con 1 y 0  en base decimal, el resultado es el mismo en binario. La suma y productos lógicos equivale a la suma y productos matemáticos de signos donde el '+' sería el 1 y el '-' el '0'.  Esto es pura lógica matemática.

Tener conicmientos de lógica matemática o de electrónica digital ayuda mucho a entender una red neuronal. Una red neuronal es a fin de cuentas un circuito digital basado en  biestables (célula la memoria). Los circuitos digitales se basan íntegramente en lógica matemática (al caso la binaria).


--- Citar ---aun sigo con algunas dudas, con lo que respecta a la funcion umbral o valor umbral, tengo entendido que para que una neurona se active el valor de la suma de las entradas por los pesos debe ser lo mas proximo a ese valor umbral, que de cierto tiene esto¿?.
--- Fin de la cita ---
Esto es cierto pero puede ser malinterpretado. No debe confundirse más próximo al umbral con el valor más alto, se comenta esto a continuación: Es decir para explicar y entender la teoría es válido para la práctica no es necesario... un ejemplo: supongamos que obtengo un valor de 12, en teoría sería prácticamente no activada '0', pero que pasa si ahora yo hago una negación, es decir que ese resultado deba pasar por un filtro posterior que niega el resultado, el resultado sería que el valor arrojado debe ser restado del rango máximo, por tanto sería 100-12=88, sin embargo si hemos de negar todas las salidas, entonces es mejor operar con 'lógica inversa' en las salidas, es decir el valor umbral será el mínimo. Esto contradice de entrada la afirmación de valor máximo, sin embargo es acorde con la consecuencia resultante. Entonces sólo interpretando correctamente el significado de 'umbral' como el más próximo y no como el valor más alto, es cuando se interpreta correctamente. Así diremos que si para cierta activación el umbral máximo es valor 0, expresa que el valor más próximo es el idóneo para activarse e inversamente con el caso opuesto. Y saliendo de la lógica discreta, si decimos que el umbral sería 50 (sobre un rango de 0-99), puede chocar de entrada si pensamos en el valor, así 40 está tan distante como 60, para representarlo en un rango de 'menos' a 'más' lo único que hay que hacer es digujar una gráfica por ejemplo traza una gráfica con forma de '^' el ´vertice es 50, el inicio es 0 el final es 99, ahora puedes recalibrar estos valores en base a su altura, y entonces se entiende el valor más próximo al 'umbral' es el valor más alto.

Recalo en esto porque es frecuente que aunque dices correctamente 'el valor más próximo activa al umbral' con el tiempo tiende a olvidarse el detalle y se queda uno con una idea equivocada de que 'el valor más alto activa el umbral'.



--- Citar ---1)En una Neurona tanto los pesos como el BIAS se inicializar aleatoriamente.
--- Fin de la cita ---
Es frecuente pero no es indipensable, por lo general es así de entrada. Pero puede de entrada contener cierto valor si se sabe cuales han de ser estos. Por ejemplo una neurona que ya ha aprendido a reconocer caracteres ópticos de imprenta, puede ser activada con esos valores para pasar ahora a reconocer mi grafía, es mejor que nada, que empezar de cero.
Pero para un caso estricto de inicio y sobretodo cuando no se sabe o conoce bien es aceptable inicializar con valores fijos o aleatorios.


--- Citar ---2)Es el proceso de ajuste del BIAS y PESOS el cual permite aprender a la Neurona.
--- Fin de la cita ---
 Exactamente. Lo cual se hace comparando la salida con el valor correcto. Es como el proceso de estudio de un escolar: le hacemos una pregunta, el da una respuesta, luego el profesos revisa la respuesta, lo que significa que lee la respuesta del niño y la compara con la respuesta correcta, si está mál indica porqué está mal, lo que equivale a 'esperar' que el niño tome esos datos para retroalimentar su conocimiento y poderlo usar para futuras cuestiones.


--- Citar ---3)Cuando se ajusta un peso, se trata de llevar el valor del mismo al valor del BIAS.
--- Fin de la cita ---
Esto es un ajuste fino, si resultara  ala primera nuestras neuronas aprenderían muy rápido, pero el diseño de las mismas es muy elemental, pero sí, asi es.


--- Citar ---4)Para que la neurona se excite se evalua la salida utilizando una funcion
--- Fin de la cita ---
Basicamente es así. Que función se aplique siempre dependeráde ciertos factores... estoy aprendiendo o 'trabajando'  y sobretodo el enfoque y dedicación, si una neurona se especializa en una cuestión determinada su función será posibllemente más específica.


--- Citar ---En este ejemplo ya no hay una COnstante de aprendizaje
--- Fin de la cita ---
Para un caso generico no puede proveerse cualquier cosa, si al niño se le pregunta '¿ Es la Luna más grande que la Tierra?', la idoneidad de su respuesta debe valorarse con la respuesta de esa pregunta, no con una respuesta cualquiera de otra pregunta, por ejemplo de '¿3 más 6 son 10?' aunque en el caso casulamente den el mismo valor se hace un aprendizaje 'sucio'.  Se acepta el hecho de que si se introduce 'basura' a la neurona sale 'basura' de la neurona.  No entiendo exactamente que quieres decir con constante de aprendizaje... creo suponer que quieres 'dar  nota final' al niño... esto sólo tiene sentido a efectos estadísticos, del mismo modo que al niño el valor de una nota no le reporta conocimiento sino que solo le califica como más o menos apto, tu puedes mientras compruebas la eficiencia de la neurona que diseñes totalizar las preguntas realizadas y las respuestas acertadas, después de 10, después de 100, después de 1000 depueés de 10.000, etc... en función de la complejidad deja de ser 'tonta' a partir de cierto elevado nº de pasos. Compara luego cada 1000 las respuestas afirmativas para ir describiendo una curva de aprendizaje y ver si vas bien o debes hacer 'ajustes manuales' cual mecánico cuando ensambla un conjunto de piezas, que debe apretar cada cosa y calibrarlo bien para que el conjunto opere de la forma más óptima.

Hadess_inf:
¿Como se que funcionde transferencia usare para determinada neurona? ¿Cuando usare Harlim, o Hardlims..etc..etc...? y ¿Se pueden usar mas de una funcion para una neurona o solo se puede usar una?

Agradeceria si pusieras un ejemplo completo con una o si es posible para ti con mas neuronas. Asi seria mas sencillo para empezar a plantearme problemas e ir poniendo en practica lo que en estos dias e aprendido, Gracias. Y disculpa si es mucho pedir. Gracias de nuevo.

Nebire:

--- Citar ---¿Como se que funcionde transferencia usare para determinada neurona?
--- Fin de la cita ---
La función de transferencia se elige en base a las situaciones que deba resolver.


--- Citar ---¿Se pueden usar mas de una funcion para una neurona o solo se puede usar una?
--- Fin de la cita ---
No existe un límite teórico por el que una salida deba ser realizado de un modo fijo.


--- Citar ---¿Cuando usare Harlim, o Hardlims..etc..etc...?
--- Fin de la cita ---
Por las características de cada uno, tal como se indica en el primer párrafo. Por ejemplo: El limitador fuerte (hardlim) lleva a 2 únicas salidas, '0 ó '1' lo que esto implica es que una neurona con este limitador divide en 2 categorías según las entradas. Por tanto cualquier patrón en el que se desee fijar 2 divisiones es un destino de esta función. En cambio el limitador fuerte simétrico (hardlims) produce resultados con valores entre '1' y '-1' .

Para más detalles el limitador fuerte suele usarse en la red tipo 'perceptrón', el  limitador fuerte simétrico en la red tipo 'adaline' , el sigmoidal logarítmico (logsig) suele emplearse en las redes de múltiples capas.

Aunque no te lo parezca hay bastante información en la red busca cada tipo para ampliar detalles.


--- Citar ---Agradeceria si pusieras un ejemplo completo con una o si es posible para ti con mas neuronas. Asi seria mas sencillo para empezar a plantearme problemas e ir poniendo en practica lo que en estos dias e aprendido, Gracias. Y disculpa si es mucho pedir
--- Fin de la cita ---
Es mucho pedir, pero sólo por mi escaso tiempo libre. Desafortunadamente estoy desplazado y aquí no tengo ni mis apuntes ni mis libros para siquiera hacer una transcripción rápida. Tengo pensado postear un problema completo y explicado detelladamente, pero reconozco que me llevará más tiempo del que quisiera, tengo bastante trabajo y casi la mitad de mi tiempo libre lo dedico a ojear el foro. Si, como creo tienes prisa por 'meterle mano', te recomiendo que hagas búsquedas intensivas en la red que sin duda debe haber decenas de trabajos compartidos y a un nivel asequible para empezar.

p.d.: me extiendo un poco...
Diagmos que el preceptrón lo usaremos cuando tengamos claramente 2 divisiones. El adaline es idéntico al perceptrón excepto que se le retira la función de transferencia para permitir una salida contínua, como los errores entonces pueden ser enormes es donde nace la regla Delta. (valor real - valor logrado)... El adaline va bien para funciones básicas, pero no para funciones complejas . Entonces llega la red multicapa, que reúne a los preceptrones y adaline apoyado por un amplio surtido de funciones de transferencia y es entonces cuando se organiza el flujo en capas, el flujo de entrada, el oculto y el de salida. el oculto se llama así sólo porque visto desde fuera 'no se ve' (por ninguna otra razón). A partir de aquí es todo arbitrario y se decide de forma poco más que empírica.

Hadess_inf:
Quisiera poner en practica lo que he aprendido, los ejercicos ayudan bastante a comprender las pequeñas dudas que andan sueltas, quiero empezar con los ejercicios, ir de los mas pequeños a los mas grandes =D .... estas ultimas semanas e buscado y buscado en internet. E encontrado uno que otro ejemplo del perceptron, e de ahi que e entendido unas cosas mas, sin embargo eran ejemplos muy basicos, entiendo que no dispones de tiempo y esperare a que puedas postear el ejercicio que comentas.

¿Me podrias decir algo? . ¿Una neurona siempre se ativa?. Es decir, si tuviera una RNA con 1 capa de entrada (3 neuronas), 1 oculta (2 neuronas) y 1 salida. Para que esa neurona de salida bote un resultado es necesario que todas las anteriores (entrada y salida) hallan botado un resultado de 1, es decir si alguna boto resultado de 0 la salida sera 0¿?. Ademas yo entiendo que siempre la neurona arrojara un valor de 1 (por el aprendizaje que la obliga a eso) es correcto ¿?

Gracias

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa