https://github.com/DanielRosillo/Delysid-ANN

En esta ocasión les comparto las estructuras para modelar una red neuronal y entrenarla mediante Machine Learning, cabe destacar que es completamente POO y incluye un Demo funcional. El código de la red es escalable y adaptable.

ESPECIFICACIONES DEL AGENTE

    • CONEXIONISTA.
    • PERCEPTRÓN MULTICAPA.
    • APRENDIZAJE SUPERVISADO.
    • FEED-FORWARD.

ENTORNO

    • Java 10.
    • Eclipse Photon.

CONTEXTO

Los procesos mentales permiten a los agentes responder a estímulos del mundo exterior, este mecanismo internamente representa el conocimiento a través de complejas estructuras que mapean la información, resultado de las percepciones del agente a lo largo del tiempo. El conexionismo aborda esta manera de representar la realidad, más en concreto en el ámbito de la inteligencia artificial se estudia la aplicación que tiene para resolver problemas.
La estrategia conexionista se centra principalmente en la filosofía divide y vencerás, apoyándose en modelos lógico-matemáticos cuya relación final es intrínseca al problema, y que, al implementarse en tiempo de ejecución, desencadena una serie de hechos y acciones que de estar en perfecta armonía darán como resultado el aprendizaje automático.

EJEMPLO - ANALISIS


Problema de Juguete: Aprender Tablas Lógicas.


El perceptrón simple por sí mismo puede resolver problemas cuya separabilidad lineal sea única, esto funciona para algunas de las tablas de verdad, cuya característica intrínseca es esta, pero existen otras cuya complejidad aumenta y dejan de ser linealmente separables. La explicación es evidente si observamos sus puntos dentro de un plano cartesiano.


Para resolver este problema es necesaria la implementación de un perceptrón multicapa, que es capaz de resolver problemas que no sean linealmente separables.
Se utilizará la siguiente topología para la red.



Función de Activación: Sigmoidea.

El resultado final de cada neurona será la ponderación de los pesos y entradas de los vecinos de la neurona más la aplicación de la función de activación.

Para la interpretación del resultado bastara con evaluar alguna de las salidas, solo existen dos vertientes:

    • La salida tiene un valor > 0.5, se interpretará el resultado como 1.
    • En caso de ser < 0.5 la salida se interpreta como 0.

Imagine cada nodo de la red como una pequeña factoría de números, una función; la salida final es dependiente de los pesos de sus neuronas vecinas(interconectadas) y el umbral de la neurona, por tanto, diremos que cada que una neurona converge:
procesa sus datos y aplica una función de activación que da como resultado una salida numérica que pasa a ser el valor entrada de sus neuronas vecinas, así hasta llegar a la última capa, en donde la salida se interpretara de forma binaria.

Si la salida final de la red le permite al agente responder correctamente a los estímulos (que son las entradas de la tabla), diremos que esos números convergen y resuelven al problema.
Encontrar la combinación de números correcta “armónica” es complicado, una de las formas conocidas para ajustar estos números es mediante el algoritmo de backpropagation. Que básicamente hace, que cada que la red trate de converger (lo que se traduce como converger todas las neuronas de la red en base a las percepciones del agente), ajustara los pesos y los umbrales de acuerdo a varios criterios matemáticos.

EJEMPLO - REPRESENTACIÓN && IMPLEMENTACIÓN

Representación

Se puede instanciar a un agente de la siguiente forma:


La clase Demo implementa un agente que aprende las  6 tablas elementales (AND, OR, XOR, NAND, NOR, XNOR),  utiliza el siguiente algoritmo de entrenamiento.

1.- El agente recibe “percibe” los datos de entrada.
2.- Procesar datos.
3.- Entrenar y aprender mediante los datos.

Se implementa de la siguiente forma:


Los datos de entrenamiento serán arreglos bidimensionales donde está la salida esperada en las posiciones 0 respectivamente por cada tabla.


Dentro de la clase Context encontramos la forma en que las neuronas procesan la información:


La demo contiene un menú interactivo por consola donde se puede interactuar con el agente, “Mode”, básicamente es la tabla en la queremos que trabaje, a su vez hay un chat donde podemos mandar en tiempo real las entradas y el agente responde según su configuración de modo y su entrenamiento.


TEST

Ejecutando en modo “Auto” y configurado en XOR se obtiene:

En azul la salida verdadera de la tabla y en rojo la respuesta del agente al estímulo, como se puede observar converge correctamente, en un lado se puede observar el valor real de la salida.

CONSIDERACIONES

Si desea escalar las estructuras considerar:

    • El algoritmo de Backpropagation.
    • La manera de percibir los estímulos del agente.
    • Procesamiento.

El conexionismo es un tópico bastante interesante que nos invita a generar estructuras complejas para representar procesos naturales con cierto grado de inteligencia en el computador, no olvidar que el proceso de abstracción sigue siendo bastante robusto y no trata en ningún momento de definir la verdad de su naturaleza, pero si acercarlo a una aplicación útil para las TI.

REPOSITORIO

MIT LICENSE.

https://github.com/DanielRosillo/Delysid-ANN

Russell, S., Norving, P. 2010. Artificial Intelligence A modern Approach. Third Edition. Pearson Education.
Rafael Alberto Moreno Parra 2016. Redes Neuronales parte 1.

Fraternalmente I.I. Daniel Rosillo;

- Project Manager at Rosillo Labs



Leave a comment! We it!


¡Contactanos!