Nel tutorial MNist di Google che utilizza TensorFlow , viene mostrato un calcolo in cui un passaggio equivale alla moltiplicazione di una matrice per un vettore. Google mostra innanzitutto un'immagine in cui ogni moltiplicazione numerica e aggiunta che andrebbero ad eseguire il calcolo sono scritte per intero. Successivamente, mostrano un'immagine in cui viene invece espressa come una moltiplicazione matriciale, sostenendo che questa versione del calcolo è, o almeno potrebbe essere, più veloce:
Se lo scriviamo come equazioni, otteniamo:
Possiamo "vettorializzare" questa procedura, trasformandola in una moltiplicazione di matrice e un'aggiunta vettoriale. Questo è utile per l'efficienza computazionale. (È anche un modo utile di pensare.)
So che equazioni di questo tipo sono di solito scritte nel formato di moltiplicazione di matrici dai professionisti dell'apprendimento automatico, e ovviamente possono vedere vantaggi nel farlo dal punto di vista della terseness del codice o della comprensione della matematica. Ciò che non capisco è l'affermazione di Google secondo cui la conversione dal modulo longhand al modulo matrice "è utile per l'efficienza computazionale"
Quando, perché e come sarebbe possibile ottenere miglioramenti delle prestazioni nel software esprimendo i calcoli come moltiplicazioni di matrice? Se dovessi calcolare personalmente la moltiplicazione di matrice nella seconda immagine (basata su matrice), come un essere umano, lo farei facendo ciascuno dei calcoli distinti mostrati nella prima immagine (scalare). Per me non sono altro che due notazioni per la stessa sequenza di calcoli. Perché è diverso per il mio computer? Perché un computer dovrebbe essere in grado di eseguire il calcolo della matrice più velocemente di quello scalare?