На предыдущей странице: матрица меняет пространство.
Произведение возникает из композиции функций
Пусть сначала применяется B, затем A:
z=Bx,y=Az=A(Bx).
Хотим заменить два последовательных оператора одним C, чтобы y=Cx. Подставим
zr=j=1∑nBrjxj
в формулу для yi:
yi=r=1∑kAirzr=r=1∑kAirj=1∑nBrjxj=j=1∑n(r=1∑kAirBrj)xj.
Следовательно,
A∈Rm×k,B∈Rk×n,C=AB∈Rm×n,Cij=r=1∑kAirBrj.
Внутренняя размерность k должна совпасть, потому что она перечисляет компоненты промежуточного вектора z. Внешние размеры m,n остаются размерами итогового оператора.
Row-column trace без скрытого шага
Возьмём
A=[2011],B=[01−10].
Каждая ячейка AB является dot строки A и столбца B:
AB=[2⋅0+1⋅10⋅0+1⋅12⋅(−1)+1⋅00⋅(−1)+1⋅0]=[11−20].
Например, элемент (0,1) равен −2, а не произведению A01B01=−1. Покомпонентное произведение Адамара и matmul являются разными операциями даже для одинаковых shapes.
Порядок операторов читается справа налево
В выражении (AB)x первым действует B. При x=[1,2]T:
Bx=[−2,1]T,A(Bx)=[−3,1]T.
Обратный порядок даёт
BA=[02−11],BAx=[−2,4]T.
Значит, AB=BA. Геометрически «сначала повернуть, затем выполнить shear/scale» обычно не равно «сначала деформировать, затем повернуть».
Ассоциативность не означает коммутативность
При совместимых shapes
A(BC)=(AB)C.
Обе стороны описывают одну композицию трёх функций в одном порядке. Скобки меняют только то, какое промежуточное произведение вычисляется первым. Для размеров [m,k][k,n][n,p] стоимость может заметно отличаться:
cost((AB)C)∼mkn+mnp,cost(A(BC))∼knp+mkp.
В точной арифметике результаты равны. В floating-point изменение порядка суммирования может дать небольшое расхождение округления. Это не отменяет алгебраическую ассоциативность, но требует допуска при численном сравнении.
Identity удовлетворяет AI=IA=A. Нулевая матрица подходящего shape уничтожает результат. Транспонирование обращает порядок:
(AB)T=BTAT.
Последнее равенство можно проверить по индексам и оно станет важным для backward pass.
Прямой алгоритм произведения [m,k]×[k,n] требует mkn умножений. Параллельное устройство меняет организацию вычислений и движение данных, но не формулу ячейки. В лаборатории выбирайте одну ячейку trace и проверяйте два произведения до сравнения полных AB и BA.