Diseño de programas fenotropos

15

Hace poco me encontré con una idea presentada por Jaron Lanier llamada "programación fenotrópica".

La idea es utilizar interfaces "de superficie" en lugar de interfaces de un solo punto en programas informáticos que utilizan estadísticas para resolver errores menores que normalmente causan que un programa "clásico" se bloquee catastróficamente.

La descripción de dos líneas está aquí:

  

Según Jaron, la 'diferencia real entre la idea actual de   software, que es la adherencia al protocolo, y la idea [él es]   Discutir, reconocimiento de patrones, tiene que ver con los tipos de errores.   estamos creando 'y si' no encontramos una forma diferente de pensar   Sobre y creando software, no estaremos escribiendo programas más grandes.   de aproximadamente 10 millones de líneas de código, sin importar qué tan rápido nuestros procesadores   convertido. '

La explicación ligeramente más larga es aquí . Y la explicación aún más larga es aquí .

Entonces, la pregunta, mirando más allá de las obvias connotaciones de robot-dueño que la gente tiende a distinguir, ¿cómo se diseñaría y escribiría un "programa fenotrópico?"

    
pregunta adv 07.01.2014 - 17:03
fuente

4 respuestas

23

Lanier ha inventado una palabra de 50 centavos en un intento de lanzar una red alrededor de un conjunto específico de ideas que describen un modelo computacional para crear programas de computadora que tienen ciertas características identificables.

La palabra significa:

  

Un mecanismo para la interacción de componentes que utiliza el reconocimiento de patrones o   cognición artificial en lugar de función invocación o mensaje   pasando.

La idea viene en gran parte de la biología. Su ojo se interconecta con el mundo, no a través de una función como See(byte[] coneData) , sino a través de una superficie llamada retina. No es una distinción trivial; una computadora debe escanear todos los bytes en coneData uno por uno, mientras que su cerebro procesa todas esas entradas simultáneamente.

Lanierafirmaquelaúltimainterfazesmástoleranteafallos,quees(unsolobitdeslizadoenconeDatapuederompertodoelsistema).Afirmaquepermitelacoincidenciadepatronesyunagrancantidaddeotrascapacidadesquenormalmentesondifícilesparalascomputadoras,loquehace.

Elmecanismo"fenotrópico" por excelencia en un sistema informático sería la red neuronal artificial (ANN). Toma una "superficie" como entrada, en lugar de una interfaz definida. Existen otras técnicas para lograr cierto grado de reconocimiento de patrones, pero la red neuronal es la más estrechamente alineada con la biología. Hacer una ANN es fácil; Lograr que realice la tarea que desea que realice de manera confiable es difícil, por varias razones:

  1. ¿Qué aspecto tienen las "superficies" de entrada y salida? ¿Son estables o varían en tamaño con el tiempo?
  2. ¿Cómo se obtiene la estructura de red correcta?
  3. ¿Cómo entrenas a la red?
  4. ¿Cómo se obtienen las características de rendimiento adecuadas?

Si está dispuesto a desprenderse de la biología, puede prescindir del modelo biológico (que intenta simular el funcionamiento de las neuronas biológicas reales) y construir una red que esté más estrechamente relacionada con las "neuronas" reales de una computadora digital. sistema (puertas lógicas). Estas redes se denominan redes de lógica adaptativa (ALN). La forma en que funcionan es mediante la creación de una serie de funciones lineales que se aproximan a una curva. El proceso se ve algo como esto:

...dondeelejeXrepresentaalgunaentradaalALN,yelejeYrepresentaalgunasalida.Ahoraimaginelacantidaddefuncioneslinealesqueseexpandensegúnseanecesarioparamejorarlaprecisión,eimaginequeelprocesoocurreenndimensionesarbitrarias,implementadascompletamenteconpuertaslógicasANDyOR,ytieneunaideadecómoesunALN.

LosALNtienenciertascaracterísticasmuyinteresantes:

  1. Sonbastantefácilesdeentrenar,
  2. Sonmuypredecibles,esdecir,loscambioslevesenlaentradanoproducencambiosbruscosenlasalida,
  3. Sonmuyrápidos,yaqueestánconstruidosconlaformadeunárbollógicoyfuncionandemaneramuysimilaraunabúsquedabinaria.
  4. Suarquitecturainternaevolucionanaturalmentecomoresultadodelconjuntodecapacitación

