Научите, как нарисовать матрицу в диаграмме тензорной сети

машинное обучение
Научите, как нарисовать матрицу в диаграмме тензорной сети

В предыдущей статье мы рассмотрели, какМатрица и вероятность построены, читатель сказал, что это было замечательно. Недавно автор этой статьи реализовал новую идею: нарисовать матрицу в виде графа тензорной сети.

Выбрано из math3ma, автор: Algebra, составлено сердцем машины, участие: Li Zhiwei, Zhang Qian.

Сегодня я хочу поделиться другим подходом к разграничению матриц, который используется не только в математике, но и в физике, химии и машинном обучении. Основная идея состоит в том, что матрица M размером m × n с вещественными элементами может представлять собой линейное отображение из R ^ n → R ^ m. Такую карту можно представить в виде узла с двумя ребрами. Одно ребро представляет собой входное пространство, а другое ребро представляет собой выходное пространство.

Мы можем многое сделать с этой простой идеей. Но сначала, чтобы задать матрицу M размером m на n, необходимо указать все mn элементов M_ij. Индекс i находится в диапазоне от 1 до m, представляя размерность выходного пространства; j находится в диапазоне от 1 до n, представляя размерность входного пространства. Другими словами, я представляет количество строк M, а j представляет количество его столбцов. Эти символы могут быть включены в диаграмму, если мы хотим:

Идею легко обобщить. Матрица — это двумерный массив, а n-мерный массив называется тензором n-го порядка или n-тензором. Как и матрицы, n-тензор может быть представлен узлом с одним ребром на измерение.

Например, число можно рассматривать как нульмерный массив, то есть точку. Следовательно, это 0-тензор, который можно изобразить как узел с нулевыми ребрами. Точно так же вектор можно рассматривать как одномерный массив и, следовательно, как 1-тензор. Он представлен узлом с одним ребром. Матрица — это двумерный массив, а значит, 2-тензор. Он представлен узлом с двумя ребрами. Трехмерный тензор — это трехмерный массив и, следовательно, узел с тремя ребрами….

Умножение матриц - это сокращение тензоров

Умножение двух матриц эквивалентно «склеиванию» их графиков. это называетсяТензортензорное сокращение.

На приведенной выше диаграмме ребро с тем же индексом j является сжатым ребром. Это согласуется с тем фактом, что две матрицы можно перемножить только в том случае, если совпадают входные/выходные измерения. Вы также заметите, что результирующее изображение имеет два свободных индекса, i и k, которые определяют матрицу.

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

Быстрая проверка: матрица описывается как один узел с одним ребром на векторное пространство, но на рисунке выше два узла. Мы по-прежнему хотим, чтобы он представлял собой матрицу. Могу утверждать, что это все-таки матрица! Есть хороший способ увидеть это: соединить синие и зеленые узлы вместе.

Это напоминает мне дождь, капающий из окна: когда две капли дождя соприкасаются, они сливаются в большую каплю дождя. Это умножение матриц. Аналогичная ситуация с умножением матрицы на вектор: матрица M умножается на вектор v, в результате чего получается другой вектор Mv, являющийся узлом с одним свободным краем.

Говоря более неформально, произведение двух или более тензоров представляется набором узлов и ребер, где ребра с одинаковым индексом схлопываются.

Формы узлов могут представлять различные свойства

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

Тогда транспонирование матрицы можно представить, перевернув ее изображение:

Так что симметричность симметричной матрицы в графе сохраняется!

Мне также нравится идея рисовать изометрические вложения в виде треугольников:


Изометрическое вложение U — это линейное отображение пространства V в пространство большей размерности W, сохраняющее длину вектора. Такой граф удовлетворяет U^⊤U=id_v, но UU^⊤≠id_w. Другими словами, вы можете встроить маленькое пространство V в большое пространство, а затем спроецировать обратно в V, не искажая векторы в V (в отличие от карт ретракции в топологии). Но после того, как вы втиснули всю букву W в маленькую букву V, вы не можете рассчитывать на исправление повреждений в процессе превращения буквы V обратно в букву W. Треугольники намекают на этот большой и маленький характер. (Основание треугольника больше, чем его вершина!) В общем случае единичный линейный оператор изображается в виде прямой линии, как показано на следующем рисунке:

