Обзор концепций линейной алгебры для машинного обучения
Введение
Линейная алгебра за счет использования матриц и векторов вместе с библиотеками линейной алгебры (такими как NumPy в Python) позволяет нам выполнять большое количество вычислений более эффективным с точки зрения вычислений способом при использовании более простого кода. Знание хотя бы числовых операций линейной алгебры имеет решающее значение для дальнейшего понимания того, что происходит в наших моделях машинного обучения. Хотя геометрическая интуиция, лежащая в основе линейной алгебры, может быть невероятно полезной при визуализации операций, которые мы обсудим ниже, понимание большинства алгоритмов машинного обучения не требуется.
В этом руководстве мы обсудим скаляры, векторы, матрицы, сложение и вычитание матриц, скалярное умножение и деление, умножение матрицы на вектор, умножение матрицы на матрицу, единичные матрицы, обращение матриц и транспонирование матриц. Кроме того, мы очень кратко обсудим некоторые геометрические интуиции, лежащие в основе некоторых из этих числовых операций.
Матрицы
Матрица - это прямоугольный массив чисел. Эти числа заключены в квадратные скобки. Другими словами, матрица - это двумерный массив, состоящий из строк и столбцов. Числа, содержащиеся в матрице, или элементы матрицы, могут быть данными из задачи машинного обучения, например значениями признаков.
Поскольку матрицы могут быть любым количеством строк и столбцов, мы должны указать размер этой матрицы, то есть количество строк x количество столбцов.
Например, если матрица A имеет 4 строки и 2 столбца, то это матрица 4x2. Другой способ сказать это: матрица A является элементом множества R ^ (4x2), которое представляет собой набор всех матриц размерности 4x2.
Индексирование матрицы
Матрица дает нам возможность быстро систематизировать, индексировать и получать доступ к большому количеству данных. Таким образом, чтобы получить доступ к данным, мы можем добавить индекс или индекс к матрице, которая указывает на определенный элемент или запись внутри матрицы. Например, для матрицы A ее записи или элементы могут быть проиндексированы следующим образом:
Aij = «i, j запись» в i-й строке j-го столбца.
Векторы
Вектор - это частный случай матрицы. Векторы - это матрица, которая имеет только 1 столбец, поэтому это матрица размера nx1, также известная как вектор-столбец. Таким образом, мы можем думать о матрице как о группе векторов-столбцов или векторов-строк. Позже мы увидим, что если мы переместим вектор-столбец, мы получим вектор-строку или вектор только с одной строкой (матрица 1xn).
Если у нас есть вектор с четырьмя элементами / элементами, то мы можем сказать, что это матрица 4x1 или 4-мерный вектор. Таким образом, это элемент множества R ^ (4x1), или R⁴, поскольку он вектор.
Индексирование вектора
yi = ith элемент
Несколько примечаний:
Векторы могут быть индексированы как 1, так и 0. Другими словами, первая запись в векторе может быть либо 0-м элементом, либо 1-м элементом. В большинстве языков программирования, таких как python, векторы будут индексироваться 0.
По соглашению мы обозначаем матрицы заглавной буквой, например матрица A выше, а векторы - строчной буквой, например вектор y выше. Если вы знакомы с использованием scikit-learn в python, помните, что мы обычно называем наши функции и метки как функции X и метки y, поскольку функции будут находиться в матрице, а метки - в векторе столбца.
Матрица-матрица сложение и вычитание
Чтобы добавить две матрицы, мы берем элементы с одним индексом из каждой матрицы и складываем их по одному. Это означает, что для добавления матрицы должны быть одного размера. Результирующая матрица также будет той же размерности, причем каждый из ее элементов представляет собой сумму соответствующих элементов из добавленных матриц.
Если матрица A плюс матрица B равна матрице C: Cij = Aij + Bij
Для вычитания матрицы-матрицы процесс такой же. Мы вычитаем элементы второй матрицы из соответствующих элементов в первой матрице. Или мы можем думать об этом как о сложении матрицы с матрицей, когда все элементы второй матрицы умножаются на -1 перед добавлением матриц (см. Скалярное умножение ниже).
Скалярное умножение и деление
Скаляр - это просто действительное число. Мы можем умножать матрицы на скалярное число. Это приведет к «масштабированию» матрицы (или вектора), отсюда и название скаляр, поскольку мы умножаем скаляр на каждое число в матрице.
Примечание. Не имеет значения, в каком порядке мы записываем скаляр и матрицу. Результат будет таким же.
При скалярном умножении мы просто берем скаляр или действительное число и умножаем его на каждый элемент в нашей матрице. Таким образом, наш результат - матрица того же размера, что и матрица, которую мы умножили на скаляр.
При делении матрицы на скаляр мы можем думать об этом как о умножении этой матрицы на обратную величину от скаляра.
Умножение матрицы на вектор
При умножении матрицы и вектора мы умножаем векторы на каждую строку в матрице. Результатом будет вектор с тем же количеством строк, что и матрица.
Сначала мы начинаем с умножения чисел в векторе на соответствующие числа в первой строке матрицы и складываем эти произведения. Эта сумма будет первым элементом нашего результирующего вектора. Затем мы умножаем числа в векторе на числа во второй строке матрицы, складываем эти продукты, и сумма будет вторым элементом в результирующем векторе. И так далее ... Таким образом, в нашем результирующем векторе будет столько же элементов, сколько строк в нашей матрице.
Если мы возьмем матрицу A с размерностью mxn, умножим ее на вектор x, который является матрицей nx1 (или n-мерным вектором), результатом будет вектор y, то есть m-мерный вектор (или размерная матрица mx1 ). Чтобы получить yi, умножьте i-ю строку A на элементы вектора x и сложите их.
Геометрическая интуиция умножения матрицы на вектор:
Давайте интерпретируем умножение матрицы на вектор геометрически. Представьте, что у нас есть вектор или линия в пространстве, которую мы можем визуализировать в системе координат. Затем представьте, что матрица изменяет или преобразует это пространство на основе информации внутри матрицы. В линейной алгебре эти преобразования являются линейными преобразованиями, поскольку они следуют нескольким правилам. Умножение матрицы на вектор в основном берет исходный вектор и выводит новый вектор на основе этого нового пространства, определяемого матрицей.
Таким образом, матрицу можно рассматривать как функцию (пространство преобразования), вектор, который мы умножаем на эту матрицу, можно рассматривать как начальный вектор (или входные данные), а результирующий вектор (измененный вектор, который является результатом этого линейное преобразование пространства), является выходом.
Матрица-матричное умножение
Умножение двух матриц можно рассматривать как отдельные операции умножения матрицы на вектор. Другими словами, мы удалим векторы-столбцы из второй матрицы и произведем умножение векторов-столбцов этих векторов-столбцов на первую матрицу. Затем мы объединяем эти результирующие векторы-столбцы в матрицу, которая и будет результатом. Таким образом, чтобы перемножить две матрицы вместе, количество столбцов первой матрицы должно равняться количеству строк во второй матрице.
Если у нас есть матрица A размерности mxn и умножить ее на матрицу B размерности nxo, то результирующая матрица будет иметь размер mxo:
I-й столбец матрицы C получается умножением A на i-й столбец матрицы B (для i = 1,2,…, o). При умножении матрицы на вектор значение o было 1, так как вектор имеет только 1 столбец.
Геометрическая интуиция матричного умножения:
Мы можем думать об умножении матрицы на матрицу как о двух (или более) линейных преобразованиях пространства, применяемых одно за другим. Эти линейные преобразования применяются в определенном порядке: справа налево. Другими словами, если у нас есть умножение матрицы на матрицу AxBxC, сначала происходит линейное преобразование, закодированное в матрице C, затем в матрице B, а затем в матрице A, аналогично композиции функций: h (g (f (x)) ). Результирующая матрица этого умножения матрицы на матрицу известна как составная матрица, поскольку применение линейного преобразования, закодированного в этой составной матрице, приведет к тому же чистому линейному преобразованию, что и применение линейных преобразований C, затем B, затем A.
Свойства умножения матриц
Чтобы объяснить каждое из этих свойств, мы сначала свяжем его с действительными числами (скалярами).
Коммутативный
Для действительных чисел умножение коммутативно. Значение порядка не имеет значения. Другими словами, 2 х 5 = 5 х 2.
Напротив, матричное умножение, как правило, не коммутативно. Таким образом, в общем случае для матриц A и B: A x B не равно B x A.
Примечание. AB = BA используется только в том случае, если это матрица, умноженная на ее единичную матрицу, что будет обсуждаться позже.
Если вы прочитали геометрическую интуицию умножения матрицы на матрицу выше, тогда это должно иметь смысл. Если мы сначала применим линейное преобразование B, а затем A, результирующее чистое линейное преобразование пространства не будет таким же, как сначала применение A, а затем B.
Ассоциативный
Для действительных чисел умножение ассоциативно. Другими словами, мы можем умножать независимо от того, как числа сгруппированы. Например, если у нас есть 2x5x4, мы можем сначала умножить 2 и 5, затем умножить результат на 4, или мы можем сначала умножить 5 и 4, а затем умножить результат на 2. В любом случае ответ будет одинаковым. .
(2x5) x4 = 2x (5x4)
Умножение матриц также ассоциативно. Другими словами, если у нас есть матрицы A, B и C, то:
Ах (BxC) = (AxB) xC
Опять же, используя геометрическую интуицию умножения матрицы на матрицу, это должно иметь смысл. Поскольку в обоих случаях мы применяем линейные преобразования справа налево.
Распределительный
Как для действительных чисел, так и для матриц умножение является распределительным.Другими словами, для действительных чисел: 2 (5 + 4) = 2 * 5 + 2 * 4. А для матриц A, B и C: A (B + C) = A * B + A * C.
Единичная матрица
Когда мы имеем дело с действительными числами, 1 - это тождество умножения. Другими словами, для любого действительного числа z число 1, умноженное на z, будет равно z умноженное на 1, что будет равно z. Таким образом, свойство идентичности 1 означает, что любое действительное число z, умноженное на 1, равно z, что позволяет z сохранить свою идентичность.
We also have identity matrices. In other words, for any matrix A, there will be an identity matrix, I, that when multiplied with matrix A, equals to matrix A.
AI = IA = A
Матрицы идентичности - это квадратные матрицы, что означает, что количество строк равно количеству столбцов.Матрицы идентичности обозначаются I, иногда как Inxn, где nxn является размерностью единичной матрицы. Для матрицы размерности mxn ее единичной матрицей будет размер nxn, что должно иметь смысл, так как для умножения этих матриц количество столбцов первой матрицы должно равняться количеству строк во второй матрице.
Примеры матриц идентичности:
Как мы видим выше, единичные матрицы (кроме случаев, когда n = 1) имеют единицы по диагоналям и нули во всех остальных местах.
Как обсуждалось ранее, в общем случае умножение матриц не коммутативно, если только это не матрица, умноженная на ее единичную матрицу.
Примечание. Поскольку A является матрицей размера mxn, то единичная матрица слева имеет размерность nxn, но в середине единичная матрица имеет размерность mxm, поскольку матрица A является первой в умножении матрицы на матрицу.
Используя геометрическую интуицию, мы можем представить себе единичную матрицу как не вызывающую линейного преобразования. Таким образом, порядок не имеет значения, поскольку в любом сценарии (A * I или I * A) результатом будет линейное преобразование, закодированное в матрице A.
Операции инверсии матрицы и транспонирования матрицы
Нам следует ознакомиться с двумя специальными операциями с матрицами: обратная матрица и транспонирование матрицы.
Обратная матрица
Теперь мы знаем, что число 1 - это тождество в пространстве действительных чисел, поскольку 1 умноженное на любое действительное число равно самому себе. У чисел также могут быть обратные. Число, умноженное на обратное, равно его идентичности.
Например: 2 умножить на 2 ^ -1 равно 1. Помните, что 2 ^ -1 равно 1/2. Итак, 2 умножить на 1/2 равно 1. Таким образом, двойка, обратная двойке, равна 1/2, а ее идентичность - число 1.
Но помните, не у каждого числа есть обратное. Например, число 0 не имеет обратного, поскольку 0 ^ -1 или 1/0 не определено (не может делиться на ноль).
Матрица также может иметь инверсию. Если матрица A является матрицей mxm (то есть квадратной матрицей, # строк = # столбцов), то она может иметь обратную. Как и в случае с действительными числами, мы возводим матрицу в степень -1, чтобы обозначить обратное. Матрица, умноженная на обратную, равна ее единичной матрице.
Примечание. Матрицы, не имеющие обратной или необратимые, называются сингулярными или вырожденными матрицами.
Почему важны обратные матрицы?
Допустим, у нас есть умножение матрицы на матрицу: A * B = C, где мы знаем значения A и C, но не B. Если бы это были действительные числа, мы бы разделили обе части уравнения на A, чтобы найти Б. Однако мы не можем делить матрицы. Поэтому вместо этого мы можем умножить обе части уравнения на 1 / A (A ^ -1), что является обратной матрицей A. Таким образом мы получим следующее:
A*B=C
(A^-1)A*B=(A^-1)C
IB=(A^-1)C
B=(A^-1)C
Матрица транспонирования
Транспонирование матрицы означает, что строки этой матрицы становятся столбцами.Таким образом, первая строка матрицы A становится первым столбцом A ^ T (транспонированная матрица A), а вторая строка матрицы A становится вторым столбцом A ^ T. Таким образом, если матрица A является матрицей размера mxn, то ее транспонирование, или A ^ T, является матрицей размера nxm.
Мы можем представить себе, как нарисовать на матрице A ось под углом 45 градусов, а затем повернуть (или перевернуть) матрицу A вдоль этой оси, чтобы получить ее транспонирование. Транспонирование вектора-столбца дает нам вектор-строку:
Заключение
В этом руководстве мы узнали, что такое скаляры, векторы и матрицы. Мы узнали, что матрицы - это просто двумерные массивы, состоящие из строк и столбцов, а векторы - это просто частный случай матриц, поскольку они имеют только один столбец. Мы узнали, как выполнять механику определенных числовых операций, таких как сложение и вычитание матриц, скалярное умножение и деление, умножение матрицы на вектор и умножение матрицы на матрицу. Кроме того, мы узнали, что точно так же, как 1, умноженное на любое действительное число, мы узнали, что матрица, умноженная на единичную матрицу, также является самим собой. Мы также узнали, что матрица, умноженная на обратную, является ее единичной матрицей. Затем мы увидели, как транспонировать матрицу, и увидели, что транспонирование вектора-столбца является вектором-строкой.Наконец, мы получили очень краткое понимание геометрической интуиции, лежащей в основе некоторых из этих числовых операций.