Significato (e prova) di "RNN può approssimare qualsiasi algoritmo"


28

Recentemente ho letto che una rete neurale ricorrente può approssimare qualsiasi algoritmo.

Quindi la mia domanda è: cosa significa esattamente questo e puoi darmi un riferimento dove questo è dimostrato?


Controlla le opere di Halbert White. Penso che sia stato lui a dimostrare che una rete neurale è un approssimatore universale. (Non sono sicuro delle reti neurali ricorrenti, però.)
Richard Hardy,

Risposte:


42

sfondo

Dobbiamo prima ripassare alcuni concetti della teoria del calcolo. Un algoritmo è una procedura per il calcolo di una funzione. Dato l'input, l'algoritmo deve produrre l'output corretto in un numero finito di passaggi e quindi terminare. Dire che una funzione è calcolabile significa che esiste un algoritmo per calcolarla. Tra l'infinito insieme di tutte le funzioni, la maggior parte non è calcolabile. Le macchine di Turing sono un modello matematico che formalizza la nozione di calcolo. Esistono altri modelli equivalenti, ma le macchine di Turing sono il "modello di riferimento" standard. Secondo la tesi di Church-Turing, qualsiasi algoritmo può essere implementato da una macchina di Turing e tutte le funzioni calcolabili possono essere calcolate in questo modo. Qualsiasi istanza particolare di una macchina di Turing calcola solo una particolare funzione. Ma esiste una classe speciale di macchine di Turing chiamate macchine di Turing universali che possono simulare qualsiasi altra macchina di Turing per qualsiasi input. Lo fanno prendendo una descrizione della macchina da simulare (e il suo input) come parte del proprio input. Qualsiasi istanza particolare di una macchina Universal Turing può quindi calcolare qualsiasi funzione calcolabile (cioè può implementare qualsiasi algoritmo). Qualsiasi sistema che condivide questa abilità è chiamato Turing completo. Un modo per dimostrare che un sistema è Turing completo è dimostrare che può simulare una macchina Turing universale. Molti sistemi hanno dimostrato di essere Turing completi (ad esempio la maggior parte dei linguaggi di programmazione, alcuni automi cellulari e la meccanica quantistica ).

Reti neurali ricorrenti

Il seguente documento mostra che, per qualsiasi funzione calcolabile, esiste una rete neurale ricorrente finita (RNN) che può calcolarla. Inoltre, esistono RNN finiti che sono completi di Turing e possono quindi implementare qualsiasi algoritmo.

Siegelmann e Sontag (1992) . Sul potere computazionale delle reti neurali

Usano reti contenenti un numero finito di unità collegate in modo ricorrente, che ricevono input esterni in ogni momento. Lo stato di ogni unità è dato da una somma ponderata dei suoi input (più un bias), eseguita attraverso una funzione di attivazione non lineare. La funzione di attivazione è una funzione lineare satura, che è un'approssimazione lineare a tratti di un sigmoide. I pesi e le inclinazioni sono fissi, quindi non si verifica alcun apprendimento.

La rete esegue una mappatura da una sequenza di input binaria a una sequenza di output binaria. Esistono due ingressi esterni alla rete, che vengono inviati a tutte le unità: una "linea dati" e una "linea di convalida". La riga di dati contiene la sequenza di input di zeri e uno, quindi zero al termine della sequenza di input. La riga di convalida informa la rete quando si sta verificando la sequenza di input. Ne contiene uno per la durata della sequenza di input, quindi zero al termine. Un'unità è considerata l '"unità di uscita". Emette zeri per un certo ritardo arbitrario, quindi la sequenza di output di zeri e uno, quindi zero dopo che la sequenza di output è terminata. Un'altra unità è considerata l '"unità di convalida", che ci consente di sapere quando si sta verificando la sequenza di output.

Sebbene questi RNN associno sequenze di input binari a sequenze di output binarie, potremmo essere interessati a funzioni definite su vari altri oggetti matematici (altri tipi di numeri, vettori, immagini, grafici, ecc.). Ma, per qualsiasi funzione calcolabile, questi altri tipi di oggetti possono essere codificati come sequenze binarie (ad es. Vedere qui per una descrizione della codifica di altri oggetti usando numeri naturali, che a loro volta possono essere rappresentati in binario).

Risultato

Mostrano che, per ogni funzione calcolabile, esiste un RNN finito (della forma sopra descritta) che può calcolarlo. Lo fanno mostrando che è possibile usare un RNN per simulare esplicitamente un automa pushdown con due stack. Questo è un altro modello che è computazionalmente equivalente a una macchina di Turing. Qualsiasi funzione calcolabile può essere calcolata da una macchina di Turing. Qualsiasi macchina di Turing può essere simulata da un automa a spinta con due pile. Qualsiasi automa pushdown con due stack può essere simulato da un RNN. Pertanto, qualsiasi funzione calcolabile può essere calcolata da un RNN. Inoltre, poiché alcune macchine Turing sono universali, le RNN che le simulano sono Turing complete e possono quindi implementare qualsiasi algoritmo. In particolare, mostrano che esistono RNN completi di Turing con 1058 o meno unità.

Altre conseguenze

Una conseguenza interessante dei risultati della simulazione è che alcune domande sul comportamento degli RNN sono indecidibili. Ciò significa che non esiste alcun algoritmo in grado di rispondere a RNN arbitrari (sebbene possano essere responsabili nel caso di RNN particolari ). Ad esempio, la domanda se una determinata unità abbia mai il valore 0 è indecidibile; se si potesse rispondere a questa domanda in generale, sarebbe possibile risolvere il problema dell'arresto per le macchine di Turing, il che è indecidibile.

Potenza computazionale

Nel documento sopra, tutti i parametri e gli stati della rete sono numeri razionali. Questo è importante perché limita la potenza degli RNN e rende le reti risultanti più realistiche. Il motivo è che i razionali sono numeri calcolabili , il che significa che esiste un algoritmo per calcolarli con precisione arbitraria. La maggior parte dei numeri reali è incontestabile, e quindi inaccessibile - anche la più potente macchina di Turing non può rappresentarli, e molte persone dubitano che potrebbero persino essere rappresentate nel mondo fisico. Quando abbiamo a che fare con "numeri reali" su computer digitali, accediamo a un sottoinsieme ancora più piccolo (ad esempio numeri a virgola mobile a 64 bit ). La rappresentazione di numeri reali arbitrari richiederebbe infinite informazioni.

Il documento afferma che dare alla rete l'accesso a numeri reali aumenterebbe ulteriormente la potenza di calcolo, al di là delle macchine di Turing. Siegelmann ha scritto una serie di altri documenti che esplorano questa capacità di "super-Turing". Tuttavia, è importante notare che si tratta di modelli matematici e i risultati non significano che una tale macchina potrebbe effettivamente esistere nel mondo fisico. Ci sono buoni motivi per pensare che non sia possibile, sebbene sia una domanda aperta.


1
ehi, lo trovo super interessante, mi chiedevo se hai qualche riferimento per saperne di più su questa teoria del calcolo e sulla sua relazione con algoritmi di machine learning o calcolo quantistico. Grazie!
user110320

0

Penso che questo sia quello che stai cercando. Questo ragazzo ha dimostrato che una rete feedforward multistrato o persino un singolo strato potrebbe approssimare qualsiasi funzione, a condizione che la rete abbia abbastanza unità nascoste.

Hornik, K. (1991). Capacità di approssimazione di reti feedforward multistrato. Reti neurali, 4 (2), 251-257.


1
non intendevo questo. Ho già letto la prova per questo. Ho modificato la mia domanda.
user3726947,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.