Матрица умножение на матрицу: Онлайн калькулятор. Умножение матриц

Игровой ИИ AlphaZero открыл новый способ умножения матриц впервые за 50 лет

3DNews Новости Software Искусственный интеллект, машинное обучен… Игровой ИИ AlphaZero открыл новый способ…

Самое интересное в обзорах

06.10.2022 [17:51], Павел Котов

Разработанная компанией DeepMind система искусственного интеллекта AlphaZero, первоначально предназначенная для настольных игр, предложила более быстрый способ умножения матриц — фундаментальной математической задачи, для которой не находилось новых решений уже более 50 лет.

Источник изображения: technologyreview.com

Задача об умножении матриц лежит в основе самых разных приложений от вывода изображения на экран до моделирования сложной физики, а также обучения самого искусственного интеллекта. Оптимизация решения этой задачи помогла бы упростить выполнение множества компьютерных операций, сократив расходы и обеспечив экономию энергии.

Несмотря на повсеместное распространение задачи, она до сих пор недостаточно изучена.

Матрица — это массив чисел, а умножение матриц — это обычно последовательное умножение чисел в строках одной на числа в столбцах другой. Задача кажется относительно простой, но она существенно усложняется при попытке найти ускоренный метод её решения, и это одна из открытых проблем в информатике. Предполагается, что число доступных способов умножения матриц превосходит количество атомов во вселенной — в некоторых случаях до 10³³ вариантов.

Чтобы «заинтересовать» нейросеть AlphaTensor, новую версию AlphaZero, задачу об умножении матриц превратили в своего рода настольную игру, каждое действие умножения сопоставили игровому ходу, а ИИ получал награду за победу с минимальным числом ходов. В результате AlphaTensor нашёл новый способ умножения матриц 4×4, более эффективный, чем в 1969 году предложил немецкий математик Фолькер Штрассен (Volker Strassen). Базовый способ предполагает решение задачи за 64 шага, у Штрассена это 49 шагов, а AlphaTensor справляется за 47.

В целом ИИ усовершенствовал алгоритмы для матриц более 70 размеров: при размере 9×9 число шагов уменьшилось с 511 до 498, а при 11×11 — с 919 до 896. В ряде других случаев AlphaTensor повторил лучшие из известных алгоритмов.

Получив результаты, инженеры DeepMind решили адаптировать их для ускорителей NVIDIA V100 и Google TPU, которые чаще всего используются в машинном обучении. Выяснилось, что предложенные AlphaTensor методы работают на 10–20 % быстрее традиционных.

Источник:

Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

Материалы по теме

Постоянный URL: https://3dnews.ru/1075386/igrovoy-ii-alphazero-otkril-noviy-sposob-umnogeniya-matrits-vpervie-za-50-let

Рубрики: Новости Software, Искусственный интеллект, машинное обучение, нейросети,

Теги: deepmind, искусственный интеллект, математика

← В прошлое В будущее →

Транспонирование матриц.

Умножение матриц.

К оглавлению

I. Транспонирование матриц

Транспонирование матриц – переход от матрицы  А  к матрице, в которой строки и столбцы поменялись местами с сохранением порядка.

Пример 1. Составить транспонированную матрицу, полученную из А:

Решение: Поменяем местами строки и столбцы, сохраняя порядок:

Примеры для самостоятельного решения:

Составить из исходной матрицы транспонированную матрицу:

II. Умножение матриц

Пример 1. Рассмотрим для начала простейший пример, когда необходимо найти произведение двух матриц

 А  и  В  размером  2´2, если

Решение:

Элементы матрицы  С  находятся по следующему алгоритму:

Элемент матрицы  С, стоящий на первой строке, в первом столбце находится как сумма произведений первой строки матрицы  А на первый столбец матрицы  В.

Элемент матрицы  С, стоящий на первой строке, во втором столбце находится как сумма произведений первой строки матрицы  А на второй столбец матрицы  В.

Элемент матрицы  С, стоящий на второй строке, в первом столбце находится как сумма произведений второй строки матрицы  А на первый столбец матрицы  

В.

Элемент матрицы  С, стоящий на второй строке, во втором столбце находится как сумма произведений второй строки матрицы  А на второй столбец матрицы  В.

