Da dove è partito
Una regola può servire molti fatti
Voglio scoprire fin dove si può spingere un piccolo modello aperto verso il livello di frontiera modificando direttamente i suoi pesi e innestandovi parti nuove, senza un pesante ciclo di addestramento. L'addestramento è la strada solita. Fai passare miliardi di domande e risposte attraverso un modello e la discesa del gradiente ricava le regole da sola. Ma possiamo anche aprire un modello, leggere cosa contiene mentre è a metà di un problema e cambiarlo. Allora, alcune di quelle regole si possono scrivere a mano?
La mia ipotesi di lavoro è che gran parte del ragionamento funzioni con insiemi di regole, dove una regola serve molti fatti. Il riporto dell'uno è il caso più semplice. Nessuno memorizza ogni somma, perché una sola regola del riporto le copre tutte, in ogni posizione delle cifre. Nei miei appunti l'ho messa così:
Forse una regola nata da un fatto coinciderebbe con la regola di un altro.
Per un piccolo modello i fatti sono costosi da memorizzare, e le regole costano poco. Il primo circuito di moltiplicazione di questo resoconto è costruito per tutti i problemi da 2 × 10 fino a 9 × 99, ed è di 25,270 pesi.
Le stesse conversazioni hanno fatto emergere una seconda idea che si abbina alla prima: un insieme di regole per l'apprendimento, per imparare qualcosa di nuovo, accanto a regole logiche per applicare ciò che sai già. Questo resoconto riguarda il lato logico.
Cosa ha già il modello
Le cifre ci sono
Prima di costruire qualsiasi cosa, abbiamo guardato cosa contiene SmolLM2 nel momento in cui inizia a scrivere una risposta. Una lettura lineare del suo stato nascosto nella posizione della risposta, adattata con i minimi quadrati, estrae le cifre di entrambi i numeri in modo quasi perfetto. Per l'addizione a tre cifre un solo strato non bastava, ma unendo gli strati 14, 20 e 21 si legge ogni cifra al 99% su problemi nuovi.
Addizione a tre cifre. Quota di problemi nuovi in cui una lettura lineare indovina tutte e sei le cifre dei due numeri, leggendo uno strato alla volta, poi gli strati 14, 20 e 21 uniti. Ogni lettura è adattata su 1,500 problemi.
76.6% Miglior strato singolo, strato 21
11.8% Ultimo strato, strato 29
97.9% Strati 14, 20 e 21 uniti, e 99.2% quando quella lettura è adattata su 3,000 problemi
Tutti i 30 strati in tabella
| Strato | Tutte e sei le cifre giuste |
|---|---|
| 0 | 0.0% |
| 1 | 4.3% |
| 2 | 26.0% |
| 3 | 50.1% |
| 4 | 52.2% |
| 5 | 47.1% |
| 6 | 31.4% |
| 7 | 20.4% |
| 8 | 18.8% |
| 9 | 18.2% |
| 10 | 27.1% |
| 11 | 27.9% |
| 12 | 39.1% |
| 13 | 47.2% |
| 14 | 74.8% |
| 15 | 70.1% |
| 16 | 64.0% |
| 17 | 63.0% |
| 18 | 64.2% |
| 19 | 63.5% |
| 20 | 72.9% |
| 21 | 76.6% |
| 22 | 71.5% |
| 23 | 62.9% |
| 24 | 48.8% |
| 25 | 30.5% |
| 26 | 19.0% |
| 27 | 13.9% |
| 28 | 11.7% |
| 29 | 11.8% |
Quindi il modello ha letto la domanda. Quello che non sa fare in modo affidabile è combinare le cifre: il riporto, il prestito, le tabelline. Quel passaggio di combinazione è la parte che forniamo noi.
Come funziona un innesto
Quattro parti, nessuna addestrata con la discesa del gradiente
- LetturaUna lettura lineare per ogni cifra dei due numeri, presa dallo stato nascosto del modello stesso.
- RegoleUna piccola tabella di consultazione per ogni cifra della risposta. La cifra delle unità deriva dalle due cifre delle unità; la cifra delle decine deriva dalle cifre delle decine più il riporto, e così via.
- ScritturaUna spinta verso il token della cifra giusta nell'ultimo strato del modello. Il modello scrive comunque la sua risposta da solo. L'innesto fa solo pendere la bilancia su quale cifra viene dopo.
- InterruttoriDue interruttori adattati decidono quando l'innesto è attivo. Sono adattati per scattare solo mentre il modello scrive la risposta a questo tipo di problema, e per restare spenti su altra matematica, problemi descritti a parole, codice e testo normale.
Le letture e gli interruttori sono adattati con i minimi quadrati in forma chiusa, e le tabelle di regole sono scritte da un programma (a mano, per il primo innesto di moltiplicazione). Il file del modello di base non viene mai toccato. Ogni innesto viene aggiunto accanto.
Come è cresciuto
Da un innesto a una pipeline
- Innesto di neuroniIl primo tentativo ha aggiunto 24 nuovi neuroni all'ultimo strato per fornire il riporto nell'addizione a due cifre. Ha retto sui problemi sigillati, +19.7 punti. Funzionava influenzando leggermente l'aritmetica del modello stesso, quindi il passo successivo era fare direttamente l'aritmetica.
- Circuito cablato a manoPer la moltiplicazione abbiamo scritto a mano le tabelle di regole e le abbiamo alimentate con le letture delle cifre fatte dal modello stesso. La prima versione ha ottenuto l'83.5% sui problemi riservati e sigillati, partendo dal 21.3%. Una seconda versione con interruttori migliori ha ottenuto l'83.1%, e il suo peggior cambiamento su altra matematica è stato di −0.75 punti.
- Regole trovate da un programmaUn programma di ricerca di regole ha ricevuto 340 problemi risolti, sotto forma di cifre e risposte. Per ogni cifra della risposta ha cercato il più piccolo insieme di input che la determina. Ha trovato da solo il riporto dell'addizione, il prestito della sottrazione e la catena di riporti della moltiplicazione. Ha anche scoperto che la cifra delle decine è la regola delle unità riusata sulle cifre delle decine, più un passaggio di riporto: una regola che serve più cifre, che è l'idea da cui tutto è partito. Il suo circuito di moltiplicazione ha ottenuto l'82.7% sul set riservato, a meno di mezzo punto da quello cablato a mano.
- Stessa pipeline, nuove abilitàLa sottrazione e l'addizione a due cifre sono passate per lo stesso script, con impostazioni copiate dalla moltiplicazione e nessuna regolazione. L'addizione a tre cifre ha richiesto tre correzioni, ognuna testata prima di aprire il suo set riservato: la lettura unita da tre strati, un secondo interruttore e una forza della spinta fissata per ogni posizione delle cifre.
Perché ha funzionato
Perché il programma ha potuto trovare le regole
Le regole non sono venute dal modello. Le ha trovate un programma separato, fuori dal modello, da 340 esempi risolti. Il compito del modello è fornire i numeri, che l'innesto legge dal suo stato nascosto. Quattro cose l'hanno reso possibile.
- Spezzare i problemi in cifreCome numeri interi, 7 × 48 = 336 è un fatto tra 720 problemi possibili. Spezzato in cifre, emerge uno schema: l'ultima cifra della risposta dipende solo dal 7 e dall'8. È stata la scelta più importante, e si adatta a SmolLM2, che memorizza ogni cifra come un token a sé.
- Cercare la spiegazione più semplicePer ogni cifra della risposta, il programma cerca il più piccolo insieme di cifre in ingresso che la determina sempre, e tiene una regola solo se vale su ogni esempio. Una regola basata su due cifre ha circa 100 voci possibili, e 340 esempi le riempiono quasi tutte, quindi funziona su problemi nuovi che riusano le stesse coppie. Memorizzare vorrebbe dire basarsi su ogni cifra in ingresso, con molte più combinazioni di quante 340 esempi possano coprire.
- Riusare ciò che aveva già trovatoPer la cifra successiva, riprova la regola delle unità e controlla se un segnale in più spiega ciò che resta. Quel segnale si è rivelato il riporto. Nessuno ha dato la parola al programma; ha trovato la variabile perché i dati ne avevano bisogno. Ripetere il passo per la cifra delle centinaia dà la catena dei riporti.
- Verificare su problemi mai vistiLe regole sono state provate su problemi che non avevano visto, poi compilate in tabelle di consultazione dentro l'innesto.
L'addestramento con gradiente non ha una spinta incorporata verso la spiegazione più semplice, e con pochi esempi ha memorizzato. Nella moltiplicazione, l'innesto a gradiente della stessa dimensione ha ottenuto il 72.7% sui propri problemi di addestramento e il 25.1% sui 140 problemi di sviluppo. Il circuito ha ottenuto il 94.7% sui problemi da cui è stato costruito e l'88.7% sugli stessi problemi di sviluppo.
La scomposizione in cifre l'abbiamo decisa noi, e il programma trova le regole al suo interno. Il prossimo passo verso abilità oltre l'aritmetica è un programma che trovi anche il modo giusto di scomporre un problema.
Risultati
Cinque abilità, su problemi su cui nessuno ha fatto regolazioni
I problemi riservati di ogni abilità sono stati messi da parte prima di costruire qualsiasi cosa, e niente è stato regolato su di essi. Ogni punteggio è su due seed e quattro esecuzioni per problema, con le stesse impostazioni di campionamento per il modello da solo e con l'innesto. Il set della moltiplicazione è stato aperto una volta per la prima versione cablata a mano, poi un'altra volta per le due finali.
Quota di problemi con risposta esattamente giusta. 140 problemi per la moltiplicazione, 500 per gli altri.
- Solo SmolLM2
- Con l'innesto
- Stesso innesto, collegamenti rimescolati
| Abilità | Problemi | Solo SmolLM2 | Con l'innesto | Guadagno, punti (limite inferiore 95%) | Collegamenti rimescolati | Pesi aggiunti |
|---|---|---|---|---|---|---|
| Moltiplicazione, regole cablate a mano7 × 48 | 140 | 21.3% | 83.1% | +61.8 (+56.1) | 2.4% | 25,2700.019% |
| Moltiplicazione, regole trovate da un programma7 × 48 | 140 | 21.3% | 82.7% | +61.3 (+55.5) | 6.3% | 32,5190.024% |
| Sottrazione, due cifre83 − 27 | 500 | 11.3% | 68.3% | +57.1 (+54.0) | 7.8% | 32,4460.024% |
| Addizione, due cifre38 + 47 | 500 | 49.7% | 86.5% | +36.8 (+33.8) | 16.7% | 32,4760.024% |
| Addizione, tre cifre347 + 285 | 500 | 26.1% | 83.7% | +57.6 (+54.6) | 21.4% | 121,1980.090% |
- Nessun peso originale è cambiato e non c'è stato addestramento con gradiente. Ogni innesto aggiunge da 25,270 a 121,198 pesi, dallo 0.019% allo 0.090% del modello. Il limite che ci eravamo dati era lo 0.1%.
- Il controllo con collegamenti rimescolati è lo stesso innesto con i collegamenti mescolati a caso. Ha ottenuto un punteggio pari o inferiore al modello da solo in ogni abilità, dal 2.4% al 21.4%, quindi i pesi in più non fanno nulla senza le regole giuste.
- I tre innesti a due cifre (moltiplicazione, sottrazione e addizione) funzionano anche insieme in un unico modello, 92,496 pesi in tutto. Ognuno ha mantenuto il suo guadagno sui problemi di sviluppo. Il peggior cambiamento su altra matematica è stato di −0.25 punti, e 200 prompt non correlati su 200 hanno dato la stessa risposta di prima.
I guadagni sono appaiati per problema, con un limite inferiore bootstrap unilaterale al 95%. Il controllo degli effetti collaterali copre altri otto set di aritmetica e di problemi descritti a parole, più GSM8K e codice. I prompt non correlati sono 200 prompt di IFEval, con risposte in decodifica greedy. Le regole e le previsioni di ogni esecuzione sono state messe per iscritto prima del suo risultato.
Contro l'addestramento con gradiente
Tre scontri diretti
L'addestramento con gradiente è il modo standard per aggiungere un'abilità, quindi l'abbiamo usato come concorrente. Ogni innesto a gradiente è stato regolato su una griglia di impostazioni prima del suo test.
140 problemi, 2 seed, 4 esecuzioni ciascuno. Il primo circuito cablato a mano contro due innesti addestrati con gradiente e regolati.
Il circuito era avanti di 57.9 e 59.8 punti.
140 problemi di sviluppo, 2 seed, 4 esecuzioni ciascuno. LoRA ha usato la migliore impostazione trovata con una ricerca a griglia.
49.3 punti di vantaggio, con un limite inferiore al 95% di +42.8, usando meno di un quarto dei pesi.
500 problemi di sviluppo, 2 seed, 4 esecuzioni ciascuno. Le impostazioni del circuito sono state copiate dalla moltiplicazione, senza regolazione.
Un pareggio con un innesto a gradiente grande quattro volte tanto, e circa 17 punti di vantaggio su quello da 14 neuroni.
Le regole di sottrazione del circuito sono venute da 340 problemi. Gli innesti a gradiente sono stati addestrati su 1,500, gli stessi 1,500 su cui sono state adattate le letture delle cifre del circuito.
Ancora in corso
Trapianti da modelli più grandi
Stiamo anche cercando di trasferire abilità da modelli più grandi. Nella nostra verifica Qwen3.5-4B ha risolto correttamente 300 su 300 di questi problemi di moltiplicazione, quindi abbiamo provato a tradurre un insieme dei suoi neuroni in SmolLM2. Separatamente, abbiamo mappato un segnale di correzione da Qwen3.5-4B a Qwen3.5-0.8B su problemi di aritmetica scolastici descritti a parole. Nessuno dei due ha ancora funzionato, ed entrambi restano aperti. Finora il modello più grande è stato utile soprattutto come guida per capire dove quello piccolo cede.
Cos'è un innesto
Una calcolatrice alimentata dalla lettura del modello stesso
L'innesto fa i calcoli da sé, partendo da numeri che il modello contiene già. SmolLM2 non impara a moltiplicare. L'innesto funziona sulla forma semplice della domanda ("Quanto fa 347 + 285?"), e gli interruttori lo tengono spento di proposito sui problemi descritti a parole. Per ora tutto questo riguarda un solo modello.
Il metodo si trasferisce a nuove abilità. Le regole vengono trovate da un programma a partire da 340 esempi, compilate in tabelle e inserite con le stesse impostazioni per ogni abilità. Il prossimo passo è il lato dell'apprendimento: far usare a SmolLM2 un fatto che gli viene dato nel prompt.