Recentemente, li que uma rede neural recorrente pode se aproximar de qualquer algoritmo.
Então, minha pergunta é: o que isso significa exatamente e você pode me dar uma referência onde isso é provado?
references
rnn
user3726947
fonte
fonte
Respostas:
fundo
Primeiro temos que revisar alguns conceitos da teoria da computação. Um algoritmo é um procedimento para calcular uma função. Dada a entrada, o algoritmo deve produzir a saída correta em um número finito de etapas e finalizar. Dizer que uma função é computável significa que existe um algoritmo para calculá-la. Entre o conjunto infinito de todas as funções, a maioria não é computável. Máquinas de Turing são um modelo matemático que formaliza a noção de computação. Existem outros modelos equivalentes, mas as máquinas de Turing são o "modelo de referência" padrão. De acordo com a tese de Church-Turing, qualquer algoritmo pode ser implementado por uma máquina de Turing e todas as funções computáveis podem ser calculadas dessa maneira. Qualquer instância específica de uma máquina de Turing calcula apenas uma função específica. Porém, existe uma classe especial de máquinas de Turing, denominadas máquinas universais de Turing, que podem simular qualquer outra máquina de Turing para qualquer entrada. Eles fazem isso fazendo uma descrição da máquina a ser simulada (e sua entrada) como parte de sua própria entrada. Qualquer instância específica de uma máquina Universal Turing pode, portanto, computar qualquer função computável (isto é, pode implementar qualquer algoritmo). Qualquer sistema que compartilhe essa capacidade é chamado Turing complete. Uma maneira de provar que um sistema é Turing completo é mostrar que ele pode simular uma máquina universal de Turing. Muitos sistemas demonstraram estar completos em Turing (por exemplo, a maioria das linguagens de programação, certos autômatos celulares e mecânica quântica ).
Redes neurais recorrentes
O artigo a seguir mostra que, para qualquer função computável, existe uma rede neural recorrente finita (RNN) que pode computá-la. Além disso, existem RNNs finitos que são completos de Turing e, portanto, podem implementar qualquer algoritmo.
Eles usam redes que contêm um número finito de unidades conectadas de forma recorrente, que recebem entradas externas a cada momento. O estado de cada unidade é dado por uma soma ponderada de suas entradas (mais um viés), executado através de uma função de ativação não linear. A função de ativação é uma função linear saturada, que é uma aproximação linear por partes de um sigmóide. Os pesos e preconceitos são fixos, portanto não ocorre aprendizado.
A rede executa um mapeamento de uma sequência de entrada binária para uma sequência de saída binária. Existem duas entradas externas na rede, que são alimentadas a todas as unidades: uma 'linha de dados' e uma 'linha de validação'. A linha de dados contém a sequência de entrada de zeros e uns e, em seguida, zero após o término da sequência de entrada. A linha de validação informa à rede quando a sequência de entrada está acontecendo. Ele contém um para a duração da sequência de entrada e, em seguida, zero após o término. Uma unidade é considerada a 'unidade de saída'. Emite zeros por algum atraso arbitrário, depois a sequência de zeros e uns e depois zero após o término da sequência de saída. Outra unidade é considerada a 'unidade de validação', que nos informa quando a sequência de saída está acontecendo.
Embora esses RNNs mapeiem sequências de entrada binárias para sequências de saída binárias, podemos estar interessados em funções definidas em vários outros objetos matemáticos (outros tipos de números, vetores, imagens, gráficos, etc.). Porém, para qualquer função computável, esses outros tipos de objetos podem ser codificados como seqüências binárias (por exemplo, veja aqui uma descrição da codificação de outros objetos usando números naturais, que por sua vez podem ser representados em binário).
Resultado
Eles mostram que, para todas as funções computáveis, existe um RNN finito (da forma descrita acima) que pode computá-lo. Eles fazem isso mostrando que é possível usar uma RNN para simular explicitamente um autômato de empilhamento com duas pilhas. Este é outro modelo que é computacionalmente equivalente a uma máquina de Turing. Qualquer função computável pode ser calculada por uma máquina de Turing. Qualquer máquina de Turing pode ser simulada por um autômato de empilhamento com duas pilhas. Qualquer autômato de empilhamento com duas pilhas pode ser simulado por uma RNN. Portanto, qualquer função computável pode ser calculada por um RNN. Além disso, como algumas máquinas de Turing são universais, as RNNs que as simulam são completas de Turing e, portanto, podem implementar qualquer algoritmo. Em particular, eles mostram que existem RNNs completos de Turing com 1058 ou menos unidades.
Outras consequências
Uma conseqüência interessante dos resultados da simulação é que certas questões sobre o comportamento das RNNs são indecidíveis. Isso significa que não existe um algoritmo que possa respondê-las por RNNs arbitrárias (embora possam ser responsáveis no caso de RNNs específicas ). Por exemplo, a questão de saber se uma determinada unidade recebe o valor 0 é indecidível; se alguém pudesse responder a essa pergunta em geral, seria possível resolver o problema de parada das máquinas de Turing, que é indecidível.
Poder computacional
No artigo acima, todos os parâmetros e estados da rede são números racionais. Isso é importante porque restringe o poder das RNNs e torna as redes resultantes mais realistas. A razão é que os racionais são números computáveis , o que significa que existe um algoritmo para calculá-los com precisão arbitrária. A maioria dos números reais é incontestável e, portanto, inacessível - mesmo a máquina de Turing mais poderosa não pode representá-los, e muitas pessoas duvidam que possam ser representadas no mundo físico. Quando lidamos com 'números reais' em computadores digitais, estamos acessando um subconjunto ainda menor (por exemplo, números de ponto flutuante de 64 bits ). Representar números reais arbitrários exigiria informações infinitas.
O documento diz que conceder à rede acesso a números reais aumentaria ainda mais o poder computacional, além das máquinas de Turing. Siegelmann escreveu vários outros artigos explorando essa capacidade de 'super-Turing'. No entanto, é importante observar que esses são modelos matemáticos, e os resultados não significam que essa máquina possa realmente existir no mundo físico. Existem boas razões para pensar que não poderia, embora seja uma pergunta em aberto.
fonte
Eu acho que é isso que você está procurando. Esse cara provou que uma rede de alimentação múltipla de camada única ou mesmo uma camada poderia aproximar-se de qualquer função, desde que a rede tivesse unidades ocultas suficientes.
Hornik, K. (1991). Recursos de aproximação de redes feedforward de multicamadas. Redes neurais, 4 (2), 251-257.
fonte