Design del programma fenotropico

15

Recentemente ho trovato un'idea di Jaron Lanier chiamata "programmazione fenotropica".

L'idea è di utilizzare interfacce "di superficie" invece di interfacce a punto singolo in programmi per computer che utilizzano le statistiche per scoprire errori minori che normalmente causerebbero un arresto "catastrofico" del programma "classico".

La descrizione a due righe è qui:

According to Jaron, the 'real difference between the current idea of software, which is protocol adherence, and the idea [he is] discussing, pattern recognition, has to do with the kinds of errors we're creating' and if 'we don't find a different way of thinking about and creating software, we will not be writing programs bigger than about 10 million lines of code no matter how fast our processors become.'

La spiegazione leggermente più lunga è qui . E la spiegazione ancora più lunga è qui .

Quindi, la domanda, guardando oltre le ovvie connotazioni di robot-signore che le persone tendono a individuare, come si potrebbe effettivamente progettare e scrivere un "programma fenotropico?"

    
posta adv 07.01.2014 - 17:03
fonte

4 risposte

23

Lanier ha inventato una parola da 50 cent in un tentativo di creare una rete attorno a una serie specifica di idee che descrivono un modello di calcolo per la creazione di programmi per computer con determinate caratteristiche identificabili.

La parola significa:

A mechanism for component interaction that uses pattern recognition or artificial cognition in place of function invocation or message passing.

L'idea viene in gran parte dalla biologia. Il tuo occhio si interfaccia con il mondo, non tramite una funzione come See(byte[] coneData) , ma attraverso una superficie chiamata retina. Non è una distinzione banale; un computer deve analizzare tutti i byte in coneData uno per uno, mentre il tuo cervello elabora tutti questi input simultaneamente.

Lanieraffermachequest'ultimainterfacciaèpiùtolleranteaiguasti,cheè(unsingolobitscivolatoinconeDatapuòromperel'interosistema).Affermadiabilitarelacorrispondenzadeipatterneunaseriedialtrefunzionalitàchesononormalmentedifficilipericomputer,cosachefa.

Ilmeccanismoquintessenziale"fenotropico" in un sistema informatico sarebbe la Rete neurale artificiale (ANN). Prende una "superficie" come input, piuttosto che un'interfaccia definita. Esistono altre tecniche per raggiungere una certa misura del riconoscimento dei pattern, ma la rete neuronale è quella maggiormente allineata con la biologia. Fare una RNA è facile; far sì che esegua l'attività che si desidera eseguire in modo affidabile è difficile, per una serie di motivi:

  1. Che aspetto hanno le "superfici" di input e output? Sono stabili o variano di dimensioni nel tempo?
  2. Come si ottiene la struttura di rete giusta?
  3. Come si allena la rete?
  4. Come si ottengono le caratteristiche di prestazione adeguate?