Таким образом, мы получили

То есть мы получили, что

Пример 2. Найдем результат произведения двух матриц

Решение:

то есть мы должны получить матрицу размера  3´3.

Пример 3. В предыдущем примере мы рассмотрели случай умножения матрицы  А  на матрицу  В, а в данном примере рассмотрим случай произведения матрицы  В  на  А.

Решение:

Пример 4. Найти произведение двух матриц:

Решение: В первом случае найдем произведение:

Во втором случае найдем произведение:

Пример 5. Вычислить значение многочлена  от матрицы

Решение. В многочлен  подставим вместо  х  матрицу  А, вместо числа 3 используем матрицу  3Е, где  Е – единичная матрица 2-го порядка

Теперь получим окончательный результат

III. Примеры для самостоятельного решения

I. Найти произведение матриц:

II. Найти значение многочлена  от матрицы А

К оглавлению

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.

Умножение матриц

Важно: Мы можем перемножать матрицы, только если количество столбцов в первой матрице совпадает с количеством строк во второй матрице.

Пример 1

а) Умножение матрицы 2 × 3 на матрицу 3 × 4 возможно и дает в качестве ответа матрицу 2 × 4.

b) Умножение матрицы 7 × 1 на матрицу 1 × 2 допустимо; это дает матрицу 7 × 2

c) Матрица 4 × 3, умноженная на матрицу 2 × 3, НЕвозможна.

Как умножить 2 матрицы

Сначала мы используем буквы, чтобы понять, что происходит. После этого мы увидим пример с числами.

В качестве примера возьмем обычную матрицу 2 × 3, умноженную на матрицу 3 × 2.

`[(a,b,c),(d,e,f)][(u,v),(w,x),(y,z)]`

Ответом будет матрица 2 × 2.

Умножаем и складываем элементы следующим образом. Мы работаем через 1-й строки первой матрицы, умножая на 1-й столбец второй матрицы, элемент за элементом. Мы добавить полученных продуктов. Наш ответ занимает позицию a 11 (вверху слева) матрицы ответов.

Проделываем аналогичный процесс для 1-й строки первой матрицы и 2-го столбца второй матрицы. Результат помещается в позицию a 12 .

Теперь о 2-й

-й строке первой матрицы и 1-м -м столбце второй матрицы. Результат помещается в позицию а 21 .

Наконец, делаем 2-ю строку первой матрицы и 2-й столбец второй матрицы. Результат помещается в позицию a 22 .

Таким образом, результат умножения двух наших матриц выглядит следующим образом:

`[(a,b,c),(d,e,f)][(u,v),(w,x),(y,z)]` `=[(au+bw+cy,av +bx+cz),(du+ew+fy,dv+ex+fz)]`

Теперь давайте рассмотрим числовой пример.

Пользователи телефона

ПРИМЕЧАНИЕ. Если вы разговариваете по телефону, вы можете прокручивать любые широкие матрицы на этой странице вправо или влево, чтобы увидеть все выражение.

Пример 2

Умножить:

`((0,-1,2),(4,11,2))((3,-1),(1,2),(6,1))`

Ответить

Это 2×3 умножить на 3×2, что даст нам 2×2 отвечать.

`((0,-1,2),(4,11,2)) ((3,-1),(1,2),(6,1))`

`=((0xx3+ — 1xx1 + 2xx6,0xx-1+ -1xx2 + 2xx1), (4xx3+11xx1+2xx6,4xx -1 + 11xx2 + 2xx1))`

` = ((0-1+12,0-2+2), (12+11+12,-4+22+2))`

` = ((11,0),(35,20)) `

Наш ответ — матрица 2×2.

Умножение матриц 2 × 2

Процесс одинаков для матрицы любого размера. Мы умножаем на строк первой матрицы и на столбцов второй матрицы, элемент за элементом. Затем мы добавляем продукты:

`((a,b),(c,d))((e,f),(g,h))` `=((ae+bg,af+bh),(ce+dg,cf+dh ))`

В этом случае мы умножаем матрицу 2 × 2 на матрицу 2 × 2 и в результате получаем матрицу 2 × 2.

Пример 3

Умножить:

`((8,9),(5,-1))((-2,3),(4,0))`

