Le reti neurali possono essere utilizzate per ideare algoritmi?


9

Dopo i successi sempre più recenti delle reti neurali nei giochi da tavolo, si sente che il prossimo obiettivo che ci prefiggiamo potrebbe essere qualcosa di più utile di battere gli umani in Starcraft. Più precisamente, mi chiedevo se

Le reti neurali possono essere addestrate per risolvere i classici problemi algoritmici?

Qui intendo che per esempio, la rete potrebbe avere un grafo di input con bordi pesati, e due vertici s e t specificato e abbiamo chiesto a trovare una breve s t percorso il più velocemente possibile. Quindi immagino che la rete neurale avrebbe scoperto e addestrato se stessa per usare Dijkstra o qualcosa di simile.Gstst

TC0TC0NPTC0

Naturalmente, l'estrazione dell'algoritmo è una domanda completamente diversa. Sospetto che gli esperti sappiano come farlo, ma discuterne non è l'argomento di questa domanda.

Aggiunto due giorni dopo: dopo aver visto le risposte, lasciami specificare che se rispondi in negativo, allora vorrei sapere

Perché giocare a scacchi è più facile di Dijkstra o del grafisomorfismo?


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Lev Reyzin

Risposte:


2

Secondo questo blog di Reza Zadeh , addestrare una rete neurale per produrre risultati corretti anche solo per i due terzi degli esempi di addestramento è difficile dal punto di vista computazionale:

Infatti, nel 1988 J. Stephen Judd mostra che il seguente problema è NP-difficile:

Data una rete neurale generale e una serie di esempi di allenamento, esiste una serie di pesi limite per la rete in modo che la rete produca l'output corretto per tutti gli esempi di allenamento?

Judd mostra anche che il problema rimane NP-difficile anche se richiede solo una rete per produrre l'output corretto per soli due terzi degli esempi di addestramento, il che implica che anche allenare approssimativamente una rete neurale è intrinsecamente difficile nel peggiore dei casi. Nel 1993, Blum e Rivest peggiorano le notizie: anche una semplice rete con solo due strati e tre nodi è NP-difficile da addestrare!


1
Non vedo davvero come questo risponda alla mia domanda.
domotorp,

Prima di modificare il post, la prima domanda riguarda l'addestramento di NN. Da quando hai aggiunto il tag CC, la mia risposta mostra che è difficile addestrare NN indipendentemente dal fatto che il tuo problema algoritmico sia in P o NPC
Mohammad Al-Turkistany,

Mi dispiace se ero vago.
domotorp,

0

Questa non è una risposta completa e non ho molta esperienza nelle reti neurali, ma forse è utile.

Le NN essenzialmente ricevono un input e producono una risposta. Vengono poi addestrati attraverso la pratica per produrre risposte simili su input "simili" nel dominio, ad esempio la stessa etichetta per le immagini dello stesso animale o valutazioni elevate per posizioni "buone" di scacchi in cui il buono significa alte probabilità di vincita.

Quindi, come ho commentato, le reti neurali sono un modello di calcolo non uniforme che funziona in modo totalmente diverso rispetto agli algoritmi passo-passo eseguiti su macchine di Turing. Invece, pensali come circuiti "morbidi" che usano matematica continua piuttosto che booleana e possono essere modificati o addestrati e possono sbagliare.

Perché giocare a scacchi è più facile di Dijkstra o del grafisomorfismo?

In parte, è la differenza tra chiedere a qualcuno di rispondere a una domanda al meglio delle proprie capacità e chiedere loro la risposta corretta insieme a una prova che è corretta. Parzialmente, è la differenza tra risolvere un problema di dimensioni fisse e risolvere contemporaneamente il problema per tutte le possibili dimensioni di input.

Ogni volta che Dijkstra viene eseguito su un'istanza, che può essere di qualsiasi dimensione, dimostra implicitamente che il suo output è l'unica vera risposta e nessun'altra. Nel riconoscimento degli scacchi e delle immagini, si dà la risposta migliore possibile e gli errori sono tollerati. Inoltre, si allena solo le reti per risolvere questi problemi di una dimensione alla volta. Non credo che sappiamo ancora come generalizzare una soluzione di rete neurale per, ad esempio, problemi di dimensioni e forme completamente diverse.