Porlotanto,unprogramafenotrópicoseveríaasí.tendríauna"superficie" para la entrada, una arquitectura y un comportamiento predecibles, y sería tolerante a las entradas ruidosas.

Lecturas adicionales
An Introducción a las redes de lógica adaptativa Con una aplicación para Evaluación de riesgos de auditoría
"Orientado a objetos" vs "Orientado a mensajes", por Alan Kay

    
respondido por el Robert Harvey 07.01.2014 - 18:53
fuente
1

Creo que estamos al principio de uno de los pasos que se tomará para llegar allí y que está recopilando muchos datos en formatos que se pueden analizar. Internet, búsquedas en Google, Fitbit (cada paso que das, cada movimiento que haces, te estaré observando), FourSquare, una ubicación geográfica de teléfono inteligente, publicaciones en Facebook y datos de SO, preguntas se están reuniendo. No estamos cerca de la cantidad de datos sensoriales que un humano promedio está compilando durante toda una vida, pero nos estamos acercando.

Comienza a categorizar millones de fotos de aves y obtén comentarios de personas que te dicen que no es un pájaro y puedes comenzar a crear un algoritmo. Desde allí se puede crear una impresión más borrosa (yo lo llamaría modelo, pero eso es demasiado exacto para lo que estamos tratando de codificar).

class Birdish

¿Cómo sabe un perro mascota tanto sobre el dueño? Porque la vigila mucho. El perro ha escuchado a los autos que entran en el camino de entrada y lo correlacionan con el hecho de que el dueño que abre la puerta delantera parece que el perro puede reconocer un auto por su sonido. Podríamos hacer esto también, pero no vemos ninguna razón para atender esto. Y eso es lo que está mal con el software actual, no presta atención a lo que está haciendo el usuario. Solo espera que el usuario haga lo que TI espera que el usuario haga.

Algo tan simple como configurar un reloj de alarma podría hacerse mediante una pequeña observación / análisis de mis hábitos actuales. Abandonamos la configuración de los temporizadores de VCR antes de que la tecnología fuera reemplazada por la digital. ¿Y eso habría sucedido tan rápido si hubiéramos podido conectar la Guía de TV con el VCR? He visto el mismo programa de televisión 4 semanas seguidas al mismo tiempo, pero el quinto, ni siquiera encendí la televisión. Obviamente lo quiero grabado. ¿No puedes decir que me estoy quedando hasta tarde en el trabajo escribiendo este post y con mi viaje típico no llegaré a casa a tiempo? Tienes los datos, haz los cálculos.

Reúna más y más datos y luego podrá encontrar mejores formas de analizarlos, reconocerlos y ocultarlos. Vamos más allá de lo que solo se puede ingresar desde un teclado con las cámaras de nuestro teléfono y pronto con las cámaras de cristal. Es solo el comienzo.

    
respondido por el JeffO 07.01.2014 - 23:32
fuente
1

Aquí hay un conjunto de diapositivas para definir un Lenguaje de programación probabilística en Scala .

Es el primer ejemplo de implementación decente para algunos de los componentes centrales del sistema que propone Jaron Lanier.

    
respondido por el New Alexandria 01.09.2014 - 20:02
fuente
-1

Un pensamiento que tuve recientemente:

Si usaste ideas de alto nivel como la habilidad de Moneda de Haskell para envolver llamadas de procedimientos remotos a otros sistemas. Usted envía una solicitud al servidor. Pero nada vuelve (el servidor está roto). O una Promesa regresa (el servidor está ocupado) y sus programas continúan trabajando con esos valores Ninguno o Prometido. Eso es algo así como la tolerancia a fallos que Lanier está buscando.

Tal vez hay formas de encapsular otras eventualidades. Por ejemplo, las llamadas remotas regresan con una aproximación que se refina cada vez más a lo largo del tiempo mediante algún tipo de negociación de fondo. es decir. lo que vuelve es algo así como una Promesa, pero no solo "seguir manteniendo y trabajando con esto y un valor adecuado aparecerá en breve" sino "seguir manteniendo y trabajando con esto y una mejor aproximación aparecerá en breve". (Y otra vez, y otra vez). Esto podría ocultar muchas fallas del programador, al igual que los protocolos de red ocultan muchas fallas de red de bajo nivel al programador.

    
respondido por el interstar 08.01.2014 - 06:55
fuente

Lea otras preguntas en las etiquetas