C'è stato un nuovo sviluppo nel nostro quartiere.
Un “Robo-Truck”, come piace chiamarlo mio figlio, ha costruito la sua nuova casa nella nostra strada.
È un Cyber Truck Tesla e ho provato più volte a spiegare quel nome a mio figlio ma lui insiste a chiamarlo Robo-Truck. Ora, ogni volta che guardo Robo-Truck e sento quel nome, mi ricorda il film Transformers in cui i robot potevano trasformarsi da e verso le auto.
E non è strano che i Transformers come li conosciamo oggi potrebbero benissimo essere sulla buona strada per alimentare questi Robo-Truck? È quasi un momento che chiude il cerchio. Ma dove vado a finire con tutto questo?
Bene, mi sto dirigendo verso la destinazione: Transformers. Non quelli delle auto robotiche ma quelli delle reti neurali. E tu sei invitato!
Cosa sono i Transformer?
I trasformatori sono essenzialmente reti neurali. Reti neurali specializzate nell'apprendimento del contesto dai dati.
Ma ciò che li rende speciali è la presenza di meccanismi che ne eliminano la necessità set di dati etichettati E convoluzione o ricorrenza nella rete.
Quali sono questi meccanismi speciali?
Ci sono molti. Ma i due meccanismi che sono veramente la forza dietro i trasformatori sono la ponderazione dell’attenzione e le reti feed-forward (FFN).
Che cos'è la ponderazione dell'attenzione?
La ponderazione dell'attenzione è una tecnica mediante la quale il modello apprende su quale parte della sequenza in entrata è necessario concentrarsi. Consideralo come l'”Occhio di Sauron” che scansiona ogni cosa in ogni momento e fa luce sulle parti rilevanti.
Curiosità: a quanto pare, i ricercatori avevano quasi chiamato il modello Transformer “Attention-Net”, dato che l'attenzione è una parte cruciale di esso.
Cos'è la FFN?
Nel contesto dei trasformatori, FFN è essenzialmente un percettrone multistrato regolare che agisce su un lotto di vettori di dati indipendenti. Unito all'attenzione, produce la corretta combinazione 'posizione-dimensione'.
Quindi, senza ulteriori indugi, vediamo come ponderazione dell'attenzione E FFN rendere i trasformatori così potenti.
Questa discussione è basata sulla meravigliosa serie AI by Hand del Prof. Tom Yeh Trasformatori . (Tutte le immagini seguenti, se non diversamente specificato, sono del Prof. Tom Yeh dai post di LinkedIn sopra menzionati, che ho modificato con il suo permesso.)
Quindi eccoci qua:
Le idee chiave qui: ponderazione dell'attenzione e rete feed-forward (FFN).
Tenendo presente tutto ciò, supponiamo che ci venga dato:
- 5 caratteristiche di input da un blocco precedente (qui una matrice 3×5, dove X1, X2, X3, X4 e X5 sono le caratteristiche e ciascuna delle tre righe ne indica rispettivamente le caratteristiche.)
(1) Ottenere la matrice del peso dell’attenzione A
Il primo passo del processo è ottenere il file matrice del peso dell’attenzione A. Questa è la parte in cui entra in gioco il meccanismo di auto-attenzione. Ciò che sta cercando di fare è trovare le parti più rilevanti in questa sequenza di input.
Lo facciamo inserendo le funzionalità di input nel modulo query-key (QK). Per semplicità, i dettagli del modulo QK non sono inclusi qui.
(2) Ponderazione dell'attenzione
Una volta che abbiamo il matrice del peso dell'attenzione A (5×5)moltiplichiamo con esso le caratteristiche di input (3×5) per ottenere il caratteristiche ponderate per l'attenzione Z.
La parte importante qui è che le funzionalità qui sono combinate in base alle loro posizioni P1, P2 e P3 cioè orizzontalmente.
Per scomporlo ulteriormente, considera questo calcolo eseguito per riga:
P1 X A1 = Z1 â†' Posizione (1,1) = 11
P1 X A2 = Z2 â†' Posizione (1,2) = 6
P1 X A3 = Z3 â†' Posizione (1,3) = 7
P1 X A4 = Z4 â†' Posizione (1,4) = 7
P1 X A5 = Z5 â†' Posizione (1,5) = 5
.
.
.
P2 X A4 = Z4 â†' Posizione (2,4) = 3
P3
Come esempio:
Sembra un po' noioso all'inizio, ma segui la moltiplicazione per riga e il risultato dovrebbe essere piuttosto semplice.
La cosa interessante è il modo in cui la nostra matrice del peso dell'attenzione UN è organizzato, le nuove funzionalità Z risultano essere le combinazioni di X come sotto :
Z1 = X1 + X2
Z2 = X2 + X3
Z3 = X3 + X4
Z4 = X4 + X5
Z5 = X5 + X1
(Suggerimento: guarda le posizioni degli 0 e degli 1 nella matrice UN).
(3) FFN: Primo strato
Il passo successivo è inserire le funzionalità ponderate per l’attenzione nella rete neurale feed-forward.
Tuttavia, la differenza sta qui combinando i valori tra le dimensioni in contrapposizione alle posizioni nel passaggio precedente. È fatto come di seguito:
Ciò che fa è guardare i dati dalla direzione opposta.
– Nella fase di attenzione, abbiamo combinato i nostri input sulla base delle caratteristiche originali per ottenere nuove funzionalità.
– In questo passaggio FFN, consideriamo le loro caratteristiche, ovvero combiniamo le caratteristiche verticalmente per ottenere la nostra nuova matrice.
Esempio: P1(1,1) * Z1(1,1)
+ P2(1,2) * Z1 (2,1)
+ P3 (1,3) * Z1(3,1) + b(1) = 11, dove b è bias.
Ancora una volta le operazioni di fila in termini di elementi vengono in soccorso. Notare che qui il numero di dimensioni della nuova matrice viene aumentato a 4.
(4) riprendere
Il nostro passaggio preferito: ReLU, dove i valori negativi ottenuti nella matrice precedente vengono restituiti come zero e il valore positivo rimane invariato.
(5) FFN: Secondo strato
Infine lo passiamo attraverso il secondo strato dove la dimensionalità della matrice risultante viene ridotta da 4 a 3.
L'output qui è pronto per essere inviato al blocco successivo (vedi la sua somiglianza con la matrice originale) e l'intero processo viene ripetuto dall'inizio.
Le due cose fondamentali da ricordare qui sono:
- Lo strato di attenzione si combina tra le posizioni (orizzontalmente).
- Il livello feed forward si combina attraverso le dimensioni (verticalmente).
E questa è la salsa segreta dietro la potenza dei trasformatori: la capacità di analizzare dati da diverse direzioni.
Per riassumere le idee di cui sopra, ecco i punti chiave:
- L'architettura del trasformatore può essere percepita come una combinazione dello strato di attenzione e dello strato di feed-forward.
- IL il livello di attenzione combina le caratteristiche per produrre una nuova funzionalità. Ad esempio, pensa di combinare due robot Robo-Truck e Optimus Prime per ottenere un nuovo robot Robtimus Prime.
- IL lo strato feed-forward (FFN) combina le parti o le caratteristiche della caratteristica per produrre nuove parti/caratteristiche. Ad esempio, le ruote del Robo-Truck e il laser ionico di Optimus Prime potrebbero produrre un laser su ruote.
Le reti neurali esistono già da molto tempo. Le reti neurali convoluzionali (CNN) e le reti neurali ricorrenti (RNN) hanno regnato sovrane, ma le cose hanno preso una svolta piuttosto movimentata una volta introdotti i Transformers nel 2017. E da allora, il campo dell'intelligenza artificiale è cresciuto a un ritmo esponenziale: con nuovi modelli, nuovi parametri di riferimento, nuovi apprendimenti che arrivano ogni singolo giorno. E solo il tempo dirà se questa idea fenomenale un giorno aprirà la strada a qualcosa di ancora più grande: un vero “Transformer”.
Ma per ora non sarebbe sbagliato affermare che un'idea può davvero realizzarsi trasformare come viviamo!
PS Se desideri svolgere questo esercizio da solo, ecco il modello vuoto a tua disposizione.
Modello vuoto per l'esercizio manuale
Adesso divertiti e creane uno tuo Roberto il Primo!
Fonte: towardsdatascience.com