Ответить

` ((8,9),(5,-1))((-2,3),(4,0)) `

`= ((8 xx -2+9xx4,8xx3+9xx0),( 5xx-2+ -1xx4,5xx3 + -1xx0))`

` = ((-16+36,24+0),(-10+ -4,15 + 0)) `

` = ((20 ,24),(-14,15)) `

Матрицы и системы одновременных линейных уравнений

Теперь мы видим, как написать систему линейных уравнений, используя матричное умножение.

Пример 4

Система уравнений

−3 х + y = 1

6 х — 3 у = -4

можно записать как:

`((-3,1),(6,-3))((x),(y))=((1),(-4))`

Матрицы идеально подходят для компьютерного решения задач, потому что компьютеры легко формируют массивы . Мы можем опустить алгебраические символы. Компьютеру для решения системы требуются только первая и последняя матрицы, как мы увидим в разделе «Матрицы и линейные уравнения».

Примечание 1 — Обозначение

Уход с записью умножение матриц.

Следующие выражения имеют различных значения:

AB это умножение матриц

A × B является произведением перекрестного , которое возвращает вектор

A * B используется в компьютерной записи, но не на бумаге

А B Произведение точек , которое возвращает скаляр .

[Дополнительную информацию о векторных и скалярных величинах см. в главе «Вектор».]

Примечание 2. Коммутативность умножения матриц

`AB = BA`?

Давайте посмотрим, так ли это на примере.

Пример 5

Если

`А=((0,-1,2),(4,11,2))`

и

`В=((3,-1),(1,2),(6,1))`

найти AB и ВА.

Ответить

Мы выполнили AB выше, и ответ был:

`AB = ((0,-1,2),(4,11,2)) ((3,-1),(1,2), (6,1))`

` = ( (11,0),(35,20) )`

Теперь BA равно (3 × 2)(2 × 3), что даст 3 × 3:

`BA= ((3,-1),(1,2),(6,1))((0,-1,2),(4,11,2))`

`= ((0 -4,-3-11,6-2),(0+8,-1+22,2+4),(0+4,-6+11,12+2))`

` = (( -4,-14,4),(8,21,6),(4,5,14)) `

Итак, в этом случае AB НЕ равно BA.

На самом деле, для большинства матриц нельзя изменить порядок умножения и получить тот же результат.

В общем случае при перемножении матриц перестановочный закон не выполняется, т.е. AB BA . Есть два общих исключения из этого:

  • Матрица идентичности: IA = AI = A .
  • обратная матрица: A -1 А = АА -1 = I.

В следующем разделе мы узнаем, как найти обратную матрицу.

Пример 6. Умножение на матрицу идентичности

Учитывая, что

`А=((-3,1,6),(3,-1,0),(4,2,5))`

найти AI .

Ответить

`AI = ((-3,1,6),(3,-1,0),(4,2,5)) ((1,0,0),(0,1,0),(0 ,0,1))`

`=((-3+0+0,0+1+0,0+0+6),(3+0+0,0+ -1+0,0+0 +0),(4+0+0,0+2+0,0+0+5))`

`=((-3,1,6),(3,-1,0),(4,2,5))`

`=A`

Мы видим, что умножение на единичную матрицу не изменить значение исходной матрицы.

То есть

АИ = А

Упражнения

1. Если возможно, найдите BA и AB .

`А=((-2,1,7),(3,-1,0),(0,2,-1))`

`В=(4\\-1\\\5)`

Ответить

`BA=(4\ \ -1\ \ \ 5)((-2,1,7),(3,-1,0),(0,2,-1))`

`=(-8+(-3)+0\ \ \ 4+1+10\ \ \ 28+0+(-5))`

`=(-11\ \ 15\ \ 23)`

AB невозможно. (3 × 3) × (1 × 3).

2. Определить, если B = A -1 , учитывая:

`А=((3,-4),(5,-7))`

`В=((7,4),(5,3))`

Ответить

Если B = A -1 , то `AB = I`.

`AB=((3,-4),(5,-7))((7,4),(5,3))`

`=((21-20,12-12),( 35-35,20-21))`

`=((1,0),(0,-1))`

` !=I`

Итак, B НЕ является обратным A.

