Dans le didacticiel MNist de Google utilisant TensorFlow , un calcul est présenté dans lequel une étape équivaut à multiplier une matrice par un vecteur. Google montre d'abord une image dans laquelle chaque multiplication et addition numériques qui seraient nécessaires pour effectuer le calcul sont écrites en entier. Ensuite, ils montrent une image dans laquelle elle est plutôt exprimée comme une multiplication matricielle, affirmant que cette version du calcul est, ou du moins pourrait être, plus rapide:
Si nous écrivons cela sous forme d'équations, nous obtenons:
Nous pouvons «vectoriser» cette procédure, la transformant en une multiplication matricielle et une addition vectorielle. Ceci est utile pour l'efficacité du calcul. (C'est aussi une façon utile de penser.)
Je sais que des équations comme celle-ci sont généralement écrites dans le format de multiplication matricielle par les praticiens de l'apprentissage automatique, et peuvent bien sûr voir les avantages de le faire du point de vue de la concision du code ou de la compréhension des mathématiques. Ce que je ne comprends pas, c'est l'affirmation de Google selon laquelle la conversion de la forme longue à la forme matricielle "est utile pour l'efficacité du calcul"
Quand, pourquoi et comment serait-il possible d'améliorer les performances des logiciels en exprimant les calculs sous forme de multiplications matricielles? Si je devais calculer moi-même la multiplication matricielle dans la deuxième image (basée sur une matrice), en tant qu'humain, je le ferais en effectuant chacun des calculs distincts montrés dans la première image (scalaire). Pour moi, ce ne sont que deux notations pour la même séquence de calculs. Pourquoi est-ce différent pour mon ordinateur? Pourquoi un ordinateur pourrait-il effectuer le calcul matriciel plus rapidement que le calcul scalaire?