Perché l'apprendimento automatico non può riconoscere i numeri primi?


13

Supponiamo di avere una rappresentazione vettoriale di qualsiasi numero intero di magnitudine n, V_n

Questo vettore è l'input di un algoritmo di apprendimento automatico.

Prima domanda: per quale tipo di rappresentazione è possibile apprendere la primalità / la composizione di n usando una rete neurale o qualche altra mappatura ML da vettore a bit. Questo è puramente teorico: la rete neurale potrebbe avere dimensioni illimitate.

Ignoriamo le rappresentazioni che sono già correlate al test di primalità come: l'elenco separato da null di fattori di n, o l'esistenza di un testimone di composizione come in Miller Rabin. Concentriamoci invece su rappresentazioni in radicali diversi o rappresentazioni come vettori di coefficienti di polinomi (possibilmente multivariati). O altri esotici come sono ipotizzati.

Seconda domanda: per quali, se del caso, i tipi di algoritmo ML saranno impossibili da imparare indipendentemente dalle specifiche del vettore di rappresentazione? Ancora una volta, lasciamo fuori le rappresentazioni "vietate dalla banalità" di cui sono riportati esempi sopra.

L'output dell'algoritmo di machine learning è un singolo bit, 0 per prime, 1 per composito.

Il titolo di questa domanda riflette la mia valutazione secondo cui il consenso per la domanda 1 è "sconosciuto" e il consenso per la domanda 2 è "probabilmente la maggior parte degli algoritmi ML". Lo sto chiedendo perché non ne so più di così e spero che qualcuno possa indicare la strada.

La motivazione principale, se esiste, di questa domanda è: esiste un limite "teorico dell'informazione" alla struttura dell'insieme di numeri primi che può essere catturato in una rete neurale di una dimensione particolare? Dato che non sono esperto in questo tipo di terminologia, vorrei riformulare questa idea alcune volte e vedere se ottengo un'approssimazione di Monte-Carlo al concetto: qual è la complessità algoritmica dell'insieme di numeri primi? Il fatto che i numeri primi siano diottantanici ricorsivamente enumerabili (e in grado di soddisfare una particolare grande equazione diottanica ) può essere usato per catturare la stessa struttura in una rete neurale con gli input e gli output sopra descritti.


12
Dal punto di vista della teoria, il tuo problema non è ben definito. Quali sono gli input dell'algoritmo di machine learning? Come vengono generati? Che cosa conosce l'algoritmo prima del suo compito di apprendimento?
Lev Reyzin

3
Non penso che questa sia una buona domanda nella sua forma attuale per questo sito.
Kaveh,

4
Può. Ma nell'apprendimento automatico vogliamo ridurre al minimo l'errore nel test dei set di dati. Ora, se ti alleni su potresti finire per imparare f ( n ) = n 2 - n + 41 e che funziona perfettamente con numeri inferiori a 41 . Ma dopo ciò le sue prestazioni non vanno bene. Le persone hanno provato questo (manualmente :-)) e finora senza molto successo . In ML proviamo a trovare schemi ma cosa succede se non ci sono schemi? [1,20]f(n)=n2n+4141
Pratik Deoghare l'

1
Sembra che tu stia chiedendo se esiste un algoritmo che fornisce una funzione da sequenze finite di numeri naturali a predicati sui numeri naturali, in grado di produrre correttamente un predicato di primalità data una sequenza di numeri primi, soggetti a vincoli aggiuntivi sull'algoritmo. Articolare ulteriormente la tua restrizione non è banale, se possibile. Se provi a renderlo preciso, potresti vedere.
Vijay D,

1
Sff(n)nnS

Risposte:


-8

questa è una vecchia domanda / problema con molte, molte connessioni profonde nella teoria dei numeri, nella matematica, nel TCS e in particolare nel Teorema automatizzato. [5]

la vecchia domanda quasi antica è "esiste una formula per calcolare i numeri primi"

la risposta è, sì, in un certo senso, ci sono vari algoritmi per calcolarlo.

