В математике произведение Адамара (также известное как поэлементное произведение , поэлементное произведение [1] : гл. 5 или произведение Шура [2] ) — это бинарная операция , которая берет две матрицы одинакового размера и возвращает матрицу умноженных соответствующих элементов. Эту операцию можно рассматривать как «наивное матричное умножение», и она отличается от матричного произведения . Она приписывается французскому математику Жаку Адамару или немецкому математику Иссаю Шуру и названа в их честь .
Для двух матриц A и B одинакового размера m × n произведение Адамара (иногда [4] [5] [6] ) представляет собой матрицу того же размера, что и операнды, с элементами, заданными формулой [3]
Для матриц разных размерностей ( m × n и p × q , где m ≠ p или n ≠ q ) произведение Адамара не определено.
Например, произведение Адамара для двух произвольных матриц 2 × 3 равно:
Характеристики
Произведение Адамара коммутативно (при работе с коммутативным кольцом), ассоциативно и дистрибутивно по сложению. То есть, если A , B и C — матрицы одинакового размера, а k — скаляр:
Единичная матрица при умножении Адамара двух матриц m × n — это матрица m × n , все элементы которой равны 1. Это отличается от единичной матрицы при обычном умножении матриц, где только элементы главной диагонали равны 1. Более того, матрица имеет обратную при умножении Адамара тогда и только тогда, когда ни один из элементов не равен нулю. [7]
Для векторов x и y и соответствующих диагональных матриц D x и D y с этими векторами в качестве главных диагоналей выполняется следующее тождество: [1] : 479 где x * обозначает сопряженное транспонирование x . В частности, используя векторы из единиц, это показывает, что сумма всех элементов в произведении Адамара является следом AB T , где верхний индекс T обозначает транспонирование матрицы , то есть . Связанный результат для квадратов A и B заключается в том, что суммы строк их произведения Адамара являются диагональными элементами AB T : [8] Аналогично, Более того, произведение матрицы Адамара на вектор может быть выражено как: где — вектор, образованный из диагоналей матрицы M .
Произведение Адамара является главной подматрицей произведения Кронекера . [9] [10] [11]
Произведение Адамара удовлетворяет неравенству ранга
Произведение Адамара двух векторов и есть то же самое, что матричное умножение соответствующей диагональной матрицы одного вектора на другой вектор:
Оператор преобразования вектора в диагональную матрицу может быть выражен с помощью произведения Адамара следующим образом: где — постоянный вектор с элементами , а — единичная матрица .
Произведение Адамара двух положительно-полуопределенных матриц является положительно-полуопределенным. [3] [8] Это известно как теорема о произведении Шура, [7] в честь русского математика Исая Шура . Для двух положительно-полуопределенных матриц A и B также известно, что определитель их произведения Адамара больше или равен произведению их соответствующих определителей: [8]
Аналогичные операции
В математической литературе встречаются и другие операции Адамара, [15], а именно:корень Адамара иСтепень Адамара (что по сути одно и то же из-за дробных индексов), определенная для матрицы такой, что:
Для
и для
TheОбратное уравнение Адамара читается так:[15]
АДеление Адамара определяется как:[16][17]
В языках программирования
Большинство научных или численных языков программирования включают в себя произведение Адамара под разными названиями.
В MATLAB произведение Адамара выражается как «умножение точек»: a .* bили вызов функции: times(a, b). [18] Он также имеет аналогичные точечные операторы, которые включают, например, операторы a .^ bи a ./ b. [19] Благодаря этому механизму можно зарезервировать *и ^для умножения матриц и матричных экспонент соответственно.
Язык программирования Julia имеет похожий синтаксис с MATLAB, где умножение Адамара называется трансляционным умножением и также обозначается как a .* b, а другие операторы аналогично определяются поэлементно, например, степени Адамара используют a .^ b. [20] Но в отличие от MATLAB, в Julia этот «точечный» синтаксис обобщен с помощью универсального трансляционного оператора. , который может применять любую функцию поэлементно. Это включает как бинарные операторы (такие как вышеупомянутые умножение и возведение в степень, а также любой другой бинарный оператор, такой как произведение Кронекера), так и унарные операторы, такие как !и √. Таким образом, любая функция в префиксной нотацииf может быть применена как f.(x). [21]
В Python нет встроенной поддержки массивов, что приводит к непоследовательным/конфликтующим обозначениям. Числовая библиотека NumPy интерпретирует a*bили a.multiply(b)как произведение Адамара и использует a@bили a.matmul(b)для произведения матриц. С символической библиотекой SymPy умножение объектов массива как a*bили a@bдаст произведение матриц. Произведение Адамара можно получить с помощью вызова метода a.multiply_elementwise(b). [22] Некоторые пакеты Python включают поддержку степеней Адамара с использованием таких методов, как np.power(a, b), или метода Pandasa.pow(b) .
В C++ библиотека Eigen предоставляет cwiseProductфункцию-член для класса Matrix ( ), тогда как библиотека Armadillo использует оператор для создания компактных выражений ( ; — матричное произведение).a.cwiseProduct(b)%a % ba * b
В GAUSS и HP Prime эта операция известна как умножение массивов.
В Fortran , R , APL , J и Wolfram Language ( Mathematica ) оператор умножения *или ×применяет произведение Адамара, тогда как произведение матриц записывается с использованием matmul, %*%, +.×, +/ .*и ., соответственно. Пакет R matrixcalc вводит функцию hadamard.prod()для произведения Адамара числовых матриц или векторов. [23]
Приложения
Произведение Адамара появляется в алгоритмах сжатия с потерями, таких как JPEG . Шаг декодирования включает в себя произведение «запись за записью», другими словами, произведение Адамара. [ необходима цитата ]
В обработке изображений оператор Адамара может использоваться для усиления, подавления или маскирования областей изображения. Одна матрица представляет исходное изображение, другая действует как весовая или маскирующая матрица.
Он используется в литературе по машинному обучению , например, для описания архитектуры рекуррентных нейронных сетей как GRU или LSTM . [24]
Он также используется для изучения статистических свойств случайных векторов и матриц. [25] [26]
Проникающий продукт для лица
Согласно определению В. Слюсара проникающее гранное произведение матрицы размера p × g и n -мерной матрицы ( n > 1) с блоками размера p × g ( ) представляет собой матрицу размера вида: [27]
^ "линейная алгебра - Что означает точка в круге?". Mathematics Stack Exchange .
^ "Элементная (или точечная) запись операций?". Mathematics Stack Exchange .
^ ab Million, Elizabeth. "The Adamard Product" (PDF) . Получено 2 января 2012 г.
^ abc Styan, George PH (1973), «Продукты Адамара и многомерный статистический анализ», Линейная алгебра и ее приложения , 6 : 217–240, doi : 10.1016/0024-3795(73)90023-2, hdl : 10338.dmlcz/102190
^ Лю, Шуанчжэ; Тренклер, Гётц (2008). «Адамард, Хатри-Рао, Кронекер и другие матричные продукты». Международный журнал информации и системных наук . 4 (1): 160–177.
^ Лю, Шуанчжэ; Лейва, Виктор; Чжуан, Дэн; Ма, Тифенг; Фигероа-Суньига, Хорхе И. (2022). «Матричное дифференциальное исчисление с приложениями в многомерной линейной модели и ее диагностика». Журнал многомерного анализа . 188 : 104849. doi : 10.1016/j.jmva.2021.104849 . S2CID 239598156.
^ Лю, Шуанчжэ; Тренклер, Гетц; Колло, Тыну; фон Розен, Дитрих; Баксалари, Оскар Мария (2023). «Профессор Хайнц Нойдекер и матричное дифференциальное исчисление». Статистические документы . doi : 10.1007/s00362-023-01499-w.
^ Хиай, Фумио; Линь, Минхуа (февраль 2017 г.). «О неравенстве собственных значений, включающем произведение Адамара». Линейная алгебра и ее приложения . 515 : 313–320. doi : 10.1016/j.laa.2016.11.017 .
^ Слюсарь, В.И. (1998). «Конечные продукты в матрицах в радиолокационных приложениях» (PDF) . Радиоэлектроника и системы связи . 41 (3): 50–53.
^ ab Reams, Robert (1999). "Обратные Адамара, квадратные корни и произведения почти полуопределенных матриц". Линейная алгебра и ее приложения . 288 : 35–43. doi : 10.1016/S0024-3795(98)10162-3 .
^ Вецштейн, Гордон; Ланман, Дуглас; Хирш, Мэтью; Раскар, Рамеш. «Дополнительный материал: Тензорные дисплеи: компрессионный синтез светового поля с использованием многослойных дисплеев с направленной подсветкой» (PDF) . MIT Media Lab .
^ Cyganek, Богуслав (2013). Обнаружение и распознавание объектов в цифровых изображениях: теория и практика. John Wiley & Sons. стр. 109. ISBN9781118618363.
^ "Функция MATLAB умножения".
^ «Операции с массивами и матрицами».
^ "Векторизованные "точечные" операторы" . Получено 31 января 2024 г. .
^ "Синтаксис точек для векторизации функций" . Получено 31 января 2024 г.
^ «Общие матрицы — документация SymPy 1.9».
^ "Умножение матриц". Введение в R. Проект R для статистических вычислений. 16 мая 2013 г. Получено 24 августа 2013 г.
^ Сак, Хашим; Сениор, Эндрю; Бофе, Франсуаза (2014-02-05). «Рекуррентные архитектуры нейронных сетей на основе долговременной краткосрочной памяти для распознавания речи с большим словарным запасом». arXiv : 1402.1128 [cs.NE].
^ Нойдекер, Хайнц; Лю, Шуанчжэ; Поласек, Вольфганг (1995). «Произведение Адамара и некоторые его применения в статистике». Статистика . 26 (4): 365–373. doi :10.1080/02331889508802503.
^ Нойдекер, Хайнц; Лю, Шуанчжэ (2001). «Некоторые статистические свойства произведений Адамара случайных матриц». Статистические статьи . 42 (4): 475–487. doi :10.1007/s003620100074. S2CID 121385730.
^ abc Слюсарь, В.И. (13 марта 1998 г.). "Семейство гранных произведений матриц и его свойства" (PDF) . Кибернетика и системный анализ C/C журнала "Кибернетика и системный анализ". 1999 г. 35 (3): 379–384. doi :10.1007/BF02733426. S2CID 119661450.
^ Ха Д., Дай А. М., Ле К. В. (2017). «Гиперсети». Международная конференция по представлениям обучения (ICLR) 2017. – Тулон, 2017. : Страница 6. arXiv : 1609.09106 .{{cite journal}}: CS1 maint: multiple names: authors list (link)