Non penso che dovremmo supporre che le reti neurali non possano risolvere i percorsi più brevi o problemi algoritmici simili, ma risolvono i problemi in un modo fondamentalmente diverso rispetto a un algoritmo passo-passo che è sempre corretto.

Tornando alla somiglianza tra reti neurali e circuiti, nota che i circuiti sono stati studiati per decenni, ma a giudicare dalla mancanza di risposte a (5) della mia domanda precedente , non sappiamo quasi nulla su come costruire circuiti completamente corretti per un dato problema se non tramite la trasformazione di un algoritmo uniforme (Turing Machine) in un circuito.


Non credo che avere una risposta faccia la differenza: due giocatori possono giocare a Dijkstra competendo e trovando un percorso più breve. La scalabilità potrebbe essere un problema più serio: pensi che le NN possano imparare a giocare a NIM?
domotorp,

@domotorp, penso che ci sia un'enorme differenza concettuale e pratica tra algoritmi corretti ed euristica errata ma approssimativa. Non hai chiesto perché gli scacchi sono più difficili dei percorsi più brevi approssimativi, hai chiesto perché gli scacchi sono più difficili di Dijkstra, che è dimostrabilmente corretto il 100% delle volte su tutte le dimensioni di input. Ri: nim, nessuna idea; hai bisogno di un'architettura NN che accetta input arbitrariamente grandi per iniziare con ...
usul

0

Non sono affatto un esperto, ma non vedo perché no, ancora.

Le reti neurali eseguono fondamentalmente l' ottimizzazione secondo una sorta di "modello di costo / beneficio" che spesso è già noto in anticipo. Inoltre, lo spazio di ricerca è ben definito, con mosse valide e non valide conosciute e "variazioni" facili da definire. Anche per AlphaZero e AlphaGo, le funzioni di costo sono probabilmente basate sulla percentuale di vincita e sulla conseguente distribuzione delle percentuali di vincita per tutte le possibili mosse dopo aver effettuato una mossa, o una sorta di euristica per questo.

Per l'elaborazione di algoritmi, stai essenzialmente chiedendo al programma di imparare come produrre una stringa corretta (con una codifica implicita e una funzione di costo già nota) che corrisponde a un programma che "esegue un algoritmo". Tuttavia, ci sono probabilmente infiniti algoritmi per i quali si implementa un programma. Quindi forse vorrai definire le metriche "fitness" corrette.

Tuttavia, anche per alcuni programmi, le metriche "fitness" possono essere piuttosto difficili da definire. Tempo? Utilizzo dello spazio? Quantificazione di "effetti collaterali?" In modo ottimale, genererai "il programma più breve" che fa solo quello che vuoi che faccia.

Suppongo che se trovi le metriche di fitness e gli algoritmi di regolazione corretti, sarai in grado di farlo.


-3

le "reti neurali" trasformano un vettore da uno spazio dimensionale ad un altro spazio dimensionale. quindi non sono altro che approssimatori di funzioni altamente, altamente non lineari. anche le reti neurali usano algoritmi di approssimazione per minimizzare le perdite. tuttavia l'addestramento di reti neurali per l'elaborazione di nuovi algoritmi è fuori discussione. tomas mikolov ha lavorato un po 'in quest'area con una rete neurale ricorrente aumentata in stack, e ho anche sentito parlare di "macchine di turing neurali" per questo dominio. tuttavia trovare strategie ottimali è stata la causa fondamentale dello studio dell'apprendimento per rinforzo che è in qualche modo correlato alla tua domanda. ma non è possibile utilizzare reti neurali per escogitare nuovi algoritmi, almeno nel prossimo futuro.


Penso che una strategia ottimale per un gioco adatto sia la stessa di un algoritmo ottimale per il problema corrispondente.
domotorp,

La "strategia" di @domotorp è più un euristico che un algoritmo
riemann77,

-6

Sono un ingegnere dell'automazione della qualità, quindi non rivendicare esperienza nelle reti neurali, ma, tautologicamente, sì, NN può creare autonomamente algoritmi. Gli stessi esseri umani sono NN ad un certo livello e creiamo algoritmi, quindi è logico che i sistemi NN artificiali che creiamo possano essi stessi creare algoritmi.

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.