la funzione zeta di Riemann può essere riorientata come un "algoritmo" per trovare numeri primi.

mi sembra possibile che un approccio GA, algoritmo genetico possa riuscire su questo problema un giorno con una configurazione ingegnosa, vale a dire che le GA sono la tecnologia nota più vicina che ha più possibilità di successo. [6] [7] è il problema di trovare un algoritmo da una serie finita di esempi, vale a dire l'apprendimento automatico, che è molto simile all'induzione matematica. tuttavia, finora non sembrano esserci molte ricerche sull'applicazione delle GA nella teoria dei numeri.

il più vicino a questo nella letteratura esistente sembra essere, ad esempio, [8] che discute dello sviluppo della congettura dei primi gemelli in modo automatizzato, cioè "creazione automatica di congetture".

un altro approccio è un programma che ha un ampio set di tabelle di funzioni standard, insieme ad una sofisticata logica di conversione, per riconoscere sequenze di interi standard. questa è una nuova funzione integrata in Mathematica chiamata findsequence[3]

è anche collegato a un campo relativamente nuovo chiamato "matematica sperimentale" [9,10] o quella che è anche chiamata ricerca "empirica" ​​nel TCS.

un altro punto fondamentale da sottolineare qui è che la sequenza di numeri primi non è "liscia", algoritmi di apprendimento automatico altamente irregolari, caotici, frattali e standard sono storicamente basati sull'ottimizzazione numerica e sulla minimizzazione dell'errore (es. discesa del gradiente), e non lo fanno bene nel trovare risposte esatte a problemi discreti. ma ancora una volta gli GA possono avere successo e si è dimostrato che abbiano successo in questo settore / regime.

[1] esiste un eqn matematico per l'ennesimo primo, math.se

[2] formula per numeri primi , wikipedia

[3] funzione wolfram findsequence

[4] funzione ziem riemann

[5] principali successi della dimostrazione di teoremi automatizzati

[6] applicazioni di algoritmi genetici nel mondo reale

[7] applicando algoritmi genetici alla prova automatica di Wang

[8] Creazione automatica di congetture nella teoria dei numeri usando risorse umane, lontra e acero colton

[9] Esistono applicazioni della matematica sperimentale nel TCS?

[10] Un elenco di lettura sugli algoritmi sperimentali


1
questa è un'ottima risposta Non sono sicuro che il sito sia d'accordo, ma era quello che stavo cercando. Un sacco di nuove direzioni per esplorare e connessioni antiche. Grazie, lo apprezzo molto. In particolare GA. Inoltre, leggi tra le righe e generalizzi dall'apprendimento automatico a "formular for primes". Questo è molto utile, grazie.
Cris Stringfellow,

11
@Cris, non c'è quasi nulla in questa risposta che riguarda l'apprendimento automatico. Dal tuo commento sulla risposta di Aryeh mi sembra che tu non abbia familiarità con l'apprendimento automatico (posso chiederti dove hai visto una macchina imparare un algoritmo come il test di primalità da un elenco di esempi?)
Kaveh,

6
GA può "imparare" un algoritmo di test della primalità nello stesso senso in cui un giorno la proverbiale scimmia infinita scriverà le opere complete di Shakespeare
Sasho Nikolov,

@sasho, non è stato ancora dimostrato ma (sì, imho) probabilmente non è dovuto a limiti nella tecnologia ma piuttosto alla mancanza di tentativi. koza ha dimostrato che gli GA "risolvono / apprendono" algoritmi complessi per i videogiochi, ad esempio pacman (tramite alberi lis di primitivi), e anche la costruzione di circuiti utilizzando componenti secondari. non è difficile almeno quanto trovare i numeri primi? la vera domanda è: quali tipi di primitivi avrebbe il sistema e quanto primitivi possono essere e trovare ancora la soluzione?
vzn

19

La domanda è, a mio avviso, abbastanza vaga e comporta alcuni fraintendimenti, quindi questa risposta cerca solo di fornire il vocabolario giusto e indicarti la giusta direzione.