Se sei disposto a separarti dalla biologia, puoi fare a meno del modello biologico (che tenta di simulare l'operazione di effettivi neuroni biologici) e costruire una rete che sia più strettamente alleata con i "neuroni" reali di un computer digitale sistema (porte logiche). Queste reti sono chiamate Adaptive Logic Networks (ALN). Il loro modo di lavorare è creare una serie di funzioni lineari che approssimano una curva. Il processo ha un aspetto simile al seguente:

...dovel'asseXrappresentauninputperl'ALNel'asseYrappresentaunoutput.Oraimmaginailnumerodifunzionilinearichesiespandonocomenecessariopermigliorarelaprecisioneeimmaginacheilprocessosiverifichisundimensioniarbitrarie,implementatointeramenteconportelogicheANDeOR,ehaiun'ideadicomesiaunALN.

GliALNhannodeterminatecaratteristichemoltointeressanti:

  1. Sonoabbastanzafacilmenteaddestrabili,
  2. Sonomoltoprevedibili,cioèlievimodifichenell'inputnonproduconooscillazionispontaneenell'output,
  3. Sonovelocissimi,perchésonocostruitisottoformadiunalberologicoefunzionanomoltocomeunaricercabinaria.
  4. Laloroarchitetturainternasievolvenaturalmentecomeconseguenzadelsetdiallenamento

Quindiunprogrammafenotropicosarebbesimileaquesto;avrebbeuna"superficie" per l'input, un'architettura e un comportamento prevedibili e sarebbe tollerante per gli input rumorosi.

Ulteriori letture
Un Introduzione alle reti logiche adattive Con un'applicazione a Audit Risk Assessment
"Object Oriented" vs "Message Oriented", di Alan Kay

    
risposta data 07.01.2014 - 18:53
fonte
1

Penso che siamo all'inizio di uno dei passi necessari per arrivarci e che sta raccogliendo molti dati in formati che possono essere analizzati. Internet, ricerche su Google, Fitbit (ogni passo che fai, ogni tua mossa, ti guarderò.), FourSquare, una posizione geografica per smartphone, i post di Facebook e i dati delle domande SO vengono raccolti. Non siamo vicino alla quantità di dati sensoriali che l'umano medio sta compilando per tutta la vita, ma ci stiamo avvicinando.

Inizia a catalogare milioni di immagini di uccelli e ottenere feedback da persone che ti dicono che non è un uccello e puoi iniziare a creare un algoritmo. Da lì è possibile creare un'impressione più confusa (lo definirei un modello, ma è troppo esatto per ciò che stiamo cercando di codificare).

class Birdish

In che modo un cane da compagnia sa molto del proprietario? Perché la guarda molto. Il cane ha ascoltato le auto che entravano nel vialetto d'accesso e lo metteva in correlazione con il proprietario che apriva la porta anteriore che sembra come se il cane potesse riconoscere un'auto dal suo suono. Potremmo fare anche questo, ma non vediamo alcun motivo per partecipare a questo. E questo è ciò che è sbagliato nel software attuale, non presta attenzione a ciò che l'utente sta facendo. Attende semplicemente che l'utente faccia ciò che l'IT si aspetta che l'utente faccia.

Qualcosa di semplice come impostare una sveglia potrebbe essere fatto da una piccola osservazione / analisi delle mie abitudini attuali. Abbiamo rinunciato a impostare i timer del videoregistratore prima che la tecnologia fosse sostituita dal digitale. E sarebbe successo altrettanto velocemente se avessimo potuto interfacciare la Guida TV con il videoregistratore? Ho guardato lo stesso programma TV per 4 settimane di fila contemporaneamente, ma il 5 non ho nemmeno acceso la TV. Ovviamente lo voglio registrato. Non puoi dire che rimango in ritardo al lavoro scrivendo questo post e con il mio tipico pendolarismo non riuscirò a tornare a casa in tempo? Hai i dati, fai i conti.

Raccogli più e più dati e poi puoi trovare modi migliori per analizzarli, riconoscerli e coprirli. Stiamo andando oltre ciò che può essere inserito solo da una tastiera con le nostre telecamere del telefono e presto le nostre fotocamere. È solo l'inizio.

    
risposta data 07.01.2014 - 23:32
fonte
1

Ecco una serie di diapositive per la definizione di linguaggio di programmazione probabilistico in Scala .

È il primo esempio di implementazione decente per alcuni dei componenti principali del sistema proposto da Jaron Lanier.

    
risposta data 01.09.2014 - 20:02
fonte
-1

Un pensiero che avevo di recente:

Se hai utilizzato idee di alto livello come Maybe Monad di Haskell per racchiudere le chiamate di procedura remota ad altri sistemi. Si invia una richiesta al server. Ma nulla ritorna (server è rotto). Oppure ritorna una Promessa (il server è occupato) ei tuoi programmi continuano a funzionare con quei valori Nessuno o Promessi. È un po 'come la tolleranza ai guasti che Lanier sta cercando.

Forse ci sono modi per incapsulare altre eventualità. Ad esempio le chiamate remote che ritornano con un'approssimazione che viene progressivamente perfezionata nel tempo da una sorta di negoziazione in background. vale a dire. ciò che ritorna è qualcosa come una Promessa, ma non solo "continua a tenere duro e lavora con questo e un valore appropriato si presenterà a breve" ma "continua a tenere duro e lavorare con questo e una migliore approssimazione si presenterà a breve". (E ancora, e ancora). Questo sarebbe in grado di nascondere molti errori dal programmatore, proprio come i protocolli di rete nascondono un errore di rete di basso livello dal programmatore.

    
risposta data 08.01.2014 - 06:55
fonte

Leggi altre domande sui tag