У математиці добуток Адамара[1] (також відомий як добуток Шура[2] або покомпонентний добуток) — це бінарна операція над двома матрицями однакової розмірності, у результаті котрої створюється нова матриця де кожен елемент ij це добуток елементів ij початкових матриць. Операція названа на честь, або французького математика Жака Адамара, або німецького математика Ісая Шура.

Добуток Адамара оперує з двома матрицями однакової розмірності і створює нову матрицю ідентичної розмірності.

Добуток Адамара це асоціативна та дистрибутивна операція, і на відміну від добутку матриць також комутативна операція.

ВизначенняРедагувати

Для двох матриць   котрі мають однакову розмірність   добуток адамара позначається як   і визначений як покомпонентний добуток двох матриць:

 

Для двох матриць, котрі мають різні розмірності, добуток Адамара не визначений.

ПрикладРедагувати

Приклад використання добутку Адамара для двох матриць A та B розмірністю 2x3

 

ВластивостіРедагувати

Добуток Адамара це комутативна, асоціативна та дистрибутивна операція,

 
 
 

Змішані добуткиРедагувати

 , де   — добуток Кронекера
 , де   — торцевий добуток[3].
 , де   — стовпцевий добуток Хатрі-Рао.

ВикористанняРедагувати

Добуток Адамара використовується у алгоритмах стиснення з втратами, наприклад, JPEG.

У програмних пакетах MATLAB та GNU Octave, дана операція використовується як стандартна операція множення масивів та позначається символом * .[4]
Операція добутку над векторними типами даних у GPGPU технологіях програмування також реалізована за принципом добутку Адамара. Інші примітивні математичні операції над векторними типами даних реалізовані як покомпонентні операції над їх компонентами.

Блокова версіяРедагувати

 
Проникаючий торцевий добуток

Проникаючий торцевий добутокРедагувати

Цей тип матричної операції спирається на добуток Адамара і дозволяє поелементно перемножити   матрицю   на довільну кількість блоків тієї ж розмірності  , що утворюють блокову матрицю рядків або стовпців  [5]:

 .

Наприклад, для

 

отримаємо:

 .

Основні властивості:

 ;
 ,

де   — символ торцевого добутку матриць.

 , де   — вектор.

Даний вид матричного добутку був запропонований в 1998 р. Слюсарем В. І. для опису відгуків цифрової антенної решітки з неідентичними приймальними каналами[5]. Крім того, цей добуток дозволяє формалізувати процес функціонування згорткової нейромережі. Наприклад, якщо розглянути вказану матрицю   як масив пікселів зображення на вході нейромережного алгоритму, то блоки матриці   будуть відповідати різним наборам коефіцієнтів для формування згорткового шару в кількох паралельных каналах обробки зображення нейромережею.

Операція проникаючого торцевого добутку вектора і матриці реалізована в бібліотеці машинного навчання TensorFlow за допомогою оператора «tf.multiply»[6].

Див. такожРедагувати

ПосиланняРедагувати

  1. Million, Elizabeth. The Hadamard Product. Процитовано 2 January 2012. 
  2. Davis, Chandler. «The norm of the Schur product operation.» Numerische Mathematik 4.1 (1962): 343—344.
  3. Slyusar, V. I. (December 27, 1996). End products in matrices in radar applications.. Radioelectronics and Communications Systems.– 1998, Vol. 41; Number 3: 50–53. 
  4. Arithmetic Operators + - * / \ ^ ' -. MATLAB documentation. MathWorks. Архів оригіналу за 24 квітень 2012. Процитовано 2 January 2012. 
  5. а б Slyusar, V. I. (March 13, 1998). A Family of Face Products of Matrices and its properties. Cybernetics and Systems Analysis C/C of Kibernetika I Sistemnyi Analiz. 1999. 35 (3): 379–384. doi:10.1007/BF02733426. 
  6. Tensorflow, how to multiply a 2D tensor (matrix) by corresponding elements in a 1D vector. — 2017.

ДжерелаРедагувати

  • Хорн Р. Матричный анализ: Пер. с англ. / Р. Хорн, Ч. Джонсон. — М.: Мир, 1989.– 655 с.