Un'unica rete
Un'unica rete per il dipinto e l'intera conversazione
Una rete reale, costruita qui e addestrata qui: le patch del dipinto, la profondità suggerita dal colore e ogni lettera di questa conversazione, in un unico spazio condiviso. Nulla è pre-addestrato.
Il dipinto, zona per zona
La rete osserva il dipinto in piccole zone, ognuna con la propria luce, colore e posizione, e apprende quelle parole. Gli stessi pesi leggono le lettere del filo.
- Passaggi di addestramento
- 0
- Errore immagine
- —
- Errore lettere
- —
- Errore di profondità
- —
- Tasselli che trovano le loro parole
- —
- Tasselli di colore
- 0
- Parole nel suo spazio
- 0
- Lettere apprese
- 0
- Caratteri conosciuti
- 0
Le parole che apprende sono quelle che il colore può insegnare: quanto è luminosa una zona, di che colore è, dove si trova. Il compito del testo apprende l'ordine delle lettere, non il significato. Nulla qui è pre-addestrato; i gradienti vengono calcolati in questa scheda.
Addestramento in tempo reale
Si avvia automaticamente all'apertura della pagina e apprende proprio qui, in questa scheda. Ogni cento passi registra i valori misurati.
In attesa della costruzione della rete…
L'intera app, in Python e JAX
Questa pagina e il programma sottostante sono un'unica rete. Il programma è l'applicazione completa: una finestra GTK4, i gradienti JAX, il dipinto, il thread, la profondità che predice e lo spazio condiviso. Copialo o salvalo, quindi eseguilo sulla tua macchina.
- Macchie di colore
- —
- Parole che impara
- —
- Lettere che legge
- —
- File da tenere insieme
- net_gtk.py
Cosa fa la finestra
- Addestra per 300 o 2.000 step, o interrompi a metà; l'apprendimento avviene in un thread, quindi la finestra rimane attiva.
- Clicca su qualsiasi patch del dipinto e l'app ti dirà le parole che ha per quella patch.
- Chiedi a parole — oro caldo, blu scuro — e l'app illuminerà le patch su cui cade la domanda.
- Inserisci alcune lettere e l'app elencherà le lettere che si aspetta dopo, con le percentuali.
- Incolla il tuo testo e premi 'Impara questo invece': le nuove lettere otterranno nuove righe nella stessa tabella, senza eliminare ciò che era già noto.
- Due disegni sotto il dipinto: la profondità prevista e l'unico spazio dove i punti sono pittura e i quadrati sono parole.
- Salva i pesi in net_weights.json e caricali nuovamente la prossima volta.
Come eseguirlo
Una cartella, un file e un dipinto chiamato painting.jpg se ne possiedi uno. Su Linux, in quella cartella:
-
Installa i pacchetti Python
python3 -m pip install jax numpy pillow -
Installa GTK4 e i suoi binding Python
sudo apt install python3-gi gir1.2-gtk-4.0 -
Apri la finestra
python3 net_gtk.py
Su Windows la via più breve è MSYS2: pacman -S mingw-w64-x86_64-python-gobject mingw-w64-x86_64-gtk4, quindi python -m pip install jax numpy pillow, quindi python net_gtk.py nello stesso terminale MSYS2.
Su macOS: brew install pygobject3 gtk4, quindi python3 -m pip install jax numpy pillow, quindi python3 net_gtk.py.
Nessun display? python3 net_gtk.py --selftest si addestra nel terminale e stampa gli stessi numeri.
Misurato eseguendo questo file in un terminale con JAX, su questo dipinto e questo thread: 400 step → 67% delle patch trovano le proprie parole (errore immagine 0,68), 2.000 step → 95% (0,53), 5.000 step → 97% (0,45). L'errore di profondità termina a 0,0003 e l'errore delle lettere scende da 3,05 a 2,90.
Un browser non può eseguire Python, quindi questa scheda mostra il file invece della finestra — la stessa rete è in esecuzione in tempo reale sopra. Le parole che impara sono quelle che il dipinto può insegnare: questo dipinto non contiene blu, quindi una domanda sul blu atterra su macchie d'oro. La testa della lettera conosce l'ordine delle lettere, non il significato.
Un compilatore per il codice Python e JAX sopra
Il riquadro contiene il forward pass della rete. Il compilatore lo legge, lo controlla e lo scrive due volte: Python per JAX e JavaScript che viene eseguito in questa scheda. Un unico albero, due back-end.
- Token
- —
- Nodi nell'albero
- —
- Funzioni
- —
Cosa computa
La verifica confronta questi numeri con lo stesso programma eseguito in numpy e JAX con gli stessi pesi iniziali — misurati prima che questa scheda esistesse, non stimati.
Cosa permette il linguaggio
- def name(a, b): con un corpo rientrato, name = ..., e return ...
- Numeri, nomi, parentesi, meno unario e + - * / @ per il prodotto tra matrici.
- .T per la trasposta e le chiamate tanh, sqrt, exp, log, sum, mean, maximum.
- Qualsiasi altra cosa ferma il compilatore indicando riga e colonna invece di fare supposizioni.
Questo è un vero compilatore per un linguaggio ridotto, non un runtime Python: niente cicli, niente classi, niente import. Il forward pass della rete ci sta dentro, motivo per cui lo stesso testo può diventare JAX sulla tua macchina e JavaScript in questa scheda.
Occhi virtuali: vede solo pixel
Un occhio puntato verso un monitor: riceve l'immagine e nient'altro — nessuna pagina, nessun dato, nessuna rete. Solo da quei pixel trova bordi, angoli e come ogni punto scivola mentre l'occhio si sposta lateralmente, e da ciò ricostruisce dove si trova ogni cosa nello spazio.
- Frame visti
- 0
- Angoli
- 0
- Tracciato
- 0
- Movimento mediano
- —
- Profondità trovata
- —
- Punti nello spazio
- 0
- Un frame
- —
La profondità è geometria reale, ma solo fino alla dimensione del passo dell'occhio, e solo dove l'immagine ha una texture — il colore piatto non offre appigli. Vedere dove si trova un muro non significa sapere che è un muro, e nulla qui inventa un mondo: la stanza sopra sono i pixel, misurati.
La tua idea, e ciò di cui avrebbe ancora bisogno
- Gli occhi sul monitor sono un'interfaccia reale: un modello che legge lo schermo come farebbe una persona non ha bisogno di un plugin per ogni programma — tutto ciò che è visibile è già un input.
- Da due frame di un occhio in movimento si ottiene la geometria, che è esattamente ciò con cui un modello del mondo deve concordare; questa scheda lo fa davvero.
- Un mondo generato in tempo reale necessita anche di un modello che inventi ciò che nessuno ha visto, lo mantenga coerente mentre ci si gira e funzioni in millisecondi — questo non è in questa scheda, e una pagina non può addestrarlo.
- Il limite onesto: questo occhio recupera dove si trovano le cose, non cosa significano. La velocità del vedere non è comprensione, e l'una è molto più semplice dell'altra.
Immagine: scansione di pubblico dominio de L'Ultima Cena di Leonardo da Vinci, Wikimedia Commons.
