È possibile addestrare la rete neurale per risolvere le equazioni matematiche?


24

Sono consapevole che le reti neurali probabilmente non sono progettate per farlo, tuttavia chiedendo ipoteticamente, è possibile addestrare la rete neurale profonda (o simile) per risolvere le equazioni matematiche?

Quindi dati i 3 input: 1 ° numero, segno dell'operatore rappresentato dal numero (1 - +, 2 - -, 3 - /, 4 - *e così via) e dal 2 ° numero, quindi dopo l'allenamento la rete dovrebbe darmi i risultati validi.

Esempio 1 ( 2+2):

  • Ingresso 1: 2; Ingresso 2: 1( +); Ingresso 3: 2; Uscita prevista:4
  • Ingresso 1: 10; Ingresso 2: 2( -); Ingresso 3: 10; Uscita prevista:0
  • Ingresso 1: 5; Ingresso 2: 4( *); Ingresso 3: 5; Uscita prevista:25
  • e così

Quanto sopra può essere esteso ad esempi più sofisticati.

È possibile? In tal caso, che tipo di rete può imparare / raggiungere questo obiettivo?



1
Questo potrebbe essere rilevante - github.com/deepmind/mathematics_dataset
GaneshTata

Risposte:


21

Sì, è stato fatto!

Tuttavia, le applicazioni non sostituiscono calcolatrici o simili. Il laboratorio a cui sono associato sviluppa modelli di reti neurali di ragionamento equazionale per comprendere meglio come gli umani potrebbero risolvere questi problemi. Questa è una parte del campo noto come cognizione matematica . Sfortunatamente, il nostro sito web non è terribilmente informativo, ma ecco un link ad un esempio di tale lavoro.

A parte questo, i recenti lavori sull'estensione delle reti neurali per includere archivi di memoria esterni (ad es. Neural Turing Machines) tendono a usare la soluzione dei problemi matematici come una buona prova del concetto. Questo perché molti problemi aritmetici implicano lunghe procedure con risultati intermedi memorizzati. Vedi le sezioni di questo documento sull'aggiunta binaria lunga e sulla moltiplicazione.


per me non solo reti neurali ma architetture neurali con memoria esterna. Architetture come NTM e DNC possono utilizzare per risolvere algoritmi come il percorso più breve perché hanno la capacità di eseguire il processo iterativo tenendo traccia di ciò che è stato fatto (nessuna dimenticanza catastrofica). Ma per me usare l'apprendimento solo serviziato è semplicemente sbagliato, come menzionato nella seconda risposta.
Shamane Siriwardhana,

Il primo link è morto, hai la sostituzione?
Kenorb,

Entrambi i collegamenti hanno funzionato per me, che eccellente documento!
Zakk Diaz,

8

Non proprio.

Le reti neurali sono utili per determinare relazioni non lineari tra input quando ci sono variabili nascoste. Negli esempi precedenti le relazioni sono lineari e non ci sono variabili nascoste. Ma anche se non fossero lineari, un design ANN tradizionale non sarebbe adatto a raggiungere questo obiettivo.

Costruendo attentamente i livelli e supervisionando strettamente la formazione, potresti ottenere una rete per produrre costantemente l'output 4.01, diciamo, per gli input: 2, 1 (+) e 2, ma questo non è solo sbagliato, è intrinsecamente inaffidabile applicazione della tecnologia.


5

1) è possibile! In realtà, è un esempio del popolare framework di apprendimento profondo Keras. Dai un'occhiata a questo link per vedere il codice sorgente .

2) Questo esempio particolare utilizza una rete neurale ricorrente (RNN) per elaborare il problema come una sequenza di caratteri, producendo una sequenza di caratteri che formano la risposta. Nota che questo approccio è ovviamente diverso da come gli umani tendono a pensare a risolvere semplici problemi di addizione e probabilmente non è come vorresti che un computer risolvesse un simile problema. Principalmente questo è un esempio di apprendimento da sequenza a sequenza usando Keras. Quando si gestiscono input sequenziali o di serie temporali, gli RNN sono una scelta popolare.


1

Sì, sembra che ora sia possibile ottenere di più dall'esempio che hai fornito in questo documento che descrive una soluzione DL a un problema considerevolmente più difficile: generare il codice sorgente per un programma descritto in linguaggio naturale .

Entrambi possono essere descritti come problemi di regressione (ovvero l'obiettivo è minimizzare alcune funzioni di perdita sul set di validazione), ma lo spazio di ricerca nel caso del linguaggio naturale è molto più grande.


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.