miércoles, 20 de marzo de 2013

Posible código para programar un cerebro a aprender.

Yendo al grano ...
Robby el Robot.
Últimamente he estado leyendo e investigando mucho sobre evolución, biología, neurología y psicología para extraer las leyes básicas que sustentan la mente, entonces tras leer que "los seres vivos aprenden apercibir" y recordando el trabajo de Walter Fritz, autor de "Sistemas Inteligentes y sus sociedades". Libro electrónico orientado a copo podría desarrollarse un posible modelo practico y asequible de robot sirviente y que puede aprender para trabajar .
También en el se desarrolla un proyecto sobre como construir un posible modelo de cerebro de robot básico pero universal.
Tras un tiempo hablando con el por e-mail, decidí pensar en aplicar lo que estudié al GL3 (General Learner 3, el programa núcleo de Robby el Robot) he hice un Pseudo código en el que describo de forma lo más precisa todos los conocimientos sintetizados de aprender a percibir y percibir en una maquina. (Tiene que ser perfeccionado, así que se admiten colaboraciones), aquí parte de como usarlo (solo sugerencias ) y el Pseudo-código;

========================================================================


La primera parte seria la utilización del entorno de ordenador de GL3 para indicarle puntos básicos de la percepción;


  1. Punto.( Un pixel de color Blanco, Negro, Rojo, Verde y Azul)
  2. Linea.( Sucesión de puntos en fila y sus variantes ;horizontal, vertical, inclinada en B/N, RGB)
  3. Angulo.( Dos lineas haciendo angulo y sus variantes ; Recto, Agudo, Obtuso en B/N, RGB)
  4. Arista. (Tres o más lineas en 2D y 3D B/N, RGB)
  5. Forma geométrica. (Triangulo, cuadrado, etc B/N, RGB)
  6. Curva.( Semi-curva, curva completa B/N, RGB)
  7. Circulo.( B/N, RGB)
  8. Semicirculo.(B/N, RGB)
  9. Plano.( Sucesión de lineas en B/N, RGB)
  10. Volumen.   (Sucesión de planos en B/N, RGB)
  11. Mixto ( Linea y curva, círculos y aristas, etc en B/N, RGB)
  12. Contrastes (B/N, RGB)
  13. Luz y oscuridad
  14. Movimiento.( Ej; En B/N, RGB, dibuja un circulo, luego borra y dibuja otro circulo levemente desplazado en una dirección[La que uno quiera] y asi sucesivamente [digamos 24 veces, como los fotogramas en un segundo)
  15. Color (B/N, RGB y sus combinaciones)
  16. Diferencias de altura, longitud, anchura y profundidad.
  17. Punto de fuga.


Y una vez que se le enseñe esa información debería poder combinarla con los sentidos de visión y tacto ( Un ciego puede ver por cualquier parte de su piel expuesta, llegando a detectar letras y formas. Y se ha hecho pruebas de dotar aun ciego de visión de sonar por medio de unas gafas especiales. Pueden "ver" objetos con resolución no inferior al centímetro  Esto valida que el cerebro solo sigue un simple algoritmo para todo el cortex y que continuamente crece y se re-escribe a si mismo.)

Y ahora el Pseudo-Código;(Los comentarios los pongo entrecomillados[leyenda: Código de color=> verde =comentario, azul= Pseudo-código)

NOMBRE SUB-PROGRAMA; APRENDE_PERCEPCIÓN_GL3
"Este es un sub-programa que forma parte del cerebro de GL3 y hace de puente de la parte de los sentidos"
"Ayuda a GL3 a aprender a percibir, ahorrando en programación de percepción artificial"
"Toda percepción (Ahora Precepto) o regla de percepción se aprende a través de este sub-parte del GL3"
"Todo Percepto o Regla_Percepto son intercambiables entre los sentidos, para dotar de flexibilidad y velocidad al sub-programa"
INICIO:
 ENTRADA_DATOS.
"Estos son los inputs de los sensores del robot."
     TIPO_ENTRADA:
        TECLADO/RATÓN.
        CÁMARA/S.
        MICRÓFONO/S.
        TACTO.
        SENSORES_ANGULO.
        SENSOR_VERTICAL.
        SENSOR_ORDENADOR.
ENTRADA:
     GENERAR_NÚMERO_PERCEPTO.
     GENERAR_NÚMERO_REGLA_PERCEPTO.
     ASOCIAR TIPO_ENTRADA A NÚMERO_PERCEPTO Y NÚMERO_REGLA_PERCEPTO.
"Como en GL3 se guarda los perceptos con un número positivo y los procesos de esos perceptos (cambios) como Regla_Percepto y estos como números negativos"
LEER_RELOJ_INTERNO:
"Lee el reloj interno para sincronizar los inputs de los perceptos y asociar cada tipo de Percepto unos con otros creando el primer concepto concreto"
TIEMPO X = AGRUPA PERCEPTOS:
 SI AGRUPAR PERCEPTOS ENTONCES CREAR CONCEPTO CONCRETO
 SUMAR NÚMEROS PERCEPTOS Y DAR RESULTADO COMO NÚMERO CONCEPTO CONCRETO
RELACIONAR PERCEPTOS:
"Esta parte relaciona los perceptos entre si y gestiona su entrado o no en memoria."
 SI PERCEPTO ES IGUAL A PERCEPTO DE MEMORIA NO GUARDAR.
 SI PERCEPTO ES DIFERENTE A PERCEPTO EN MEMORIA SI GUARDAR.
 SI PERCEPTO ES SIMILAR A PERCEPTO EN MEMORIA GUARDAR DIFERENCIA COMO NUEVO PERCEPTO Y RELACIONAR.
GENERADOR REGLAS_PERCEPTOS:
"Esta parte relaciona los reglas_perceptos entre si y gestiona su entrado o no en memoria."
 SI PERCEPTO NUEVO ES SIMILAR O DIFERENTE A PERCEPTO PREVIO ENTONCES RELACIONAR.
 SI PERCEPTO ACTUAL ES SEGUIDO POR NUEVO PERCEPTO ENTONCES RELACIONAR.
 SI REGLA_PERCEPTO ES IGUAL A REGLA_PERCEPTO DE MEMORIA NO GUARDAR.
 SI REGLA_PERCEPTO ES DIFERENTE A REGLA_PERCEPTO EN MEMORIA SI GUARDAR.
 SI REGLA_PERCEPTO ES SIMILAR A REGLA_PERCEPTO EN MEMORIA GUARDAR DIFERENCIA COMO NUEVO REGLA_   PERCEPTO Y RELACIONAR.

REPRESENTAR ENTRADA_A_PERCEPTO:
"Esta parte se dedica a dar una forma de proceso mínimo y es incompleta en el sentido que tiene que aprender a percibir."
"Cada sentido tiene una forma de representación"
"Mi idea es usar en todos un registro de mapa de bits, teniendo en cuenta cada tipo de sensor."
"Luego debe de procesar con perceptos/regla_perceptos y conceptos/reglas_producción estos perceptos nuevos."
"Este mensaje se repite con cada tipo de entrada de sentido".
        TECLADO/RATÓN:
            INPUT ASCII.( CÓDIGO NÚMERO DE LA TABLA ASCII)
            INPUT MOUSE X/Y.( CÓDIGO DE RELACIÓN COORDENADAS CARTESIANAS)
            PROCESAR CON: PERCEPTO APRENDIDO
            PROCESAR CON: REGLA_PERCEPTO APRENDIDO.
            PROCESAR CON: REGLAS Y CONCEPTOS APRENDIDOS.
"Esta parte se dedica a dar una forma de proceso mínimo y es incompleta en el sentido que tiene que aprender a percibir."
"Cada sentido tiene una forma de representación"
"Mi idea es usar en todos un registro de mapa de bits, teniendo en cuenta cada tipo de sensor."
"Luego debe de procesar con perceptos/regla_perceptos y conceptos/reglas_producción estos perceptos nuevos."
"Este mensaje se repite con cada tipo de entrada de sentido".
"A partir de aqui cada sentido funciona con el modelo de entrada de datos definido para cada sentido
        CÁMARA/S:
            INPUT_VIDEO= MAPADE BITS (32X32 =1024 BITS)
            B/N=0, 1.
            RGB = 2, 3, 4.
            RATIO = 24 BITMAPS X SEGUNDO.
            PROCESAR CON: REGLA_PERCEPTO APRENDIDO.
            PROCESAR CON: REGLAS Y CONCEPTOS APRENDIDOS.
"Esta parte se dedica a dar una forma de proceso mínimo y es incompleta en el sentido que tiene que aprender a percibir."
"Cada sentido tiene una forma de representación"
"Mi idea es usar en todos un registro de mapa de bits, teniendo en cuenta cada tipo de sensor."
"Luego debe de procesar con perceptos/regla_perceptos y conceptos/reglas_producción estos perceptos nuevos."
"Este mensaje se repite con cada tipo de entrada de sentido".
        MICRÓFONO/S:
            INPUT AUDIO = NÚMERO GOLPES/AMPLITUD_ONDA/TIEMPO (LEER_CLOCK_CPU) = MAPA DE BITS( DIM:9X7 BIT)
            PROCESAR CON: REGLA_PERCEPTO APRENDIDO.
            PROCESAR CON: REGLAS Y CONCEPTOS APRENDIDOS.
"Esta parte se dedica a dar una forma de proceso mínimo y es incompleta en el sentido que tiene que aprender a percibir."
"Cada sentido tiene una forma de representación"
"Mi idea es usar en todos un registro de mapa de bits, teniendo en cuenta cada tipo de sensor."
"Luego debe de procesar con perceptos/regla_perceptos y conceptos/reglas_producción estos perceptos nuevos."
"Este mensaje se repite con cada tipo de entrada de sentido".
        TACTO:
            NÚMERO DE BOTONES_CONTACTO = MAPA DE BITS = FORMA MAPA TACTO_CUERPO.(DIM: x X y BIT)
            PROCESAR CON: REGLA_PERCEPTO APRENDIDO.
            PROCESAR CON: REGLAS Y CONCEPTOS APRENDIDOS.
"Esta parte se dedica a dar una forma de proceso mínimo y es incompleta en el sentido que tiene que aprender a percibir."
"Cada sentido tiene una forma de representación"
"Mi idea es usar en todos un registro de mapa de bits, teniendo en cuenta cada tipo de sensor."
"Luego debe de procesar con perceptos/regla_perceptos y conceptos/reglas_producción estos perceptos nuevos."
"Este mensaje se repite con cada tipo de entrada de sentido".
        SENSORES_ANGULO:
            VARIACIÓN DE NIVEL EN ANGULO DE ROTACIÓN (0º A 180º = 0 A 180 NÚMERO)
            PROCESAR CON: REGLA_PERCEPTO APRENDIDO.
            PROCESAR CON: REGLAS Y CONCEPTOS APRENDIDOS.
"Esta parte se dedica a dar una forma de proceso mínimo y es incompleta en el sentido que tiene que aprender a percibir."
"Cada sentido tiene una forma de representación"
"Mi idea es usar en todos un registro de mapa de bits, teniendo en cuenta cada tipo de sensor."
"Luego debe de procesar con perceptos/regla_perceptos y conceptos/reglas_producción estos perceptos nuevos."
"Este mensaje se repite con cada tipo de entrada de sentido".
        SENSOR_VERTICAL:
            VARIACIÓN DE NIVEL EN ANGULO DE INCLINACIÓN (0º A 180º = 0 A 180 NÚMERO)
            PROCESAR CON: REGLA_PERCEPTO APRENDIDO.
            PROCESAR CON: REGLAS Y CONCEPTOS APRENDIDOS.
"Esta parte se dedica a dar una forma de proceso mínimo y es incompleta en el sentido que tiene que aprender a percibir."
"Cada sentido tiene una forma de representación"
"Mi idea es usar en todos un registro de mapa de bits, teniendo en cuenta cada tipo de sensor."
"Luego debe de procesar con perceptos/regla_perceptos y conceptos/reglas_producción estos perceptos nuevos."
"Este mensaje se repite con cada tipo de entrada de sentido".
        SENSOR_ORDENADOR:
            SENSOR_TEMPERATURA = GRADOS CELSIUS = NÚMERO.
            SENSOR_CICLOS_CPU = NÚMERO_CICLOS = NÚMERO.
            SENSOR_ BATERÍA = DE 0% A 100% = NÚMERO.
            PROCESAR CON: REGLA_PERCEPTO APRENDIDO.
            PROCESAR CON: REGLAS Y CONCEPTOS APRENDIDOS.
"Esta parte se dedica a dar una forma de proceso mínimo y es incompleta en el sentido que tiene que aprender a percibir."
"Cada sentido tiene una forma de representación"
"Mi idea es usar en todos un registro de mapa de bits, teniendo en cuenta cada tipo de sensor."
"Luego debe de procesar con perceptos/regla_perceptos y conceptos/reglas_producción estos perceptos nuevos."
"Este mensaje se repite con cada tipo de entrada de sentido".
"En esta parte se finaliza el programa y lo envía todo a memoria definitivamente."
RESULTADO_GLOBAL:
   ENVIAR PERCEPTOS A MEMORIA.
   ENVIAR REGLAS_PERCEPTOS A MEMORIA.
FIN PROGRAMA.

No hay comentarios: