W samouczku Google MNist z użyciem TensorFlow pokazano obliczenia, w których jeden krok jest równoważny pomnożeniu macierzy przez wektor. Google najpierw pokazuje obraz, w którym każde mnożenie i dodawanie liczbowe, które byłoby potrzebne do wykonania obliczenia, jest zapisywane w całości. Następnie pokazują obraz, na którym jest on wyrażony jako mnożenie macierzy, twierdząc, że ta wersja obliczeń jest, a przynajmniej może być, szybsza:
Jeśli wypiszemy to jako równania, otrzymamy:
Możemy „wektoryzować” tę procedurę, zamieniając ją w mnożenie macierzy i dodawanie wektora. Jest to pomocne dla wydajności obliczeniowej. (Jest to również przydatny sposób myślenia).
Wiem, że takie równania są zwykle zapisywane w formacie mnożenia macierzy przez praktyków uczenia maszynowego, i oczywiście widzę korzyści z robienia tego z punktu widzenia zwięzłości kodu lub zrozumienia matematyki. To, czego nie rozumiem, to twierdzenie Google, że konwersja z formy długiej do formy macierzowej „jest pomocna dla wydajności obliczeniowej”
Kiedy, dlaczego i jak można uzyskać poprawę wydajności oprogramowania, wyrażając obliczenia jako mnożenia macierzy? Gdybym sam obliczył mnożenie macierzy na drugim obrazie (opartym na macierzy), jako człowiek, zrobiłbym to, wykonując kolejno każde z odrębnych obliczeń pokazanych na pierwszym obrazie (skalarnym). Dla mnie są to tylko dwie notacje dla tej samej sekwencji obliczeń. Dlaczego na moim komputerze jest inaczej? Dlaczego komputer miałby wykonywać obliczenia macierzy szybciej niż obliczenia skalarne?