Todos conocemos el famoso Perceptron: esa red neuronal tan básica que no da solución al problema de la XOR. En principio esto es una característica muy importante y es en la que la gente se para a pensar. Pero existe otra igual de importante y es la que he estado explotando hace algunas semanas.
Si la red neuronal es enseñada adecuadamente, para un espacio de 2 dimensiones, el Perceptron es capaz de diferenciar entre 2 clases de elementos separadas por una línea recta. Un caso práctico es enseñar a la red a diferenciar números positivos de números negativos. Esta prueba ha sido la que he realizado y tras varias iteraciones y enseñando números binarios de 8 bits (donde el primero de ellos era el signo), he conseguido que con sólo aprender 4 números positivos y 4 números negativos, la red sea capaz de diferenciar correctamente los 256 números que le han sido mostrados.
Esto demuestra que una red simple puede acertar siempre, pero a mi me interesa el caso contrario: cuando falla y cuando la propia red “no sabe lo que hace”. Con esta expresión me refiero a que en una de las múltiples pruebas realizadas estuve analizando el porcentaje de fallos cometidos por el Perceptrón. La sorpresa llegó cuando de los 256 números sólo había acertado el 50% de ellos. Esto quería decir que el otro 50% lo había fallado, pero lo más interesante del asunto es que al ser justo la mitad, se podía decir que la red neuronal había “echado a cara o cruz” el tipo de número que se le presentaba.
Una moneda tiene un 50% de posibilidades de salir cara y otro 50% de salir cruz, y la red neuronal había generado ese mismo resultado: 50% acierto y 50% fallo. La pregunta que me surgió fue: ¿se pueden generar resultados aleatorios con algo tan determinista como una red neuronal? El resultado fue claro: NO. La cuestión de la aleatoriedad venía impuesta por el número indicado a la entrada de la red, y con ese número el Perceptrón realizaba operaciones deterministas que daban un resultado positivo o negativo. La cuestión de todo está en el propio número indicado. Si ese número es siempre el mismo, las operaciones y el resultado son el mismo y por ello no hay nada aleatorio.
Pero esta situación me plantea una investigación futura: si se consigue que los pesos de las conexiones del Perceptrón estén continuamente cambiando en función del número de entrada, y el propio número de entrada cambie en función de los pesos, podría ser posible generar un resultado aleatorio a la salida del perceptrón, ¿no?. Más específicamente, y haciendo una analogía con la electrónica, si se consigue una red neuronal inestable, y por ello con una realimentación positiva (tal y como sucede con los amplificadores operacionales), el resultado es realmente incierto aunque estemos en un sistema determinista.
Bueno, por si esto no sirve, también se puede usar un método que he encontrado por internet para generar números pseudoaleatorios:
1. Formas la semilla como un número decimal a partir del día y la hora, algo como s=0.ssmmhhddmmaaaaa (se pueden añadir valores de teclado)
2. random = parte decimal de (pi + s)^2
3. s = random
Interesante idea, no se me había ocurrido emplear una red neuronal para generar números aleatorios, aunque sí había pensado en el proceso contrario. Puesto que en los ordenadores la pseudoaleatoriedad se basa en una función demasiado compleja o números demasiado grandes para que pueda predecirla un humano, ni podríamos sacar la función que la define. Sin embargo, si aplicamos una larga cadena de números aleatorios en la que la salida es cada número siguiente quizás la red podría llegar a comportarse como la función pseudoaleatoria y predecir los siguientes números, o acercarse.
En el sentido contario, como tú dices, quizás modificando los pesos constantemente durante la ejecución también podría darse un comportamiento aleatorio. Es una idea interesante.
Saludos!
Por: Ender Muab'Dib el Septiembre 23, 2008
a las 3:57 pm
Lo que planteas sobre la detección de números pseudoaleatorios es una idea factible. Seguramente que si buscas en Google alguna cosa sobre ese tema encuentras algo, ya que me suena que alguna técnica de intrusión utiliza un sistema parecido.
Por: Sergio Rodriguez Vaamonde el Septiembre 23, 2008
a las 4:57 pm