Матричная факторизация также позволяет рисовать красивые графики.

При обсуждении матричного умножения, то есть матричной композиции, давайте не будем забывать о матричной факторизации! Например, каждая матрица имеет сингулярное разложение. Вот отличная картинка, связанная с этим:


Здесь U и V — унарные матрицы, поэтому они эквидистантные матрицы, а также треугольные. Матрица D — диагональная матрица, которую мне нравится изображать ромбом. Короче говоря, матричная декомпозиция — это разложение узла на несколько узлов, а умножение матриц — объединение нескольких узлов в один узел.


Рисунок выше иллюстрирует еще одну характеристику этих графов: пространственное расположение узлов не имеет значения. Я могу рисовать желтые, синие, зеленые и розовые узлы на горизонтальных линиях, вертикальных линиях или зигзагах любой формы, какую захочу. Важно только то, что граф имеет два свободных ребра. Произведение матриц — это другая матрица!

Запутанное доказательство сводится к графовому доказательству.

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


Эта последовательность графов не имеет свободных ребер. Это цикл. Это согласуется с тем фактом, что трассировка — это число, это нулевой тензор, поэтому у него нет свободного индекса. Вот доказательство того, что трасса инвариантна относительно циклических перестановок:

Наденьте бусины вдоль ожерелья. Так лаконично!

битва имен

Графы, обсуждаемые в статье, берут свое начало в обозначениях Пенроуза для графов, известных как тензорные сетевые графы и/или струнные диаграммы, возможно, с некоторыми незначительными отличиями. "и/или" зависит от того, кто вы. То есть в сообществе физики/машинного обучения (где они называются тензорными сетевыми графами) и в сообществе теории категорий (где они называются строковыми графами) графы векторных пространств визуально представляются как ребристые узлы. Я думаю, что это просто пример другого поля, использующего почти одну и ту же нотацию для разных целей.

Теоретики категорий используют графы струн для доказательства. Кроме того, графы строк используются для представления большинства типов отображений, а не только между векторными пространствами. Более формально строковые графы могут появляться при обсуждении любой категории моноидов. Элегантное введение в эти категориальные идеи см. в «Семи набросках» Фонга и Спивака и в «Изображении квантовых процессов» Коке и Киссинджера.

С другой стороны, некоторые физики и исследователи машинного обучения используют тензорные сети для вычислений. Типичная ситуация может выглядеть так. У вас есть квантовая система. Вы хотите найти главные собственные векторы специального линейного оператора, называемого гамильтонианом. Этот собственный вектор существует в невероятно большом гильбертовом пространстве, поэтому вам нужна техника для нахождения этого вектора в сжатом виде. Вход: тензорные сети.

Когда я говорю «невероятно большой», я не преувеличиваю. Если у вас есть квантовая частица числа Авогадро, каждая из которых занимает только два состояния, то вам нужна размерностьвекторное пространство. Теперь представьте себе линейный оператор в этом пространстве. Это содержащийМатрица элементов. Это больше, чем количество атомов в видимой Вселенной, которое составляет всего 10^80! Вам может только повезти, если вы попытаетесь сохранить эту матрицу на компьютере. В заключение, тензорные сети помогают нам работать с большим количеством параметров принципиальным и удобным способом.

Тензорные сети также во многом пересекаются с графовыми моделями, автоматами и т. д. Направление текущих исследований заключается в выявлении и извлечении выгоды из этих совпадений. Так что здесь есть что исследовать. Вот несколько мест, с которых можно начать изучение:

  • Библиотека iTensor Майлза Стаудемайра (http://itensor.org/): http://itensor.org/

  • «Практическое введение в тензорные сети (https://arxiv.org/abs/1306.2164)» Романа Оруса: https://arxiv.org/abs/1306.2164

  • «Тензорные сети в двух словах» Джейкоба Биаманте и Вилле Бергхольма: https://arxiv.org/abs/1708.00006 (https://arxiv.org/abs/1708.00006%E4%BB%A5%E5%8F%8AGoogle% Е7%9А%84)

  • Библиотека Google TensorNetwork: https://github.com/google/TensorNetwork.

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

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


Оригинальная ссылка: https://www.math3ma.com/blog/matrices-as-tensor-network-diagrams