No tutorial MNist do Google usando o TensorFlow , é exibido um cálculo no qual uma etapa é equivalente à multiplicação de uma matriz por um vetor. O Google primeiro mostra uma imagem na qual cada multiplicação e adição numérica que seria aplicada ao cálculo é gravada na íntegra. Em seguida, eles mostram uma imagem na qual é expressa como uma multiplicação de matrizes, alegando que esta versão do cálculo é, ou pelo menos pode ser, mais rápida:
Se escrevermos isso como equações, obtemos:
Podemos "vetorizar" esse procedimento, transformando-o em multiplicação de matrizes e adição de vetores. Isso é útil para eficiência computacional. (Também é uma maneira útil de pensar.)
Eu sei que equações como essa geralmente são escritas no formato de multiplicação de matrizes por profissionais de aprendizado de máquina e, é claro, podem ver vantagens em fazê-lo do ponto de vista da dispersão do código ou da compreensão da matemática. O que não entendo é a afirmação do Google de que a conversão do formato longhand para o formato matricial "é útil para a eficiência computacional"
Quando, por que e como seria possível obter melhorias de desempenho no software, expressando cálculos como multiplicações de matrizes? Se eu fosse calcular a multiplicação de matrizes na segunda imagem (baseada em matriz), como humano, faria isso sequencialmente fazendo cada um dos cálculos distintos mostrados na primeira imagem (escalar). Para mim, eles não passam de duas notações para a mesma sequência de cálculos. Por que é diferente para o meu computador? Por que um computador seria capaz de executar o cálculo da matriz mais rapidamente que o escalar?