Programación Específica > Inteligencia Artificial
Funcionamiento De Una Neurona. Rna
Hadess_inf:
Hola de nuevo. Gracias Nebire por contestar mi post anterior, no quise seguirlo porque no sabia como cambiar el titulo, pero en fin, gracias por tu respuesta y esperare por el ejemplo que te encuentras elaborando; mientras tanto despues de tanto leer y buscar en google, por fin e logrado comprender el funcionamiento de una Neurona. Aqui dejo el ejemplo para que todos vean como lo he conseguido y de paso me digan si es correcto:
Redes neuronales artificiales: Aprendizaje Supervisado
Ejemplo de entrenamiento:
Aprender las entradas:
Entrada = {1,1} deberá producir la salida = {1}
Entrada = {0,0} deberá producir la salida = {0}
Pesos iniciales: {-1,-1}
Constante de aprendizaje: {1}
Función de transferencia: rampa
Si el resultado de la suma < 0, entonces la salida = 0
Si el resultado de la suma >= 0 y <= 1, entonces la salida = entrada
Si el resultado > 1, entonces la salida = 1
Presentamos el primer objeto:
-1
1=====|...............|...............|
|...............|...............|
-1 |Sumatoria|activacion | ============>
1=====|...............|...............|
Usando la función suma tenemos: 1*-1 + 1*-1 = -2
Aplicando este resultado, la función T: 0
Recordemos que:Entrada = {1,1} debería producir la salida = {1}
De momento, la salida obtenida fue = {0}
Por tanto, hace falta… un ajuste sináptico
Constante = 1
Error = salida esperada - salida obtenida
Peso nuevo = Peso antiguo + ( Error * Entrada * Constante)
Se aplica la regla Delta:
Ajuste para el peso 1
Error = 1- 0 = 1
Peso nuevo = -1 + (1 * 1 * 1) = 0
Ajuste para el peso 2
Error = 1 - 0 = 1
Peso nuevo = -1 + (1 * 1 * 1) = 0
El primer objeto se presenta nuevamente:
0
1=====|...............|...............|
|...............|...............|
0 |Sumatoria|activacion | ============>
1=====|...............|...............|
Usando la función suma tenemos: 1*0 + 1*0 = 0
Aplicando este resultado, la función T:1
1. Si presentamos nuevamente el segundo objeto, verificaremos que el resultado calculado es el esperado.
2. Se considera, entonces, que la red ha aprendido
Bueno pues con ese ejemplo e logrado enteder el funcionamiento aunque aun me pregunto lo siguiente:
En ese ejemplo solo hay 2 entradas, segun la formula dice que si las dos entradas tienen un valor 1 generan un valor de salida 1, la pregunta es la siguiente: Que pasaria si son 5 o mas entradas como sabria yo, cuantas deberian ser 1 para que mi salida sea 1. Espero me entiendan.
Gracias.
PD: DIsculparan la representacion de la neurona pero no me dejo poner este post con links,. no se porque. Saludos.
Nebire:
--- Citar ---por fin e logrado comprender el funcionamiento de una Neurona
--- Fin de la cita ---
Pués me alegro por ti...
--- Citar ---Que pasaria si son 5 o mas entradas como sabria yo, cuantas deberian ser 1 para que mi salida sea 1
--- Fin de la cita ---
No estoy seguro de que si lo que dices es lo que me parece entender que preguntas, pero ya me dirás...
Si hay 'n' entradas y hay 'x' valores a 1, la salida será 1, si 'x' es impar (función XOR), por tanto basta contar los '1' y ver si es impar o par para dar 1 ó 0.
Salida= (x mod 2)
Si no he interpretado bien tu pregunta intenta formularla de otro modo.
p. d.: A los nuevos se les limita el uso de links para evitar las malaintencines de los 'trolls'.
Hadess_inf:
Hola nuevamente, y si has interpretado bien mi pregunta, me referia a eso. Si he entendido bien tu respuesta si tengo una neurona que recibira 9 entradas:
Neurona recibe 9 entradas = {1,0,0,1,1,0,0,1,1}
Si e entendido bien, la salida sera 1 porque la cantidad de entradas con el valor de 1 es impar (corrigeme si me equivoco).
Pero entonces porque en el mi post anterior (hago referencia al post inicial) se tenian solo dos entradas y ambas tenian el valor de "1", sin ser impar el numero de "1" esta daba como resultado la salida "1", acaso sera que en ese caso se usaba la funcion AND ¿?, y si ese fuera el caso ayudenme a sacar esta duda:
-La funcion AND solo se usa o aplica cuando hay 2 entradas?
-La funcion XOR solo se usa o aplica cuando hay mas de 2 entradas?
-Cuando se usa la funcion OR ?
Gracias por su tiempo.
Saludos.
Nebire:
--- Citar --- si tengo una neurona que recibira 9 entradas:
Neurona recibe 9 entradas = {1,0,0,1,1,0,0,1,1}
Si e entendido bien, la salida sera 1 porque la cantidad de entradas con el valor de 1 es impar
--- Fin de la cita ---
Efectivamente.
--- Citar ---Pero entonces porque en el mi post anterior (hago referencia al post inicial) se tenian solo dos entradas y ambas tenian el valor de "1", sin ser impar el numero de "1" esta daba como resultado la salida "1"
--- Fin de la cita ---
Veamos, que se haga un 'or' o que se haga un 'and' depende de como se diseñe la neurona, depende de como se quiera hacer. Debes tener en mente que no existe una única neurona, sino tantos modelos como se quiera hacer, el modelo que se te haya presentado con toda seguridad habrá sido un modelo para empezar a entender el funcionamiento interno de una neurona, lo cual no implica que deba ser así exactamente.
--- Citar ---La funcion AND solo se usa o aplica cuando hay 2 entradas?
-La funcion XOR solo se usa o aplica cuando hay mas de 2 entradas?
-Cuando se usa la funcion OR ?
--- Fin de la cita ---
No.
La función 'and' como su traducción indica se usa cuando se requiere que todas estén a 1 independientemente de las entradas a usar, así en tu ejemplo de 9 entradas si se usa un 'and' sólo dará '1' cuando se dé este caso: '111.111.111' (los puntos son sólo para la comodidad de leer o contar)
La función 'or' es menos 'exigente' dará '1' siempre que al menos uno de ellos sea '1'. es decir dará 1 en todos los casos, excepto ('000.000.000') que todos sean 0.
Creo que no has acabado de comprender el funcionamiento de las neuronas, sino sólo de la neurona que te han presentado, debes intentar hacerlo universal no quedarte sólo en como lo hace una neurona. Piensa que hay diferentes tipos de neuronas, por ejemplo gaussinanas, sigmoidales, de 'función escalón'... pero una vez más no debes quedarte ahí son 'modelos' de categorizar ni definitivas ni completas. Guste o no sigue siendo un campo a explorar.
Personalmente yo era muy crítico en lo que algunos llamaban red neuronal 'artificial' por tal y como yo lo entiendo sin embargo a día de hoy esto está resuelto en una subclasificación: 'aprendizaje supervisado' y 'aprendizaje no supervisado'. Cuando el aprendizaje es superviado el motor de inferencia es construído pensando específicamente en el objetivo que se prentende conseguir, entonces el diseño para aplicar un 'or', 'and' etc... depende de esto, no es que se aplique universalmente un 'or' o un 'and'. (p.d.: bueno se usa universalmente pero para obtener metas fijas dadas unas condicones del mismo modo que se usa universalmente una multiplicación para hallar loe elementos dada una tabla de 'x' columnas por 'y' filas. Evidentemente la suma y la multiplicación se usan universalmente pero para sus objetivos específicos). Más abajo se explica cuando y cómo se usa realmente a modo 'grosso' un 'or' un 'and' y un 'xor' de modo general... sigue leyendo aunque me ha salido un tocho de mensaje, pero con 4 palabras quizás te siguieran quedando 20 preguntas.
De hecho no todas las entradas se valoran igual, generalmente se ofrece una ponderación por peso (confiar más en.. en el ejemplo ya lo hemos hecho de entrada que no es el caso típico salvo especialización), en lo que se entiende como una 'lógica borrosa'.
Esto es fácil de entender con un ejemplo, que se aprovecha para explicar la mitad eel funcionamiento de una neurona:
Supongamos que tenemos 9 amigos, cada uno de ellos debe responder a una pregunta que yo les he formulado , pactemos de entrada que la pregunta para todos ellos es la misma: " Existe la murrala de China ?". Independientemente de la veracidad de la respuesta, (lo importante aquí ahora es entender el mecanismo de como yo valoro las respuestas) yo no daré el mismo crédito a cada uno de mis amigos. Es lógico conocer que uno suele ser un ttotal fracaso en conocimientos, entonces a ese por ejemplo puntuaré su repuesta de este modo (lo que dé (si o no) por 1, es decir no me fío nada de su respuesta porque no me fío de sus conocimiento, ahora valoro a otros 4 amigos en la forma 2 por el valor que cada uno de ello me dé, digamos que confío en ellos pero no puedo predecir si realmente dominan el tema geográfico, luego a otros 3 amigos los valor así 3 por el valor que me den y al último que me fío mucho de él le doy 5 puntos por su respuesta, es decir si me dice si será 5*1=5 si me dice no será: 5 * 0=0, luego sumo todos los pesos... y establezco una 'frontera' para evaluar como 1 ó 0 el resultado.
La ' función de activación' no tiene porqué ser discreta, puede ser mostrada en valores contínuos así en el caso anterior el rango podría ir desde todos no: =0 hasta todos sí= 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)= 23 indicando así que la neurona puede estar más o menos activada.
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). ahora te pongo otro ejemplo:
Imagina el mismo ejemplo, anterior muy similar excepto en la apreciación del último, ahora el último su creídito no vale '5' sino la mitad de todos los anteriores es decir el 50% entonces lo expresaría así (posicion(valor)) modo de operar
resultando: sí= 1º (*1) + 2º(*2) + 3º(*2) + 4º(*2) + 5º(*2) + 6º(*3) + 7º(*3) + 8º(*3*1) * 9º(*1) p.d: nota que éste último está multiplicando ('and') por la suma total de los anteriores..
ahora si lo examinas estoy haciendo un 'or' entre los 8 primeros y el resultado de esto lo pondero con el 9º es decir hago un 'and' por tanto si el último es 0, todo el resultado será 0 porque el 'and' exige que ambos términos sean '1' (el primer término son la suma de los 8 primeros) en cambio si el 9º es '1' el valor de salida es la suma que arrojó los 8 primeros, que nuevamente será 0 si toda su suma es '0' .
Entonces se podría decir para explicarlo más fácilmente ´con la pregunta reformulada así: a los 8 primeros "¿ Existe la murralla de china?" y al 9º le pregunto: "¿Es cierto lo que dicen los 8 primeros?".
Entonces como puedes ver no es que use un 'or' ni un 'and' sino que en función de lo que se quiera se programa (formula) como ves incluso uniendo operadores y como ves no necesariamente con valores discretos. Pero claro para empezar a entender una neurona lo más lógico es empezar por la neurona más simple, lo que se suele explicar con una de 2 entradas, posiblemente elló induzca a un 'vicio' a causa de las 2 entradas, lo único que suele ser fijo es que devuelve una única salida, es por eso que se concibió una etapa 'oculta' cuando las entradas comunican los valores a un sinfín de 'intermedios', por ello se englobó todo el conjunto como neurona obviando esa parte interna, pués finalmente toda esa parte debe devolver una única salida.
Dicho esto debes entender que es lógico que haya neuronas especializadas. Fíjate que hemos descrito el proceso de salida de una neurona (aunque sin aprendizaje) en el ejemplo de la pregunta (he presentado luego el ejemplo de la 9º de otro modo porque al final volvemos a ello y espero que se entienda como opera). Entonces para comprender como funciona una neurona (partiendo de loqeu ya he explicado) todo lo que se requiere es utilizar 'memoria' es decir retroalimentar. Eso es lo que voy a explicar ahora... y es donde ese 9º se utilizaría...
Supón que basándonoes en el ejemplo primero nos diron una respuesta de 11 y que consideramos falsa '0' entonces retroalimentamos hacia atrás la respuesta eso nos permitirá poco a poco reconocer los mentirosos, los que no tienen ni idea de China y por tanto se iría filtrando la veracidad, es aquí donde entra a formar parte la función XOR.... espero que lo entiendas...
Si ya hemos hecho 10 preguntas y se nos ha dado 4 ciertas (valores >=13 sobre el total de23 que fijamos como máximo) y 6 malas, nuestra retroalimentación consistirá en basarlo con aprendizaje supervisado, es decir la muralla de china existe por tanto introducimos una entrada oculta desde la salida si a la pregunta de la muralla nos dieron 0 cuando debió ser 1 devuelvo un 1 a las entradas ahora esa entrada se une a cada entrada de los amigos, vuelvo a formular la misma pregunta: puesto que obtuvimos un 11 debemos afirmar que algunos respondieron bien entonces nuestra 1 retroalimentando deberá desactivar la salida de los amigos que dieron 0 a una respuesta que sabíamos que era 1, al desactivar a esos amigos significa que su respuesta se contará, entonces para saber que amuigos respondieron valor distinto de '1' (recuerda que les dimos valores contínuos) utilizamos 'XOR' pongamos el caso destripado: 101.000.101
esto es el primero cuyo valor era 1 nos da 1, el 2º nos da 0 el 31 nos da 1 el 4º,5º y 6º nos dan 0 el 7º nos da 1 el 8º nos da 0 y el 9º nos da 1 que sumado todos sus valores nos daba 11.
Por lo tanto sólo consideramos las respuéstas de 1,3,7 y9 el xor nos ha permitido filtrar de quien valoramos entonces ahora el rango máximo y mínimo de valores será: de 0 a 1ª(1*1) + 3º(2*1) + 7º(3*1) + 5º(5*1)=11, naturalmente en la siguiente respuesta por tanto nos da un si rotundo, pero eso no significa un éxito total, ya que sólo hemos formulado una pregunta y después de todo nuestro amigos son más inteligentes que nuestro 'diseño', de hecho le dimos de entrada un valor ponderado a nuestros amigos, por eso obtuvimos ya así de rápido un resultado pleno, esto en la práctica puede ser así o no, sin embargo en sucesivas iteraciones el resultado se irá filtrando más exhaustivamente.
El ejemplo no lo debes tomar al pie de la letra, ya que lo que pretende es ayudar a entender las fases del mecanismo de las neuronas: como las entradas se pueden disponer para ser valoradas, como se prepara una respuesta, como se retroalimenta con 'aprendizaje supervisado', como se activan y desactivan internamente para generar una salida. De hecho para que nuestro aprendizaje sea eficaz y el ejemplo fuera totalmente válido, el ponderamiento que nosotros hemos fijado desde el principio (valor 1 al primer, 2 a los 4 siguientes.... 5 al último) es el auténtico objetivo que tiene encomendado la retroalimentación, es decir es la retroalimentación quien debiera fijar esos valores valorar más al más 'creíble' y eficaz y menos a los demás...
De entrada sino hay razones para confiar más en uno que en otro (caso de la programación) de entrada todos valdrían 1 (salvo que tengamos información específica de un diseño al que se orienta y que podamos aprovechar), nuestro modo de cuantificar será con 'or'. Con 'xor' para valorar y con 'and' en la retroalimentación para 'activar/desactivar' . Esto luego en la práctica puede complicarse todo lo que se quiera....
Sucede que como somos inteligentes ya de entrada conocemos como son nuestros amigos, desde la primera pregunta ya hemos valorado y ponderado a cada uno y por eso ya tenemos un cierto 'juicio' interpretativo inicial que hace que nuestro ejemplo pudiera malinfluenciar si no se entiende su objetivo.
En fin espero haberme expresado con la claridad suficiente para que se entienda.
En otro momento si quieres comentamos las células de memoria para entender eso de la 'retroalimentación' .
p.d. final: el segundo ejemplo en el que el 9º amigo se valoraba con el mismo valor que a los 8 restantes, sería forma de de generar la retroalimentación para el aprendizaje supervisado, es decir este noveno podría haber sido un 10º oculto al que se le suministra la respuesta real para retroalimentar el aprendizaje... Supongo que algún detalle más se me quedará en el aire...
este párrafo tiene condensado el mecanismo de la neurona, quizás haga algún dibujo que ayude a entenderlo bien:
De entrada sino hay razones para confiar más en uno que en otro (caso de la programación) de entrada todos valdrían 1 (salvo que tengamos información específica de un diseño al que se orienta y que podamos aprovechar), nuestro modo de cuantificar será con 'or'. Con 'xor' para valorar y con 'and' en la retroalimentación para 'activar/desactivar' . Esto luego en la práctica puede complicarse todo lo que se quiera....
Hadess_inf:
Hola de nuevo, pues gracias nuevamente y haber si me confirmas lo que acabo de aprender:
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".
XOR: Devolvera "1" siempre y cuango ambas entradas sean diferentes. Aqui tengo otra duda, ¿el XOR solo sirve para comparar 2 valores o entradas?
--- Citar ---Ejemplo de los 9 amigos:
Entradas en orden = {1,1,1,1,1,1,1,1,1}
Pesos en orden={1,2,2,2,2,3,3,3,5}
Sumatoria de X*Y =23
indicando así que la neurona puede estar más o menos activada. A que te refieres con esto?
--- Fin de la cita ---
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 ---
--- 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 ¿?
Bien bien, resulta que todo esto ya lo tengo entendido aunque como es natural 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¿?. Si la suma es mayor a ese umbral la neurona generara una salida de "0" y si la suma es igual o menor al umbral generara una salida de "1" (claro esta que aun no estoy considerando el aprendizaje).
Nuevamente muchas gracias por tomarte el tiempo para responderme, ya que me interesa mucho el tema y se que responder a este tipo de post toma tiempo, Muchas gracias nuevamente y saludos.
:) :) :) :)
Navegación
[#] Página Siguiente
Ir a la versión completa