Esistono due campi dell'informatica che studiano direttamente tali problemi. Inferenza induttiva e teoria dell'apprendimento computazionale . I due campi sono strettamente correlati e la distinzione è sociale ed estetica, piuttosto che formale.

AP(A)AAFP(A)

f:NA

iNf(i)=T, for some T in F.

Quindi, una presentazione di dati positivi è un elenco del concetto di destinazione, spesso con alcune condizioni di equità aggiuntive inserite. Puoi anche chiedere una presentazione che etichetta le parole a seconda che siano o meno nella lingua. Ancora una volta, è possibile aggiungere ulteriori condizioni per garantire l'equità e la copertura di tutte le parole.

RepMRepL(M)

p:NRepL(p(i))f(j)jikjkL(p(j))=L(p(j+1))

Vorrei sottolineare che questa è solo una formalizzazione specifica di un modello di apprendimento specifico. Ma questo è il punto zero prima che tu possa iniziare a porre e studiare le domande che ti interessano. Il modello di apprendimento può essere arricchito consentendo l'interazione tra lo studente e l'insegnante. Piuttosto che famiglie arbitrarie di lingue, possiamo considerare lingue molto specifiche o persino rappresentazioni specifiche (come le funzioni booleane monotone). C'è una differenza tra ciò che puoi imparare in ciascun modello e la complessità dell'apprendimento. Ecco un esempio di un risultato di impossibilità fondamentale.

Gold [1967] Nessuna famiglia di lingue che contiene tutte le lingue finite e almeno una lingua superfinita è passivamente apprendibile solo da dati positivi.

Bisogna stare molto attenti nell'interpretare questo risultato. Ad esempio, Dana Angluin lo dimostrò negli anni '80

k

k

Angluin [1987] Le lingue normali sono apprendibili da un insegnante che risponde alle domande di equivalenza e fornisce controesempi. L'algoritmo è polinomiale nell'insieme degli stati del DFA minimo e della lunghezza del controesempio massimo.

Questo è un risultato abbastanza forte e positivo e recentemente ha trovato diverse applicazioni. Tuttavia, come sempre i dettagli sono importanti, come già suggerisce il titolo del documento di seguito.

Il problema DFA minimo coerente non può essere approssimato all'interno e polinomiale , Pitt e Warmuth, 1989.

Ora ti starai chiedendo, in che modo questo è rilevante per la tua domanda? La mia risposta è che lo spazio di progettazione per una definizione matematica del tuo problema è molto ampio e il punto specifico che scegli in questo spazio influenzerà il tipo di risposte che otterrai. Quanto sopra non intende essere un sondaggio completo su come formalizzare il problema di apprendimento. Ha solo lo scopo di dimostrare la direzione che potresti voler investigare. Tutti i riferimenti e i risultati che cito sono estremamente datati e il campo ha fatto molto da allora. Esistono libri di testo di base che puoi consultare per ottenere lo sfondo sufficiente per formulare la tua domanda in modo preciso e determinare se la risposta che cerchi già esiste.


È fantastico @Vijay D, grazie per quello.
Cris Stringfellow,

È una domanda mal formata. La mia risposta (e commenti) qui sotto mostra perché. ML è in grado di riconoscere i numeri primi, ma non in senso pratico, richiederebbe troppo tempo. Tale è la natura di quella particolare bestia.
Dominic Cerisano,

12

Il successo di un algoritmo di apprendimento dipende in modo critico dalla rappresentazione. Come si presenta l'input all'algoritmo? In un caso estremo, supponi di presentare i numeri come sequenze di fattori primi - in questo caso, l'apprendimento è piuttosto banale. In un altro estremo, considera di rappresentare i numeri come stringhe binarie. Tutti gli algoritmi di apprendimento standard che conosco fallirebbero qui. Eccone uno che funzionerebbe: trova la più piccola macchina di Turing che accetta tutti gli esempi positivi e rifiuta tutti quelli negativi. [Esercizio: dimostra che si tratta di uno studente universale.] Un problema è che il compito non è calcolabile da Turing. Per mettere le cose in prospettiva, può voi imparare a riconoscere primalità basato solo sulla rappresentazione binaria?