3. При изучении движения электронов, одна из спиновых матриц Паули равна

`s=((0,-j),(j,0))`

где

`j=sqrt(-1)`

Покажите, что с 2 = I.

[Если вы никогда раньше не видели j , перейдите в раздел, посвященный комплексным числам].

92+0))`

`= ((1,0),(0,1))`

`=I`

4. Оцените следующее матричное умножение, которое используется при управлении движением роботизированного механизма .

`( (cos\ 60° ,-sin\ 60° ,0),(sin\ 60°, cos\ 60°,0),(0,0,1))((2),(4),( 0))`

Ответить

`( (cos\ 60° ,-sin\ 60° ,0),(sin\ 60°, cos\ 60°,0),(0,0,1))((2),(4),( 0))`

`=((2(0,5)-4(0,866)+0),(2(0,866)+4(0,5)+0),(0+0+0))`

`= ((-2.464),(3.732),(0))`

Интерпретация этого заключается в том, что рука робота перемещается из позиции (2, 4, 0) в позицию (-2,46, 3,73, 0). То есть это движется в x-y плоскость, но ее высота остается равной z = 0 . Матрица 3 × 3, содержащая sin и Значения cos говорят ему, на сколько градусов двигаться.

Интерактивы Matrix Multiplication

  • Другие примеры умножения матриц
  • Интерактивные операции с матрицами

Умножение матриц в R — GeeksforGeeks

Умножение матриц — самая полезная операция над матрицами. В настоящее время он широко используется в таких областях, как теория сетей, преобразование координат и во многих других областях. Матрица в R может быть создана с использованием matrix() , и эта функция принимает входной вектор, nrow, ncol, byrow, dimnames в качестве аргументов.
Создание матрицы  
Матрицу можно создать с помощью функции matrix().
 

Python3

m < - matrix( 1 : 8 , nrow = 2 )

print ( м)

Вывод:  
 

 [1] [2] [3] [4]
[1,] 1 3 5 7
[2,] 2 4 6 8 

 

Умножение матриц

Оператор умножения * используется для умножения матрицы на скалярное или поэлементное умножение двух матриц.
Умножение на скаляр
Если вы умножаете матрицу на скалярное значение, то каждый элемент матрицы будет умножен на этот скаляр.
Example:  
 

Python3

m < - matrix( 1 : 8 , nrow = 2 )

m < - 2 * m  

print (m)

Output:  
 

      [1] [2] [3 ] [4]
[1,] 2 6 10 14
[2,] 4 8 12 16 

В приведенном выше коде скаляр умножается на каждый элемент исходной матрицы. Вот как происходит процесс умножения: 
 

 2*1=2 2*3=6 2*5=10 2*7=14
2*2=4 2*4=8 2*6=12 2*8=16 

Умножение между матрицами  
Когда матрица умножается на другую матрицу, происходит поэлементное умножение двух матриц. Все соответствующие элементы обеих матриц будут перемножены при условии, что обе матрицы будут одной размерности.
Example:  
 

Python3

 

m < - matrix( 1 : 8 , nrow = 2 )

n < - matrix( 8 : 15 , nrow = 2 )

 

print (m * n)

Вывод:  
 

 [1], [2]
[1,] 8 30 60 98
[2,] 18 44 78 120 

Вот как происходит процесс умножения:

 1*8=8 3*10=30 5*12=60 7*14=98
2*9=18 4*11=44 6*13=78 8*15=120 

Умножение на вектор
Если матрица умножается на вектор, то вектор будет преобразован в матрицу строк или столбцов, чтобы получить два аргументы созвучны.
Example:  
 

Python3

 

m < - matrix( 1 : 8 , nrow = 2 )  

VEC < - 1 : 2

Печать (VEC

.9

Вывод:  
 

 [1] [2] [3] [4]
[1,] 1 3 5 7
[2,] 4 8 12 16 

Вот как происходит процесс умножения:

1*1=1 1*3=3 1*5=5 1*7=7
2*2=4 2*4=8 2*6=12 2*8=16 

Умножение с использованием оператора %*%
Оператор %*% используется для умножения матриц, удовлетворяющих условию, что число столбцов в первой матрице равно количеству строк во второй.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *