Projeto de Programa Fenotrópico

15

Recentemente, encontrei uma ideia apresentada por Jaron Lanier chamada "programação fenotrópica".

A idéia é usar interfaces 'superficiais' em vez de interfaces de ponto único em programas de computador que utilizem estatísticas para eliminar erros menores que normalmente causariam um programa "clássico" para travar catastroficamente.

A descrição de duas linhas está aqui:

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.'

A explicação um pouco mais longa é aqui . E a explicação ainda mais longa é o http://www.edge.org/conversation/why-gordian-software-convinced-me-confiar-na-realidade-dos-catos-e- -apples "> aqui .

Então, a questão, olhando para além das óbvias conotações robóticas que as pessoas tendem a escolher, como alguém projetaria e escreveria um "programa fenotrópico"?

    
por adv 07.01.2014 / 17:03
fonte

4 respostas

23

Lanier inventou uma palavra de 50 centavos em uma tentativa de lançar uma rede em torno de um conjunto específico de idéias que descrevem um modelo computacional para criar programas de computador que possuam certas características identificáveis.

A palavra significa:

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

A ideia vem em grande parte da biologia. Seu olho interage com o mundo, não através de uma função como See(byte[] coneData) , mas através de uma superfície chamada retina. Não é uma distinção trivial; um computador deve varrer todos os bytes em coneData um por um, enquanto seu cérebro processa todas essas entradas simultaneamente.

Lanierafirmaqueaúltimainterfaceémaistoleranteafalhas,oqueé(umúnicobitdeslizadoemconeDatapodequebrartodoosistema).Eleafirmaqueelepermiteacorrespondênciadepadrõeseumasériedeoutrosrecursosquenormalmentesãodifíceisparaoscomputadores,oquefaz.

Omecanismo"fenotrópico" por excelência em um sistema de computador seria a Rede Neural Artificial (RNA). É necessária uma "superfície" como entrada, em vez de uma interface definida. Existem outras técnicas para obter alguma medida de reconhecimento de padrões, mas a rede neural é a que mais se alinha com a biologia. Fazer uma RNA é fácil; fazer isso para executar a tarefa que você deseja executar de forma confiável é difícil, por uma série de razões:

  1. Como são as "superfícies" de entrada e saída? Eles são estáveis ou variam de tamanho ao longo do tempo?
  2. Como você consegue a estrutura de rede corretamente?
  3. Como você treina a rede?
  4. Como você obtém características de desempenho adequadas?

Se você estiver disposto a se separar da biologia, pode dispensar o modelo biológico (que tenta simular a operação de neurônios biológicos reais) e construir uma rede mais próxima dos verdadeiros "neurônios" de um computador digital. sistema (portas lógicas). Essas redes são chamadas de redes lógicas adaptáveis (ALN). A maneira como eles funcionam é criando uma série de funções lineares que se aproximam de uma curva. O processo parece algo assim:

...ondeoeixoXrepresentaalgumaentradaparaoALN,eoeixoYrepresentaalgumasaída.Agoraimagineonúmerodefunçõeslinearesexpandindoconformenecessárioparamelhoraraprecisãoeimagineesseprocessoocorrendoemndimensõesarbitrárias,implementadasinteiramentecomportaslógicasANDeOR,evocêtemalgumanoçãodecomoéumALN.

ALNstêmcertascaracterísticasmuitointeressantes:

  1. Elessãofacilmentetreináveis,
  2. Elessãomuitoprevisíveis,ouseja,pequenasalteraçõesnaentradanãoproduzemoscilaçõesnasaída,
  3. Elessãorápidoscomoumraio,porquesãoconstruídosnaformadeumaárvorelógicaefuncionamcomoumapesquisabinária.
  4. Suaarquiteturainternaevoluinaturalmentecomoresultadodoconjuntodetreinamento

Assim,umprogramafenotrópicoseriaalgoparecidocomisto;eleteriauma"superfície" de entrada, uma arquitetura e comportamento previsíveis e seria tolerante a entradas ruidosas.

Leitura adicional em Introdução às Redes Lógicas Adaptáveis Com um aplicativo para Avaliação de Risco de Auditoria
"Orientado a Objetos" vs "Orientado por Mensagens", por Alan Kay

    
por 07.01.2014 / 18:53
fonte
1

Acho que estamos no início de uma das etapas necessárias para chegar lá e que está reunindo muitos dados em formatos que podem ser analisados. A Internet, pesquisas do Google, Fitbit (cada passo que você dá, cada movimento que você faz, eu vou estar te observando.), FourSquare, um geo localização telefone inteligente, posts no Facebook e dados de perguntas SO estão sendo reunidos. Não estamos perto da quantidade de dados sensoriais que a média humana está compilando ao longo da vida, mas estamos chegando perto.

Comece a categorizar milhões de fotos de pássaros e obter feedback de pessoas dizendo que não é um pássaro e você pode começar a criar um algoritmo. A partir daí, uma impressão mais difusa (eu diria que é um modelo, mas isso é muito exato para o que estamos tentando codificar.) Pode ser criada.

class Birdish

Como um cão de estimação sabe muito sobre o dono? Porque assiste muito a ela. O cão ouviu carros entrando na garagem e relacionando isso com o dono abrindo a porta da frente que parece que o cachorro pode reconhecer um carro pelo som. Poderíamos fazer isso também, mas não vemos razão para isso. E isso é o que há de errado com o software atual, ele não presta atenção ao que o usuário está fazendo. Ele apenas espera que o usuário faça o que a TI espera que o usuário faça.

Algo simples como definir um despertador pode ser feito por meio de uma pequena observação / análise dos meus hábitos atuais. Desistimos de ajustar os cronômetros VCR antes que a tecnologia fosse substituída por digital. E isso teria acontecido tão rápido se pudéssemos fazer a interface do Guia de TV com o videocassete? Eu assisti o mesmo programa de TV 4 semanas seguidas ao mesmo tempo, mas o 5º eu nem liguei a TV. Obviamente, quero gravá-lo. Você não pode dizer que eu estou atrasado no trabalho escrevendo este post e com o meu trajeto típico não vai chegar em casa a tempo? Você tem os dados, faça as contas.

Reúna mais e mais dados e, em seguida, você poderá encontrar maneiras melhores de analisá-los, reconhecê-los e convertê-los. Estamos indo além do que pode ser inserido apenas a partir de um teclado com nossas câmeras de telefone e em breve câmeras de olho. É só o começo.

    
por 07.01.2014 / 23:32
fonte
1

Aqui está um conjunto de slides para definir uma Linguagem de programação probabilística no Scala .

É o primeiro exemplo de implementação decente para alguns dos principais componentes do sistema que Jaron Lanier propõe.

    
por 01.09.2014 / 20:02
fonte
-1

Um pensamento que tive recentemente:

Se você usou ideias de alto nível, como Maybe Monad, de Haskell, para agrupar chamadas de procedimentos remotos para outros sistemas. Você envia uma solicitação para o servidor. Mas nada volta (o servidor está quebrado). Ou uma Promessa volta (o servidor está ocupado) e seus programas continuam trabalhando com os valores Nenhum ou Prometido. Isso é como a tolerância a falhas que Lanier está procurando.

Talvez existam formas de encapsular outras eventualidades. Por exemplo, chamadas remotas que retornam com uma aproximação que é cada vez mais refinada ao longo do tempo por algum tipo de negociação em segundo plano. ie. o que volta é algo como uma Promessa, mas não apenas "continue segurando e trabalhando com isso e um valor adequado aparecerá em breve", mas "continue pressionando e trabalhando com isso e uma melhor aproximação aparecerá em breve". (E novamente e novamente). Isso seria capaz de esconder muitas falhas do programador, assim como os protocolos de rede escondem uma falha de rede de baixo nível do programador.

    
por 08.01.2014 / 06:55
fonte