Posso imparare a riconoscere la primalità basata sul rappresentante binario se "imparo", per esempio, l'algoritmo di Miller Rabin. Ma voglio andare oltre cose del genere e vedere se c'è qualcos'altro. Perché l'attività menzionata non è calcolabile su Turing?
Cris Stringfellow,

6
Non capisco come si possa parlare di un problema di apprendimento qui senza fare riferimento, ad esempio, alla classe di funzioni target.
Lev Reyzin

1
Lev ha ragione, ovviamente - ma ho pensato che una discussione sulle classi di funzioni andasse oltre lo scopo della domanda ... :)
Aryeh

-1

Questo problema fa parte della ricerca moderna: dati dati di input e output, trova l'algoritmo più semplice che produce output dall'input. Le reti RNN sono Turing complete, quindi teoricamente con SGD senza fine puoi finire in RNN che è equivalente a questo codice:

bool isPrime(int n, int d) {
    if(n<2)
        return 0;
    if(d == 1)
        return true;
    else 
    {
        if(n % d == 0) 
            return false;
        else
            return isPrime(n, d - 1);
    }
}

su questo set di dati: 0 => 0, 1 => 0, 2 => 1, 3 => 1, 4 => 0, 5 => 1, ... ecc

Il problema è che non abbiamo una teoria praticamente affidabile sulla convergenza SGD né alcuna stima del tempo richiesto per la convergenza o la profondità della rete neurale. Ma le ultime ricerche mostrano che problemi simili possono essere risolti:

https://en.wikipedia.org/wiki/Neural_Turing_machine

https://www.microsoft.com/en-us/research/wp-content/uploads/2017/10/curr_opin_sys_biol_17.pdf

https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/cav13.pdf

usa google scholar per cercare parole chiave ...


-3

L'apprendimento automatico è soggetto alle leggi della complessità informatica.

Il problema della fattorizzazione primaria è nella classe di complessità NP, forse anche NP-difficile (non provato).

Ecco perché rilevare i numeri primi è tra i problemi più difficili nell'apprendimento automatico e potrebbe non essere affatto possibile con questo approccio.

I computer quantistici (QC) possono farlo in tempi polinomiali, ma quello di Shor è il determinismo della forza bruta, non l'apprendimento automatico.

Forse un algoritmo di apprendimento QC basato su Shor è un approccio. Sto davvero solo sbattendo insieme le pietre suggerendo che.


1
PRIMES è in P, quindi non direi che "rilevare i numeri primi" è tra i problemi più difficili in ML - o in qualsiasi altra branca dell'informatica, del resto. "Si tratta di rappresentare" colpisce molto più vicino a casa, come spiegato nella mia risposta e nei commenti sottostanti.
Aryeh,

Mi scusi, P ≠ NP! PRIMES è co-NP, e per risolverlo in P richiederebbe attualmente un algoritmo galattico del tutto inadatto in qualsiasi paradigma di calcolo - in particolare l'apprendimento automatico, indipendentemente da come lo rappresenti. In ogni senso pratico è NP, e possibilmente NP-difficile, grazie.
Dominic Cerisano,

1
@Birkensocks sembra che tu abbia combinato i test Primality con Factoring. "PRIMES is in P" è in realtà il nome dell'articolo che per primo ha fornito un algoritmo a tempo polinomiale per verificare la primalità, en.wikipedia.org/wiki/AKS_primality_test . Si noti inoltre che il factoring è in NP e co-NP, quindi è molto improbabile che sia NP-difficile, vedi ad esempio blog.computationalcomplexity.org/2002/09/…
Rahul Savani il

Sì, penso di aver già detto che ...
Dominic Cerisano il
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.